Explorar o código

bug fix navigation multi modules

MrOzOn %!s(int64=5) %!d(string=hai) anos
pai
achega
b1292a19fb

+ 2 - 1
app/src/main/java/com/mrozon/healthdiary/di/FacadeComponent.kt

@@ -11,7 +11,8 @@ import com.mrozon.healthdiary.App
 import dagger.Component
 
 @Component(
-    dependencies = [AppProvider::class, DatabaseProvider::class, NetworkProvider::class]
+    dependencies = [AppProvider::class, DatabaseProvider::class, NetworkProvider::class],
+    modules = [NavigationModule::class]
 )
 interface FacadeComponent : ProvidersFacade {
 

+ 14 - 0
app/src/main/java/com/mrozon/healthdiary/di/NavigationModule.kt

@@ -0,0 +1,14 @@
+package com.mrozon.healthdiary.di
+
+import com.mrozon.core_api.navigation.SplashNavigator
+import com.mrozon.healthdiary.navigation.SplashNavigatorImpl
+import dagger.Binds
+import dagger.Module
+
+@Module
+interface NavigationModule {
+
+    @Binds
+    fun splashNavigator(navigator: SplashNavigatorImpl): SplashNavigator
+
+}

+ 16 - 0
app/src/main/java/com/mrozon/healthdiary/navigation/SplashNavigatorImpl.kt

@@ -0,0 +1,16 @@
+package com.mrozon.healthdiary.navigation
+
+import com.mrozon.core_api.navigation.SplashNavigator
+import com.mrozon.healthdiary.R
+import com.mrozon.utils.base.BaseNavigator
+import javax.inject.Inject
+
+class SplashNavigatorImpl @Inject constructor()
+    : SplashNavigator, BaseNavigator() {
+
+//    override fun navigateToGameVideo() {
+//        navController?.navigate(R.id.action_gameListFragment_to_gameVideoFragment)
+//            ?: throw IllegalStateException("NavController must be bound to ${this.javaClass.name} before processing navigation")
+//    }
+
+}

+ 2 - 0
core_api/build.gradle

@@ -30,6 +30,8 @@ apply from: "$project.rootDir/scripts/deps_versions.gradle"
 
 dependencies {
 
+    implementation project(':utils')
+
     implementation dagger
     kapt daggerCompiler
     implementation room

+ 5 - 0
core_api/src/main/java/com/mrozon/core_api/navigation/NavigatorProvider.kt

@@ -0,0 +1,5 @@
+package com.mrozon.core_api.navigation
+
+interface NavigatorProvider {
+    fun provideSplashNavigator(): SplashNavigator
+}

+ 7 - 0
core_api/src/main/java/com/mrozon/core_api/navigation/SplashNavigator.kt

@@ -0,0 +1,7 @@
+package com.mrozon.core_api.navigation
+
+import com.mrozon.utils.base.Navigator
+
+interface SplashNavigator : Navigator {
+
+}

+ 3 - 3
feature_splash/build.gradle

@@ -4,12 +4,12 @@ apply plugin: 'kotlin-android-extensions'
 apply plugin: 'kotlin-kapt'
 
 android {
-    compileSdkVersion 29
+    compileSdkVersion rootProject.compileSdkVersion
     buildToolsVersion "29.0.3"
 
     defaultConfig {
-        minSdkVersion 21
-        targetSdkVersion 29
+        minSdkVersion rootProject.minSdkVersion
+        targetSdkVersion rootProject.targetSdkVersion
         versionCode 1
         versionName "1.0"
 

+ 5 - 0
utils/build.gradle

@@ -35,9 +35,14 @@ android {
 
 }
 
+apply from: "$project.rootDir/scripts/deps_versions.gradle"
+
 dependencies {
+
+    implementation navigationUi
     implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
 
+
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation 'androidx.appcompat:appcompat:1.2.0'

+ 9 - 0
utils/src/main/java/com/mrozon/utils/base/BaseNavigator.kt

@@ -0,0 +1,9 @@
+package com.mrozon.utils.base
+
+import androidx.navigation.NavController
+
+abstract class BaseNavigator : Navigator {
+
+    override var navController: NavController? = null
+
+}

+ 15 - 0
utils/src/main/java/com/mrozon/utils/base/Navigator.kt

@@ -0,0 +1,15 @@
+package com.mrozon.utils.base
+
+import androidx.navigation.NavController
+
+interface Navigator {
+    var navController: NavController?
+
+    fun bind(navController: NavController) {
+        this.navController = navController
+    }
+
+    fun unbind() {
+        this.navController = null
+    }
+}