Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@ package com.brainasaservice.deeplinker.dagger

import com.brainasaservice.deeplinker.deepcontent.DeepContentModule
import com.brainasaservice.deeplinker.deepcustom.DeepCustomModule
import com.brainasaservice.deeplinkprocessor.DeeplinkActivity
import com.brainasaservice.deeplinkprocessor.DeeplinkHandler
import com.brainasaservice.deeplinker.main.MainActivity
import com.brainasaservice.deeplinker.main.MainModule
import com.brainasaservice.deeplinker.ui.DeeplinkApp
import com.brainasaservice.deeplinkprocessor.DeeplinkActivity
import com.brainasaservice.deeplinkprocessor.DeeplinkHandler
import dagger.Component
import javax.inject.Singleton

@Singleton

@Component(
modules = [
AppModule::class,
DeepContentModule::class,
MainModule::class,
DeepCustomModule::class
]
modules = [
AppModule::class,
DeepContentModule::class,
MainModule::class,
DeepCustomModule::class
]
)
interface AppComponent {
fun inject(app: DeeplinkApp)

fun inject(app: MainActivity)

fun inject(deeplinkActivity: com.brainasaservice.deeplinkprocessor.DeeplinkActivity)
fun inject(deeplinkActivity: DeeplinkActivity)

fun deeplinkHandler(): com.brainasaservice.deeplinkprocessor.DeeplinkHandler
fun deeplinkHandler(): DeeplinkHandler
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package com.brainasaservice.deeplinker.dagger

import android.content.Context
import com.brainasaservice.deeplinkprocessor.DefaultDeeplinkHandler
import com.brainasaservice.deeplinker.ui.DeeplinkApp
import com.brainasaservice.deeplinkprocessor.DeeplinkHandler
import com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
import dagger.Binds
import com.brainasaservice.deeplinkprocessor.DefaultDeeplinkHandler
import dagger.Module
import dagger.Provides
import javax.inject.Singleton

@Module
class AppModule(
private val app: DeeplinkApp
private val app: DeeplinkApp
) {
@Provides
@Singleton
Expand All @@ -21,6 +20,6 @@ class AppModule(
@Provides
@Singleton
fun providesDefaultDeeplinkHandler(
processors: Set<@JvmSuppressWildcards DeeplinkProcessor>
processors: Set<@JvmSuppressWildcards DeeplinkProcessor>
): DeeplinkHandler = DefaultDeeplinkHandler(processors)
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package com.brainasaservice.deeplinker.deepcontent

import android.content.Intent
import android.os.Bundle
import android.support.v4.app.NavUtils
import android.support.v7.app.AppCompatActivity
import com.brainasaservice.deeplinker.R
import kotlinx.android.synthetic.main.activity_deep_content.buttonBack
import kotlinx.android.synthetic.main.activity_deep_content.textTitle
import kotlinx.android.synthetic.main.activity_deep_content.*

class DeepContentActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ package com.brainasaservice.deeplinker.deepcontent

import android.content.Context
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class DeepContentDeeplinkProcessor @Inject constructor(
private val context: Context
private val context: Context
) : DeeplinkProcessor {
override fun matches(deeplink: String): Boolean = deeplink.contains("deep/content")

override fun execute(deeplink: String) {
context.startActivity(Intent(context, DeepContentActivity::class.java))
context.startActivity(Intent(context, DeepContentActivity::class.java).apply {
this.flags = FLAG_ACTIVITY_NEW_TASK
})
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import dagger.multibindings.IntoSet
interface DeepContentModule {
@Binds
@IntoSet
fun bindsDeepContentDeeplinkProcessorIntoSet(
processor: DeepContentDeeplinkProcessor
): com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
fun bindsDeepContentDeeplinkProcessorIntoSet(processor: DeepContentDeeplinkProcessor)
: DeeplinkProcessor
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ import kotlinx.android.parcel.Parcelize

@Parcelize
data class CustomDeeplinkModel(
val name: String
val name: String
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ import android.os.Bundle
import android.support.v4.app.NavUtils
import android.support.v7.app.AppCompatActivity
import com.brainasaservice.deeplinker.R
import kotlinx.android.synthetic.main.activity_deep_custom.buttonBack
import kotlinx.android.synthetic.main.activity_deep_custom.textTitle
import com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
import kotlinx.android.synthetic.main.activity_deep_custom.*

class DeepCustomActivity: AppCompatActivity() {
class DeepCustomActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
println("onCreate(${javaClass.simpleName})")
setContentView(R.layout.activity_deep_custom)

intent.extras?.getString("EXTRA_NAME")?.let { name ->
textTitle.text = "Hello, $name!"
}
intent.extras?.getParcelable<CustomDeeplinkModel>(DeeplinkProcessor.EXTRA_KEY)
?.let { model ->
textTitle.text = "Hello, ${model.name}!"
}

buttonBack.setOnClickListener {
NavUtils.getParentActivityIntent(this)?.let { intent ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package com.brainasaservice.deeplinker.deepcustom

import android.content.Context
import android.content.Intent
import android.content.Intent.FLAG_ACTIVITY_NEW_TASK
import com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class DeepCustomDeeplinkProcessor @Inject constructor(
private val context: Context
private val context: Context
) : DeeplinkProcessor {

override fun matches(deeplink: String): Boolean {
Expand All @@ -20,6 +21,7 @@ class DeepCustomDeeplinkProcessor @Inject constructor(
val model = CustomDeeplinkModel(name)

context.startActivity(Intent(context, DeepCustomActivity::class.java).apply {
this.flags = FLAG_ACTIVITY_NEW_TASK
putExtra(DeeplinkProcessor.EXTRA_KEY, model)
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ interface DeepCustomModule {
@Binds
@IntoSet
fun bindsDeepContentDeeplinkProcessorIntoSet(
processor: DeepCustomDeeplinkProcessor
processor: DeepCustomDeeplinkProcessor
): DeeplinkProcessor
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.brainasaservice.deeplinker.deeplink

import com.brainasaservice.deeplinker.ui.DeeplinkApp
import com.brainasaservice.deeplinkprocessor.DeeplinkActivity
import com.brainasaservice.deeplinkprocessor.DeeplinkHandler

class MyDeeplinkActivity : com.brainasaservice.deeplinkprocessor.DeeplinkActivity() {
override fun getDeeplinkHandler(): com.brainasaservice.deeplinkprocessor.DeeplinkHandler = (applicationContext as DeeplinkApp).component.deeplinkHandler()
class MyDeeplinkActivity : DeeplinkActivity() {
override fun getDeeplinkHandler(): DeeplinkHandler =
(applicationContext as DeeplinkApp).component.deeplinkHandler()
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ import android.net.Uri
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import com.brainasaservice.deeplinker.R
import com.brainasaservice.deeplinkprocessor.DeeplinkHandler
import kotlinx.android.synthetic.main.activity_main.deepButton
import kotlinx.android.synthetic.main.activity_main.helloButton
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@ import javax.inject.Singleton

@Singleton
class MainDeeplinkProcessor @Inject constructor(
private val context: Context
) : com.brainasaservice.deeplinkprocessor.DeeplinkProcessor {
override fun process(deeplink: String): Boolean {
private val context: Context
) : DeeplinkProcessor {
override fun matches(deeplink: String): Boolean = deeplink.contains("/main")

override fun execute(deeplink: String) {
println("${this::class.java} processing $deeplink")

if (deeplink.contains("/main")) {
context.startActivity(Intent(context, MainActivity::class.java))
return true
}
return false
context.startActivity(Intent(context, MainActivity::class.java).apply {
this.flags = Intent.FLAG_ACTIVITY_NEW_TASK
})
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ interface MainModule {
@Binds
@IntoSet
fun bindsMainDeeplinkProcessorIntoSet(
processor: MainDeeplinkProcessor
): com.brainasaservice.deeplinkprocessor.DeeplinkProcessor
processor: MainDeeplinkProcessor
): DeeplinkProcessor
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package com.brainasaservice.deeplinker.ui

import android.app.AppComponentFactory
import android.app.Application
import com.brainasaservice.deeplinker.dagger.AppComponent
import com.brainasaservice.deeplinker.dagger.AppModule
import com.brainasaservice.deeplinker.dagger.DaggerAppComponent

class DeeplinkApp: Application() {
class DeeplinkApp : Application() {
val component: AppComponent by lazy {
DaggerAppComponent
.builder()
.appModule(AppModule(this))
.build()
.builder()
.appModule(AppModule(this))
.build()
}

override fun onCreate() {
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.21'
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()

}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0-alpha03'
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.brainasaservice.deeplinkprocessor

class DefaultDeeplinkHandler constructor(
private val processors: Set<@JvmSuppressWildcards DeeplinkProcessor>
): DeeplinkHandler {
private val processors: Set<@JvmSuppressWildcards DeeplinkProcessor>
) : DeeplinkHandler {
override fun process(deeplink: String): Boolean {
processors.forEach {
if (it.matches(deeplink)) {
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Wed Feb 20 19:45:31 CET 2019
#Tue Aug 27 12:03:04 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip