diff --git a/.circleci/config.yml b/.circleci/config.yml index e3006019..3139dc84 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,20 +9,20 @@ jobs: steps: - checkout - restore_cache: - key: jars-{{ checksum "build.gradle" }}-{{ checksum "client/build.gradle" }}-{{ checksum "core/build.gradle" }}-{{ checksum "core-android/build.gradle" }} + key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}-{{ checksum "core/build.gradle" }}-{{ checksum "core-android/build.gradle" }} - run: name: Get Dependencies command: ./gradlew androidDependencies - save_cache: paths: - ~/.gradle - key: jars-{{ checksum "build.gradle" }}-{{ checksum "client/build.gradle" }}-{{ checksum "core/build.gradle" }}-{{ checksum "core-android/build.gradle" }} + key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}-{{ checksum "core/build.gradle" }}-{{ checksum "core-android/build.gradle" }} - run: name: Run Tests command: ./gradlew lint test - store_artifacts: - path: client/build/reports - destination: client/reports + path: app/build/reports + destination: app/reports - store_artifacts: path: core/build/reports destination: core/reports @@ -33,7 +33,7 @@ jobs: path: feature/push/build/reports destination: feature/push/reports - store_test_results: - path: client/build/test-results + path: app/build/test-results - store_test_results: path: core/build/test-results - store_test_results: diff --git a/app/build.gradle b/app/build.gradle index 56c7f5c7..f0547548 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,6 +74,7 @@ dependencies { api project(':core') api project(':core-android') + api project(':lib:navigation-deeplink') api project(':lib:identity') api project(':lib:dynamic-features') api project(':lib:network-status') diff --git a/app/src/main/java/com/jraska/github/client/AppComponent.kt b/app/src/main/java/com/jraska/github/client/AppComponent.kt index 95cedd6b..b9748c29 100644 --- a/app/src/main/java/com/jraska/github/client/AppComponent.kt +++ b/app/src/main/java/com/jraska/github/client/AppComponent.kt @@ -4,12 +4,15 @@ import android.content.Context import androidx.lifecycle.ViewModelProvider import com.jraska.github.client.about.entrance.AboutFeatureEntranceModule import com.jraska.github.client.analytics.EventAnalytics +import com.jraska.github.client.core.android.CoreAndroidModule import com.jraska.github.client.core.android.OnAppCreate import com.jraska.github.client.core.android.ServiceModel import com.jraska.github.client.dynamicbase.DynamicFeaturesModule import com.jraska.github.client.http.HttpComponent import com.jraska.github.client.identity.IdentityModule import com.jraska.github.client.identity.IdentityProvider +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.deeplink.DeepLinkNavigationModule import com.jraska.github.client.networkstatus.NetworkStatusModule import com.jraska.github.client.push.PushModule import com.jraska.github.client.settings.entrance.SettingsEntranceModule @@ -23,8 +26,10 @@ import dagger.Subcomponent @Component( modules = [ AppModule::class, - NavigationModule::class, + CoreAndroidModule::class, + ChromeCustomTabsModule::class, DynamicFeaturesModule::class, + DeepLinkNavigationModule::class, IdentityModule::class, NetworkStatusModule::class, UsersModule::class, diff --git a/app/src/main/java/com/jraska/github/client/AppModule.kt b/app/src/main/java/com/jraska/github/client/AppModule.kt index fe647323..fde02794 100644 --- a/app/src/main/java/com/jraska/github/client/AppModule.kt +++ b/app/src/main/java/com/jraska/github/client/AppModule.kt @@ -4,110 +4,29 @@ import android.app.Application import android.app.NotificationManager import android.content.Context import android.view.LayoutInflater -import androidx.lifecycle.ViewModelProvider import com.facebook.drawee.backends.pipeline.Fresco import com.jakewharton.threetenabp.AndroidThreeTen -import com.jraska.github.client.analytics.AnalyticsEvent -import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.core.android.OnAppCreate -import com.jraska.github.client.core.android.ServiceModel -import com.jraska.github.client.core.android.ServiceModelFactory -import com.jraska.github.client.core.android.TopActivityProvider -import com.jraska.github.client.core.android.ViewModelFactory -import com.jraska.github.client.core.android.logging.SetupLogging -import com.jraska.github.client.rx.AppSchedulers -import com.jraska.github.client.time.DateTimeProvider -import com.jraska.github.client.time.RealDateTimeProvider -import com.jraska.github.client.time.RealTimeProvider -import com.jraska.github.client.time.TimeProvider import dagger.Module import dagger.Provides import dagger.multibindings.IntoSet -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers @Module object AppModule { @Provides @JvmStatic - @PerApp internal fun topActivityProvider(): TopActivityProvider { - return TopActivityProvider() - } - - @Provides - @IntoSet - @JvmStatic - fun topActivityOnCreate(setup: TopActivityProvider.RegisterCallbacks): OnAppCreate { - return setup - } - - @Provides - @JvmStatic - @PerApp internal fun provideLayoutInflater(context: Context): LayoutInflater { - return LayoutInflater.from(context) - } - - @Provides @PerApp - @JvmStatic - internal fun provideViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory { - return factory - } - - @Provides - @PerApp - @JvmStatic - internal fun provideServiceModelFactory(factory: ServiceModelFactory): ServiceModel.Factory { - return factory - } - - @JvmStatic - @Provides - @PerApp internal fun dateTimeProvider(): DateTimeProvider { - return RealDateTimeProvider() + internal fun provideLayoutInflater(context: Context): LayoutInflater { + return LayoutInflater.from(context) } @JvmStatic @Provides - @PerApp internal fun timeProvider(): TimeProvider { - return RealTimeProvider.INSTANCE - } - - @JvmStatic - @Provides internal fun notificationManager(context: Context): NotificationManager { + internal fun notificationManager(context: Context): NotificationManager { return context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager } - @JvmStatic - @Provides - @PerApp - fun schedulers(): AppSchedulers { - return AppSchedulers( - AndroidSchedulers.mainThread(), - Schedulers.io(), Schedulers.computation() - ) - } - - @JvmStatic - @Provides - @IntoSet - internal fun setupLoggingOnCreate(setupLogging: SetupLogging): OnAppCreate { - return setupLogging - } - - @JvmStatic - @Provides - @IntoSet - fun reportAppCreateEvent(eventAnalytics: EventAnalytics): OnAppCreate { - return object : OnAppCreate { - override fun onCreate(app: Application) { - val createEvent = AnalyticsEvent.create("app_create") - eventAnalytics.report(createEvent) - } - } - } - @JvmStatic @Provides @IntoSet diff --git a/app/src/main/java/com/jraska/github/client/ChromeCustomTabsModule.kt b/app/src/main/java/com/jraska/github/client/ChromeCustomTabsModule.kt new file mode 100644 index 00000000..5214a1be --- /dev/null +++ b/app/src/main/java/com/jraska/github/client/ChromeCustomTabsModule.kt @@ -0,0 +1,16 @@ +package com.jraska.github.client + +import com.jraska.github.client.core.android.TopActivityProvider +import com.jraska.github.client.rx.AppSchedulers +import dagger.Module +import dagger.Provides + +@Module +object ChromeCustomTabsModule { + + @JvmStatic + @Provides + fun webLinkLauncher(provider: TopActivityProvider, appSchedulers: AppSchedulers): WebLinkLauncher { + return ChromeCustomTabsLauncher(provider, appSchedulers) + } +} diff --git a/app/src/main/java/com/jraska/github/client/NavigationModule.kt b/app/src/main/java/com/jraska/github/client/NavigationModule.kt deleted file mode 100644 index 0b595c6f..00000000 --- a/app/src/main/java/com/jraska/github/client/NavigationModule.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.jraska.github.client - -import androidx.lifecycle.ViewModel -import com.jraska.github.client.core.android.LinkLauncher -import com.jraska.github.client.core.android.RealDeepLinkLauncher -import com.jraska.github.client.core.android.TopActivityProvider -import com.jraska.github.client.core.android.UriHandlerViewModel -import com.jraska.github.client.rx.AppSchedulers -import dagger.Module -import dagger.Provides -import dagger.multibindings.ClassKey -import dagger.multibindings.IntoMap - -@Module -object NavigationModule { - @JvmStatic - @Provides - fun provideNavigator(webLinkLauncher: WebLinkLauncher, deepLinkLauncher: DeepLinkLauncher): Navigator { - return DeepLinkNavigator(deepLinkLauncher, webLinkLauncher) - } - - @JvmStatic - @Provides - fun bindDeepLinkLauncher( - topActivityProvider: TopActivityProvider, - launchers: @JvmSuppressWildcards Set - ): DeepLinkLauncher { - return RealDeepLinkLauncher.create(topActivityProvider, launchers) - } - - @JvmStatic - @Provides - fun webLinkLauncher(provider: TopActivityProvider, appSchedulers: AppSchedulers): WebLinkLauncher { - return ChromeCustomTabsLauncher(provider, appSchedulers) - } - - @JvmStatic - @Provides - @IntoMap - @ClassKey(UriHandlerViewModel::class) - fun uriHandlerViewModel(viewModel: UriHandlerViewModel): ViewModel { - return viewModel - } -} diff --git a/core-android/build.gradle b/core-android/build.gradle index a173dd05..7c8a0cfc 100644 --- a/core-android/build.gradle +++ b/core-android/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' android { compileSdkVersion 28 @@ -21,6 +22,11 @@ dependencies { api 'androidx.lifecycle:lifecycle-extensions:2.1.0' api 'androidx.lifecycle:lifecycle-reactivestreams-ktx:2.1.0' + kapt 'com.google.dagger:dagger-compiler:2.24' + implementation 'com.google.dagger:dagger:2.24' + + implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + api 'com.jakewharton.timber:timber:4.7.1' testImplementation 'junit:junit:4.12' diff --git a/core-android/src/main/java/com/jraska/github/client/core/android/Activity.kt b/core-android/src/main/java/com/jraska/github/client/core/android/Activity.kt index 0c951add..d5ae608a 100644 --- a/core-android/src/main/java/com/jraska/github/client/core/android/Activity.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/Activity.kt @@ -5,7 +5,6 @@ import android.net.Uri import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl -@Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") fun Activity.inputUrl(): HttpUrl { val inputUri = intent.data ?: throw IllegalArgumentException("No uri provided") diff --git a/core-android/src/main/java/com/jraska/github/client/core/android/CoreAndroidModule.kt b/core-android/src/main/java/com/jraska/github/client/core/android/CoreAndroidModule.kt new file mode 100644 index 00000000..cc2ee99d --- /dev/null +++ b/core-android/src/main/java/com/jraska/github/client/core/android/CoreAndroidModule.kt @@ -0,0 +1,113 @@ +package com.jraska.github.client.core.android + +import android.app.Application +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.jraska.github.client.DeepLinkLauncher +import com.jraska.github.client.PerApp +import com.jraska.github.client.analytics.AnalyticsEvent +import com.jraska.github.client.analytics.EventAnalytics +import com.jraska.github.client.core.android.logging.SetupLogging +import com.jraska.github.client.rx.AppSchedulers +import com.jraska.github.client.time.DateTimeProvider +import com.jraska.github.client.time.RealDateTimeProvider +import com.jraska.github.client.time.RealTimeProvider +import com.jraska.github.client.time.TimeProvider +import dagger.Module +import dagger.Provides +import dagger.multibindings.ClassKey +import dagger.multibindings.IntoMap +import dagger.multibindings.IntoSet +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +@Module +object CoreAndroidModule { + @Provides + @PerApp + @JvmStatic + internal fun provideViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory { + return factory + } + + @Provides + @PerApp + @JvmStatic + internal fun provideServiceModelFactory(factory: ServiceModelFactory): ServiceModel.Factory { + return factory + } + + @JvmStatic + @Provides + fun bindDeepLinkLauncher( + topActivityProvider: TopActivityProvider, + launchers: @JvmSuppressWildcards Set + ): DeepLinkLauncher { + return RealDeepLinkLauncher.create(topActivityProvider, launchers) + } + + @JvmStatic + @Provides + @IntoMap + @ClassKey(UriHandlerViewModel::class) + fun uriHandlerViewModel(viewModel: UriHandlerViewModel): ViewModel { + return viewModel + } + + @Provides + @JvmStatic + @PerApp + internal fun topActivityProvider(): TopActivityProvider { + return TopActivityProvider() + } + + @Provides + @IntoSet + @JvmStatic + fun topActivityOnCreate(setup: TopActivityProvider.RegisterCallbacks): OnAppCreate { + return setup + } + + @JvmStatic + @Provides + @PerApp + internal fun dateTimeProvider(): DateTimeProvider { + return RealDateTimeProvider() + } + + @JvmStatic + @Provides + @PerApp + internal fun timeProvider(): TimeProvider { + return RealTimeProvider.INSTANCE + } + + @JvmStatic + @Provides + @PerApp + fun schedulers(): AppSchedulers { + return AppSchedulers( + AndroidSchedulers.mainThread(), + Schedulers.io(), Schedulers.computation() + ) + } + + @JvmStatic + @Provides + @IntoSet + internal fun setupLoggingOnCreate(setupLogging: SetupLogging): OnAppCreate { + return setupLogging + } + + @JvmStatic + @Provides + @IntoSet + fun reportAppCreateEvent(eventAnalytics: EventAnalytics): OnAppCreate { + return object : OnAppCreate { + override fun onCreate(app: Application) { + val createEvent = AnalyticsEvent.create("app_create") + eventAnalytics.report(createEvent) + } + } + } +} diff --git a/feature/about/build.gradle b/feature/about/build.gradle index c959fea7..f46b1987 100644 --- a/feature/about/build.gradle +++ b/feature/about/build.gradle @@ -21,6 +21,7 @@ dependencies { api project(':core') api project(':core-android') + api project(':navigation') api project(':lib:identity') kapt 'com.google.dagger:dagger-compiler:2.24' diff --git a/feature/about/src/main/java/com/jraska/github/client/about/AboutViewModel.kt b/feature/about/src/main/java/com/jraska/github/client/about/AboutViewModel.kt index 508d07d9..f37dcc31 100644 --- a/feature/about/src/main/java/com/jraska/github/client/about/AboutViewModel.kt +++ b/feature/about/src/main/java/com/jraska/github/client/about/AboutViewModel.kt @@ -1,11 +1,11 @@ package com.jraska.github.client.about import androidx.lifecycle.ViewModel -import com.jraska.github.client.Navigator import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.analytics.toAnalyticsString import com.jraska.github.client.identity.IdentityProvider +import com.jraska.github.client.navigation.Navigator import okhttp3.HttpUrl.Companion.toHttpUrl import javax.inject.Inject diff --git a/feature/users/build.gradle b/feature/users/build.gradle index d6c095c3..2527c721 100644 --- a/feature/users/build.gradle +++ b/feature/users/build.gradle @@ -18,6 +18,7 @@ android { dependencies { api project(':core') api project(':core-android') + api project(':navigation') kapt 'com.google.dagger:dagger-compiler:2.24' api 'com.google.dagger:dagger:2.24' diff --git a/feature/users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt b/feature/users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt index f0a470ad..8e2ac628 100644 --- a/feature/users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt +++ b/feature/users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt @@ -3,12 +3,12 @@ package com.jraska.github.client.users import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import com.jraska.github.client.Config -import com.jraska.github.client.Navigator -import com.jraska.github.client.Urls import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.common.lazyMap import com.jraska.github.client.core.android.rx.toLiveData +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.Urls import com.jraska.github.client.rx.AppSchedulers import com.jraska.github.client.users.model.RepoHeader import com.jraska.github.client.users.model.UserDetail diff --git a/feature/users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt b/feature/users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt index 8aabef43..e201ff62 100644 --- a/feature/users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt +++ b/feature/users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt @@ -2,11 +2,11 @@ package com.jraska.github.client.users import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel -import com.jraska.github.client.Navigator -import com.jraska.github.client.Urls import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.core.android.rx.toLiveData +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.Urls import com.jraska.github.client.rx.AppSchedulers import com.jraska.github.client.users.model.User import com.jraska.github.client.users.model.UsersRepository diff --git a/feature/users/src/main/java/com/jraska/github/client/users/model/RepoDetailViewModel.kt b/feature/users/src/main/java/com/jraska/github/client/users/model/RepoDetailViewModel.kt index f8417194..5481d752 100644 --- a/feature/users/src/main/java/com/jraska/github/client/users/model/RepoDetailViewModel.kt +++ b/feature/users/src/main/java/com/jraska/github/client/users/model/RepoDetailViewModel.kt @@ -2,12 +2,12 @@ package com.jraska.github.client.users.model import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel -import com.jraska.github.client.Navigator -import com.jraska.github.client.Urls import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.common.lazyMap import com.jraska.github.client.core.android.rx.toLiveData +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.Urls import com.jraska.github.client.rx.AppSchedulers import javax.inject.Inject diff --git a/feature/users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt b/feature/users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt index a747c713..9bc5a7dc 100644 --- a/feature/users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt +++ b/feature/users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt @@ -1,7 +1,7 @@ package com.jraska.github.client.users import com.jraska.github.client.Fakes -import com.jraska.github.client.Navigator +import com.jraska.github.client.navigation.Navigator import com.jraska.github.client.users.model.RepoDetailViewModel import com.jraska.github.client.users.model.UsersRepository import okhttp3.HttpUrl.Companion.toHttpUrl diff --git a/feature/users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt b/feature/users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt index bd851993..254790ee 100644 --- a/feature/users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt +++ b/feature/users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt @@ -2,7 +2,7 @@ package com.jraska.github.client.users import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.jraska.github.client.Fakes -import com.jraska.github.client.Navigator +import com.jraska.github.client.navigation.Navigator import com.jraska.github.client.users.model.User import com.jraska.github.client.users.model.UserDetail import com.jraska.github.client.users.model.UserStats diff --git a/feature/users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt b/feature/users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt index 12d06458..24a418ae 100644 --- a/feature/users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt +++ b/feature/users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt @@ -2,7 +2,7 @@ package com.jraska.github.client.users import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.jraska.github.client.Fakes -import com.jraska.github.client.Navigator +import com.jraska.github.client.navigation.Navigator import com.jraska.github.client.users.model.GitHubApiUsersRepository import com.jraska.github.client.users.model.GitHubUser import com.jraska.github.client.users.model.GitHubUserDetailApi diff --git a/lib/navigation-deeplink/.gitignore b/lib/navigation-deeplink/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/lib/navigation-deeplink/.gitignore @@ -0,0 +1 @@ +/build diff --git a/lib/navigation-deeplink/build.gradle b/lib/navigation-deeplink/build.gradle new file mode 100644 index 00000000..74efc403 --- /dev/null +++ b/lib/navigation-deeplink/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' + +android { + compileSdkVersion 28 + defaultConfig { + minSdkVersion 21 + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + api project(':navigation') + api project(':core') + api project(':core-android') + + kapt 'com.google.dagger:dagger-compiler:2.24' + api 'com.google.dagger:dagger:2.24' + + testImplementation 'junit:junit:4.12' + testImplementation 'org.mockito:mockito-core:3.0.0' +} diff --git a/lib/navigation-deeplink/src/main/AndroidManifest.xml b/lib/navigation-deeplink/src/main/AndroidManifest.xml new file mode 100644 index 00000000..1f8e18d8 --- /dev/null +++ b/lib/navigation-deeplink/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigationModule.kt b/lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigationModule.kt new file mode 100644 index 00000000..b1301bae --- /dev/null +++ b/lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigationModule.kt @@ -0,0 +1,17 @@ +package com.jraska.github.client.navigation.deeplink + +import com.jraska.github.client.DeepLinkLauncher +import com.jraska.github.client.WebLinkLauncher +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.deeplink.internal.DeepLinkNavigator +import dagger.Module +import dagger.Provides + +@Module +object DeepLinkNavigationModule { + @JvmStatic + @Provides + fun provideNavigator(webLinkLauncher: WebLinkLauncher, deepLinkLauncher: DeepLinkLauncher): Navigator { + return DeepLinkNavigator(deepLinkLauncher, webLinkLauncher) + } +} diff --git a/core/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt b/lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/internal/DeepLinkNavigator.kt similarity index 75% rename from core/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt rename to lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/internal/DeepLinkNavigator.kt index e3a9d6f3..a56bcace 100644 --- a/core/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt +++ b/lib/navigation-deeplink/src/main/java/com/jraska/github/client/navigation/deeplink/internal/DeepLinkNavigator.kt @@ -1,5 +1,9 @@ -package com.jraska.github.client +package com.jraska.github.client.navigation.deeplink.internal +import com.jraska.github.client.DeepLinkLauncher +import com.jraska.github.client.WebLinkLauncher +import com.jraska.github.client.navigation.Navigator +import com.jraska.github.client.navigation.Urls import okhttp3.HttpUrl /** diff --git a/core/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt b/lib/navigation-deeplink/src/test/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigatorTest.kt similarity index 70% rename from core/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt rename to lib/navigation-deeplink/src/test/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigatorTest.kt index a7aecbc1..84805207 100644 --- a/core/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt +++ b/lib/navigation-deeplink/src/test/java/com/jraska/github/client/navigation/deeplink/DeepLinkNavigatorTest.kt @@ -1,5 +1,8 @@ -package com.jraska.github.client +package com.jraska.github.client.navigation.deeplink +import com.jraska.github.client.DeepLinkLauncher +import com.jraska.github.client.WebLinkLauncher +import com.jraska.github.client.navigation.deeplink.internal.DeepLinkNavigator import okhttp3.HttpUrl.Companion.toHttpUrl import org.junit.Test import org.mockito.Mockito.mock diff --git a/navigation/.gitignore b/navigation/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/navigation/.gitignore @@ -0,0 +1 @@ +/build diff --git a/navigation/build.gradle b/navigation/build.gradle new file mode 100644 index 00000000..aa39c953 --- /dev/null +++ b/navigation/build.gradle @@ -0,0 +1,8 @@ +apply plugin: 'java-library' +apply plugin: 'com.android.lint' +apply plugin: 'kotlin' + +dependencies { + api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + api 'com.squareup.okhttp3:okhttp:4.1.0' +} diff --git a/core/src/main/java/com/jraska/github/client/Navigator.kt b/navigation/src/main/java/com/jraska/github/client/navigation/Navigator.kt similarity index 82% rename from core/src/main/java/com/jraska/github/client/Navigator.kt rename to navigation/src/main/java/com/jraska/github/client/navigation/Navigator.kt index 8e6fbd6c..a4654ac8 100644 --- a/core/src/main/java/com/jraska/github/client/Navigator.kt +++ b/navigation/src/main/java/com/jraska/github/client/navigation/Navigator.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.navigation import okhttp3.HttpUrl diff --git a/core/src/main/java/com/jraska/github/client/Urls.kt b/navigation/src/main/java/com/jraska/github/client/navigation/Urls.kt similarity index 90% rename from core/src/main/java/com/jraska/github/client/Urls.kt rename to navigation/src/main/java/com/jraska/github/client/navigation/Urls.kt index 296a5d53..5fa3ffe4 100644 --- a/core/src/main/java/com/jraska/github/client/Urls.kt +++ b/navigation/src/main/java/com/jraska/github/client/navigation/Urls.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.navigation import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl diff --git a/navigation/src/main/res/values/strings.xml b/navigation/src/main/res/values/strings.xml new file mode 100644 index 00000000..4c1cc6aa --- /dev/null +++ b/navigation/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + navigation + diff --git a/settings.gradle b/settings.gradle index f16c041d..7351dff5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,10 +3,12 @@ include ':app', ':core', ':core-testing', ':core-android', + ':navigation', ':lib:identity', ':lib:dynamic-features', ':lib:network-status', + ':lib:navigation-deeplink', ':feature:users', ':feature:push',