diff --git a/.circleci/config.yml b/.circleci/config.yml index 47ef5d0e..0f054217 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,14 +9,14 @@ jobs: steps: - checkout - restore_cache: - key: jars-{{ checksum "build.gradle" }}-{{ checksum "client/build.gradle" }} + key: jars-{{ checksum "build.gradle" }}-{{ checksum "client/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" }} + key: jars-{{ checksum "build.gradle" }}-{{ checksum "client/build.gradle" }}-{{ checksum "core/build.gradle" }}-{{ checksum "core-android/build.gradle" }} - run: name: Run Tests command: ./gradlew lint test @@ -24,8 +24,8 @@ jobs: path: client/build/reports destination: client/reports - store_artifacts: - path: client-domain/build/reports - destination: client-domain/reports + path: core/build/reports + destination: core/reports - store_artifacts: path: client-data/build/reports destination: client-data/reports @@ -34,5 +34,5 @@ jobs: - store_test_results: path: client-data/build/test-results - store_test_results: - path: client-domain/build/test-results + path: core/build/test-results diff --git a/client-data/src/main/java/com/jraska/github/client/users/UsersDataModule.kt b/client-data/src/main/java/com/jraska/github/client/users/UsersDataModule.kt deleted file mode 100644 index 0b9aeaa2..00000000 --- a/client-data/src/main/java/com/jraska/github/client/users/UsersDataModule.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.jraska.github.client.users - -import com.jraska.github.client.PerApp - -import dagger.Module -import dagger.Provides -import retrofit2.Retrofit - -@Module -object UsersDataModule { - @JvmStatic - @Provides - @PerApp - fun provideUsersRepository(retrofit: Retrofit): UsersRepository { - val usersApi = retrofit.create(GitHubUsersApi::class.java) - val detailApi = retrofit.create(GitHubUserDetailApi::class.java) - - return GitHubApiUsersRepository(usersApi, detailApi) - } -} diff --git a/client/build.gradle b/client/build.gradle index 5b00e0f2..c1be37ca 100644 --- a/client/build.gradle +++ b/client/build.gradle @@ -56,8 +56,9 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - api project(':client-domain') - api project(':client-data') + api project(':core') + api project(':core-android') + api project(':feature-users') implementation 'androidx.appcompat:appcompat:1.1.0-alpha04' implementation 'androidx.legacy:legacy-support-v4:1.0.0' diff --git a/client/src/main/java/com/jraska/github/client/AppComponent.kt b/client/src/main/java/com/jraska/github/client/AppComponent.kt index 19aabb76..829f93b7 100644 --- a/client/src/main/java/com/jraska/github/client/AppComponent.kt +++ b/client/src/main/java/com/jraska/github/client/AppComponent.kt @@ -4,28 +4,27 @@ import androidx.lifecycle.ViewModelProvider import com.google.firebase.database.FirebaseDatabase import com.jraska.github.client.analytics.AnalyticsProperty import com.jraska.github.client.analytics.EventAnalytics +import com.jraska.github.client.core.android.OnAppCreate import com.jraska.github.client.http.HttpComponent import com.jraska.github.client.logging.CrashReporter import com.jraska.github.client.push.PushHandler import com.jraska.github.client.push.PushModule import com.jraska.github.client.settings.SettingsModule -import com.jraska.github.client.users.UserViewModelModule -import com.jraska.github.client.users.UsersDataModule +import com.jraska.github.client.users.UsersModule import dagger.Component import dagger.Module import dagger.Provides import retrofit2.Retrofit -import javax.inject.Provider @PerApp -@Component(modules = [UsersDataModule::class, UserViewModelModule::class, NavigationModule::class, +@Component(modules = [UsersModule::class, NavigationModule::class, PushModule::class, AppModule::class, SettingsModule::class, HttpComponentModule::class, CoreComponentModule::class]) interface AppComponent { fun onAppCreateActions(): Set - fun pushHandler() : PushHandler + fun pushHandler(): PushHandler fun viewModelFactory(): ViewModelProvider.Factory } diff --git a/client/src/main/java/com/jraska/github/client/AppModule.kt b/client/src/main/java/com/jraska/github/client/AppModule.kt index 68d0f06c..8ea4e50d 100644 --- a/client/src/main/java/com/jraska/github/client/AppModule.kt +++ b/client/src/main/java/com/jraska/github/client/AppModule.kt @@ -10,6 +10,9 @@ import com.jakewharton.threetenabp.AndroidThreeTen import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.common.AppBuildConfig +import com.jraska.github.client.core.android.OnAppCreate +import com.jraska.github.client.core.android.TopActivityProvider +import com.jraska.github.client.core.android.ViewModelFactory import com.jraska.github.client.rx.AppSchedulers import com.jraska.github.client.time.DateTimeProvider import com.jraska.github.client.time.RealDateTimeProvider diff --git a/client/src/main/java/com/jraska/github/client/ChromeCustomTabsLauncher.kt b/client/src/main/java/com/jraska/github/client/ChromeCustomTabsLauncher.kt index bc131ab0..92a1182b 100644 --- a/client/src/main/java/com/jraska/github/client/ChromeCustomTabsLauncher.kt +++ b/client/src/main/java/com/jraska/github/client/ChromeCustomTabsLauncher.kt @@ -1,13 +1,12 @@ package com.jraska.github.client +import android.app.Activity import android.net.Uri import androidx.browser.customtabs.CustomTabsIntent -import com.jraska.github.client.ui.BaseActivity import okhttp3.HttpUrl - import javax.inject.Provider -internal class ChromeCustomTabsLauncher(private val provider: Provider) : WebLinkLauncher { +internal class ChromeCustomTabsLauncher(private val provider: Provider) : WebLinkLauncher { override fun launch(url: HttpUrl) { val customTabsIntent = CustomTabsIntent.Builder().build() val uri = Uri.parse(url.toString()) diff --git a/client/src/main/java/com/jraska/github/client/GitHubClientApp.kt b/client/src/main/java/com/jraska/github/client/GitHubClientApp.kt index c3055580..2470fb8a 100644 --- a/client/src/main/java/com/jraska/github/client/GitHubClientApp.kt +++ b/client/src/main/java/com/jraska/github/client/GitHubClientApp.kt @@ -5,6 +5,7 @@ import android.os.Looper import androidx.lifecycle.ViewModelProvider import com.google.firebase.perf.metrics.AddTrace import com.jraska.github.client.common.AppBuildConfig +import com.jraska.github.client.core.android.HasViewModelFactory import com.jraska.github.client.http.DaggerHttpComponent import com.jraska.github.client.http.HttpComponent import com.jraska.github.client.http.HttpDependenciesModule diff --git a/client/src/main/java/com/jraska/github/client/NavigationModule.kt b/client/src/main/java/com/jraska/github/client/NavigationModule.kt index 9adb1261..2b437bc1 100644 --- a/client/src/main/java/com/jraska/github/client/NavigationModule.kt +++ b/client/src/main/java/com/jraska/github/client/NavigationModule.kt @@ -3,6 +3,10 @@ package com.jraska.github.client import android.app.Activity import androidx.lifecycle.ViewModel import com.jraska.github.client.analytics.EventAnalytics +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.ui.ShortcutHandlerModel import com.jraska.github.client.ui.UsersActivity import dagger.Module diff --git a/client/src/main/java/com/jraska/github/client/NotificationSetup.kt b/client/src/main/java/com/jraska/github/client/NotificationSetup.kt index b34c065b..4d9a1add 100644 --- a/client/src/main/java/com/jraska/github/client/NotificationSetup.kt +++ b/client/src/main/java/com/jraska/github/client/NotificationSetup.kt @@ -5,6 +5,7 @@ import android.app.NotificationChannel import android.app.NotificationManager import android.content.Context import android.os.Build +import com.jraska.github.client.core.android.OnAppCreate import javax.inject.Inject diff --git a/client/src/main/java/com/jraska/github/client/SetupLogging.kt b/client/src/main/java/com/jraska/github/client/SetupLogging.kt index d1960d73..532cc5dd 100644 --- a/client/src/main/java/com/jraska/github/client/SetupLogging.kt +++ b/client/src/main/java/com/jraska/github/client/SetupLogging.kt @@ -2,7 +2,9 @@ package com.jraska.github.client import android.app.Application import com.jraska.console.timber.ConsoleTree -import com.jraska.github.client.logging.ErrorReportTree +import com.jraska.github.client.core.android.AnalyticsLoggingTree +import com.jraska.github.client.core.android.OnAppCreate +import com.jraska.github.client.core.android.logging.ErrorReportTree import timber.log.Timber import javax.inject.Inject import javax.inject.Provider diff --git a/client/src/main/java/com/jraska/github/client/UsersPathLauncher.kt b/client/src/main/java/com/jraska/github/client/UsersPathLauncher.kt index 7a3e0540..3f49c7bf 100644 --- a/client/src/main/java/com/jraska/github/client/UsersPathLauncher.kt +++ b/client/src/main/java/com/jraska/github/client/UsersPathLauncher.kt @@ -1,6 +1,7 @@ package com.jraska.github.client import android.app.Activity +import com.jraska.github.client.core.android.LinkLauncher import com.jraska.github.client.ui.RepoDetailActivity import com.jraska.github.client.ui.UserDetailActivity import okhttp3.HttpUrl diff --git a/client/src/main/java/com/jraska/github/client/push/PushIntentObserver.kt b/client/src/main/java/com/jraska/github/client/push/PushIntentObserver.kt index f7eac5bc..0fb56885 100644 --- a/client/src/main/java/com/jraska/github/client/push/PushIntentObserver.kt +++ b/client/src/main/java/com/jraska/github/client/push/PushIntentObserver.kt @@ -8,7 +8,7 @@ import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent import com.google.firebase.messaging.RemoteMessage -import com.jraska.github.client.OnAppCreate +import com.jraska.github.client.core.android.OnAppCreate import javax.inject.Inject class PushIntentObserver(private val pushHandler: PushHandler) : LifecycleObserver { diff --git a/client/src/main/java/com/jraska/github/client/push/PushModule.kt b/client/src/main/java/com/jraska/github/client/push/PushModule.kt index 4c879bcb..c1aa71c5 100644 --- a/client/src/main/java/com/jraska/github/client/push/PushModule.kt +++ b/client/src/main/java/com/jraska/github/client/push/PushModule.kt @@ -3,7 +3,7 @@ package com.jraska.github.client.push import android.app.NotificationManager import android.content.Context import com.jraska.github.client.Config -import com.jraska.github.client.OnAppCreate +import com.jraska.github.client.core.android.OnAppCreate import com.jraska.github.client.analytics.AnalyticsProperty import dagger.Module import dagger.Provides diff --git a/client/src/main/java/com/jraska/github/client/settings/SettingsActivity.kt b/client/src/main/java/com/jraska/github/client/settings/SettingsActivity.kt index 93cb9d9a..e0368b10 100644 --- a/client/src/main/java/com/jraska/github/client/settings/SettingsActivity.kt +++ b/client/src/main/java/com/jraska/github/client/settings/SettingsActivity.kt @@ -7,7 +7,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.airbnb.epoxy.SimpleEpoxyAdapter import com.jraska.github.client.R import com.jraska.github.client.ui.BaseActivity -import com.jraska.github.client.viewModel +import com.jraska.github.client.core.android.viewModel +import kotlinx.android.synthetic.main.activity_settings.* import kotlinx.android.synthetic.main.content_settings.* class SettingsActivity : BaseActivity(), PurchaseReportModel.PurchaseListener { @@ -16,6 +17,7 @@ class SettingsActivity : BaseActivity(), PurchaseReportModel.PurchaseListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_settings) + setSupportActionBar(toolbar) settings_recycler.layoutManager = LinearLayoutManager(this) val adapter = SimpleEpoxyAdapter() diff --git a/client/src/main/java/com/jraska/github/client/settings/SettingsModule.kt b/client/src/main/java/com/jraska/github/client/settings/SettingsModule.kt index a656bf0f..e33ded8f 100644 --- a/client/src/main/java/com/jraska/github/client/settings/SettingsModule.kt +++ b/client/src/main/java/com/jraska/github/client/settings/SettingsModule.kt @@ -2,7 +2,7 @@ package com.jraska.github.client.settings import android.app.Activity import androidx.lifecycle.ViewModel -import com.jraska.github.client.LinkLauncher +import com.jraska.github.client.core.android.LinkLauncher import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey diff --git a/client/src/main/java/com/jraska/github/client/ui/BaseActivity.kt b/client/src/main/java/com/jraska/github/client/ui/BaseActivity.kt index 13777b21..1def5105 100644 --- a/client/src/main/java/com/jraska/github/client/ui/BaseActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/BaseActivity.kt @@ -1,28 +1,5 @@ package com.jraska.github.client.ui -import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import kotlinx.android.synthetic.main.activity_settings.* -abstract class BaseActivity : AppCompatActivity() { - - override fun setContentView(layoutResID: Int) { - super.setContentView(layoutResID) - onSetContentView() - } - - override fun setContentView(view: View) { - super.setContentView(view) - onSetContentView() - } - - override fun setContentView(view: View, params: ViewGroup.LayoutParams) { - super.setContentView(view, params) - onSetContentView() - } - - protected fun onSetContentView() { - setSupportActionBar(toolbar) - } -} +abstract class BaseActivity : AppCompatActivity() diff --git a/client/src/main/java/com/jraska/github/client/ui/RepoDetailActivity.kt b/client/src/main/java/com/jraska/github/client/ui/RepoDetailActivity.kt index 3d9c5916..d1b5a4f7 100644 --- a/client/src/main/java/com/jraska/github/client/ui/RepoDetailActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/RepoDetailActivity.kt @@ -10,7 +10,7 @@ import com.airbnb.epoxy.SimpleEpoxyModel import com.jraska.github.client.R import com.jraska.github.client.users.RepoDetail import com.jraska.github.client.users.RepoDetailViewModel -import com.jraska.github.client.viewModel +import com.jraska.github.client.core.android.viewModel import kotlinx.android.synthetic.main.activity_repo_detail.* import kotlinx.android.synthetic.main.content_repo_detail.* @@ -26,6 +26,7 @@ class RepoDetailActivity : BaseActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_repo_detail) + setSupportActionBar(toolbar) repo_detail_recycler.layoutManager = LinearLayoutManager(this) title = fullRepoName() diff --git a/client/src/main/java/com/jraska/github/client/ui/ShortcutHandlerActivity.kt b/client/src/main/java/com/jraska/github/client/ui/ShortcutHandlerActivity.kt index 463d852e..cac794c0 100644 --- a/client/src/main/java/com/jraska/github/client/ui/ShortcutHandlerActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/ShortcutHandlerActivity.kt @@ -2,7 +2,7 @@ package com.jraska.github.client.ui import android.os.Bundle import com.jraska.github.client.inputUrl -import com.jraska.github.client.viewModel +import com.jraska.github.client.core.android.viewModel class ShortcutHandlerActivity : BaseActivity() { diff --git a/client/src/main/java/com/jraska/github/client/ui/UriHandlerActivity.kt b/client/src/main/java/com/jraska/github/client/ui/UriHandlerActivity.kt index 21b394cc..2e6f6e9b 100644 --- a/client/src/main/java/com/jraska/github/client/ui/UriHandlerActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/UriHandlerActivity.kt @@ -1,9 +1,9 @@ package com.jraska.github.client.ui import android.os.Bundle -import com.jraska.github.client.UriHandlerViewModel +import com.jraska.github.client.core.android.UriHandlerViewModel import com.jraska.github.client.inputUrl -import com.jraska.github.client.viewModel +import com.jraska.github.client.core.android.viewModel class UriHandlerActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/client/src/main/java/com/jraska/github/client/ui/UserDetailActivity.kt b/client/src/main/java/com/jraska/github/client/ui/UserDetailActivity.kt index f8b3c5dd..01529269 100644 --- a/client/src/main/java/com/jraska/github/client/ui/UserDetailActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/UserDetailActivity.kt @@ -9,10 +9,10 @@ import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.SimpleEpoxyAdapter import com.airbnb.epoxy.SimpleEpoxyModel import com.jraska.github.client.R +import com.jraska.github.client.core.android.viewModel import com.jraska.github.client.users.RepoHeader import com.jraska.github.client.users.UserDetail import com.jraska.github.client.users.UserDetailViewModel -import com.jraska.github.client.viewModel import kotlinx.android.synthetic.main.activity_user_detail.* import kotlinx.android.synthetic.main.content_user_detail.* @@ -27,6 +27,7 @@ class UserDetailActivity : BaseActivity(), RepoHeaderModel.RepoListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_user_detail) + setSupportActionBar(toolbar) user_detail_recycler.layoutManager = LinearLayoutManager(this) user_detail_recycler.isNestedScrollingEnabled = false diff --git a/client/src/main/java/com/jraska/github/client/ui/UsersActivity.kt b/client/src/main/java/com/jraska/github/client/ui/UsersActivity.kt index 72c7d179..52de442e 100644 --- a/client/src/main/java/com/jraska/github/client/ui/UsersActivity.kt +++ b/client/src/main/java/com/jraska/github/client/ui/UsersActivity.kt @@ -11,7 +11,8 @@ import com.airbnb.epoxy.SimpleEpoxyAdapter import com.jraska.github.client.R import com.jraska.github.client.users.User import com.jraska.github.client.users.UsersViewModel -import com.jraska.github.client.viewModel +import com.jraska.github.client.core.android.viewModel +import kotlinx.android.synthetic.main.activity_users_list.* import kotlinx.android.synthetic.main.content_users_list.* class UsersActivity : BaseActivity(), UserModel.UserListener { @@ -20,6 +21,7 @@ class UsersActivity : BaseActivity(), UserModel.UserListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_users_list) + setSupportActionBar(toolbar) users_recycler.layoutManager = LinearLayoutManager(this) users_refresh_swipe_layout.setOnRefreshListener { usersViewModel.onRefresh() } diff --git a/client-data/.gitignore b/core-android/.gitignore similarity index 100% rename from client-data/.gitignore rename to core-android/.gitignore diff --git a/core-android/build.gradle b/core-android/build.gradle new file mode 100644 index 00000000..51361863 --- /dev/null +++ b/core-android/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 28 + defaultConfig { + minSdkVersion 21 + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + api project(':core') + + api 'androidx.appcompat:appcompat:1.1.0-alpha04' + api 'androidx.annotation:annotation:1.0.2' + api 'androidx.lifecycle:lifecycle-extensions:2.0.0' + + api 'com.jakewharton.timber:timber:4.7.1' + + testImplementation 'junit:junit:4.12' +} diff --git a/core-android/src/main/AndroidManifest.xml b/core-android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f23b58d8 --- /dev/null +++ b/core-android/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/client-data/src/main/java/com/jraska/github/client/AnalyticsLoggingTree.kt b/core-android/src/main/java/com/jraska/github/client/core/android/AnalyticsLoggingTree.kt similarity index 95% rename from client-data/src/main/java/com/jraska/github/client/AnalyticsLoggingTree.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/AnalyticsLoggingTree.kt index 6a932d0a..5506a73b 100644 --- a/client-data/src/main/java/com/jraska/github/client/AnalyticsLoggingTree.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/AnalyticsLoggingTree.kt @@ -1,6 +1,7 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import android.util.Log +import com.jraska.github.client.Config import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.time.DateTimeProvider diff --git a/client/src/main/java/com/jraska/github/client/HasViewModel.kt b/core-android/src/main/java/com/jraska/github/client/core/android/HasViewModel.kt similarity index 90% rename from client/src/main/java/com/jraska/github/client/HasViewModel.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/HasViewModel.kt index 96bcc830..22457b5d 100644 --- a/client/src/main/java/com/jraska/github/client/HasViewModel.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/HasViewModel.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModel diff --git a/client-data/src/main/java/com/jraska/github/client/LinkLauncher.kt b/core-android/src/main/java/com/jraska/github/client/core/android/LinkLauncher.kt similarity index 87% rename from client-data/src/main/java/com/jraska/github/client/LinkLauncher.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/LinkLauncher.kt index 351750a2..c9903093 100644 --- a/client-data/src/main/java/com/jraska/github/client/LinkLauncher.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/LinkLauncher.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import android.app.Activity import okhttp3.HttpUrl diff --git a/client/src/main/java/com/jraska/github/client/OnAppCreate.kt b/core-android/src/main/java/com/jraska/github/client/core/android/OnAppCreate.kt similarity index 66% rename from client/src/main/java/com/jraska/github/client/OnAppCreate.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/OnAppCreate.kt index 38defbd0..6e526fd6 100644 --- a/client/src/main/java/com/jraska/github/client/OnAppCreate.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/OnAppCreate.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import android.app.Application diff --git a/client/src/main/java/com/jraska/github/client/RealDeepLinkLauncher.kt b/core-android/src/main/java/com/jraska/github/client/core/android/RealDeepLinkLauncher.kt similarity index 68% rename from client/src/main/java/com/jraska/github/client/RealDeepLinkLauncher.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/RealDeepLinkLauncher.kt index d066749f..4613d007 100644 --- a/client/src/main/java/com/jraska/github/client/RealDeepLinkLauncher.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/RealDeepLinkLauncher.kt @@ -1,15 +1,13 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android -import com.jraska.github.client.ui.BaseActivity -import com.jraska.github.client.ui.RepoDetailActivity -import com.jraska.github.client.ui.UserDetailActivity -import com.jraska.github.client.ui.UsersActivity +import android.app.Activity +import com.jraska.github.client.DeepLinkLauncher import okhttp3.HttpUrl import timber.log.Timber import javax.inject.Provider class RealDeepLinkLauncher private constructor( - private val topActivityProvider: Provider, + private val topActivityProvider: Provider, private val launchers: List ) : DeepLinkLauncher { override fun launch(deepLink: HttpUrl) { @@ -31,7 +29,7 @@ class RealDeepLinkLauncher private constructor( } companion object { - fun create(activityProvider: Provider, launchers: Set): RealDeepLinkLauncher { + fun create(activityProvider: Provider, launchers: Set): RealDeepLinkLauncher { val sortedLaunchers = launchers.sortedBy { it.priority().value } return RealDeepLinkLauncher(activityProvider, sortedLaunchers) } diff --git a/client/src/main/java/com/jraska/github/client/TopActivityProvider.kt b/core-android/src/main/java/com/jraska/github/client/core/android/TopActivityProvider.kt similarity index 76% rename from client/src/main/java/com/jraska/github/client/TopActivityProvider.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/TopActivityProvider.kt index 04f67b32..73919c0b 100644 --- a/client/src/main/java/com/jraska/github/client/TopActivityProvider.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/TopActivityProvider.kt @@ -1,25 +1,24 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import android.app.Activity import android.app.Application import android.os.Bundle -import com.jraska.github.client.ui.BaseActivity import javax.inject.Inject import javax.inject.Provider -class TopActivityProvider internal constructor() : Provider { - private var topActivity: BaseActivity? = null +class TopActivityProvider : Provider { + private var topActivity: Activity? = null private val callbacks: Application.ActivityLifecycleCallbacks = object : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { - topActivity = activity as BaseActivity + topActivity = activity } override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) { - topActivity = activity as BaseActivity + topActivity = activity } override fun onActivityPaused(activity: Activity) {} @@ -31,7 +30,7 @@ class TopActivityProvider internal constructor() : Provider { override fun onActivityDestroyed(activity: Activity) {} } - override fun get(): BaseActivity { + override fun get(): Activity { if (topActivity == null) { throw IllegalStateException("No activity") } diff --git a/client-data/src/main/java/com/jraska/github/client/UriHandlerViewModel.kt b/core-android/src/main/java/com/jraska/github/client/core/android/UriHandlerViewModel.kt similarity index 72% rename from client-data/src/main/java/com/jraska/github/client/UriHandlerViewModel.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/UriHandlerViewModel.kt index 6a9c06d4..57f058c9 100644 --- a/client-data/src/main/java/com/jraska/github/client/UriHandlerViewModel.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/UriHandlerViewModel.kt @@ -1,6 +1,7 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import androidx.lifecycle.ViewModel +import com.jraska.github.client.DeepLinkHandler import okhttp3.HttpUrl class UriHandlerViewModel constructor(private val deepLinkHandler: DeepLinkHandler) : ViewModel() { diff --git a/client-data/src/main/java/com/jraska/github/client/ViewModelFactory.kt b/core-android/src/main/java/com/jraska/github/client/core/android/ViewModelFactory.kt similarity index 92% rename from client-data/src/main/java/com/jraska/github/client/ViewModelFactory.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/ViewModelFactory.kt index 4b0e767b..150979ef 100644 --- a/client-data/src/main/java/com/jraska/github/client/ViewModelFactory.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/ViewModelFactory.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client +package com.jraska.github.client.core.android import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider diff --git a/client/src/main/java/com/jraska/github/client/logging/ErrorReportTree.kt b/core-android/src/main/java/com/jraska/github/client/core/android/logging/ErrorReportTree.kt similarity index 92% rename from client/src/main/java/com/jraska/github/client/logging/ErrorReportTree.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/logging/ErrorReportTree.kt index cde33aa6..195e698c 100644 --- a/client/src/main/java/com/jraska/github/client/logging/ErrorReportTree.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/logging/ErrorReportTree.kt @@ -1,7 +1,8 @@ -package com.jraska.github.client.logging +package com.jraska.github.client.core.android.logging import android.util.Log import com.jraska.github.client.common.DeveloperError +import com.jraska.github.client.logging.CrashReporter import timber.log.Timber import java.util.regex.Pattern import javax.inject.Inject diff --git a/client-data/src/main/java/com/jraska/github/client/rx/RxLiveData.kt b/core-android/src/main/java/com/jraska/github/client/core/android/rx/RxLiveData.kt similarity index 97% rename from client-data/src/main/java/com/jraska/github/client/rx/RxLiveData.kt rename to core-android/src/main/java/com/jraska/github/client/core/android/rx/RxLiveData.kt index 7875ad7e..d3b19b10 100644 --- a/client-data/src/main/java/com/jraska/github/client/rx/RxLiveData.kt +++ b/core-android/src/main/java/com/jraska/github/client/core/android/rx/RxLiveData.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client.rx +package com.jraska.github.client.core.android.rx import androidx.lifecycle.LiveData import io.reactivex.Maybe diff --git a/client-domain/.gitignore b/core/.gitignore similarity index 100% rename from client-domain/.gitignore rename to core/.gitignore diff --git a/client-domain/build.gradle b/core/build.gradle similarity index 60% rename from client-domain/build.gradle rename to core/build.gradle index 77518455..fc4ee216 100644 --- a/client-domain/build.gradle +++ b/core/build.gradle @@ -2,27 +2,15 @@ apply plugin: 'java-library' apply plugin: 'com.android.lint' apply plugin: 'kotlin' -configurations { - provided -} - -sourceSets { - main { - compileClasspath += configurations.provided - } -} - dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - - api 'com.google.dagger:dagger:2.21' - provided 'com.google.dagger:dagger-compiler:2.21' + api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" api 'io.reactivex.rxjava2:rxjava:2.2.7' api 'com.squareup.okhttp3:okhttp:3.13.1' api 'com.squareup.okio:okio:2.2.2' api 'org.threeten:threetenbp:1.3.7:no-tzdb' + api 'javax.inject:javax.inject:1' testImplementation 'junit:junit:4.12' testImplementation 'org.assertj:assertj-core:3.11.1' diff --git a/client-data/lint.xml b/core/lint.xml similarity index 100% rename from client-data/lint.xml rename to core/lint.xml diff --git a/client-domain/src/main/java/com/jraska/github/client/Config.kt b/core/src/main/java/com/jraska/github/client/Config.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/Config.kt rename to core/src/main/java/com/jraska/github/client/Config.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/DeepLinkHandler.kt b/core/src/main/java/com/jraska/github/client/DeepLinkHandler.kt similarity index 94% rename from client-domain/src/main/java/com/jraska/github/client/DeepLinkHandler.kt rename to core/src/main/java/com/jraska/github/client/DeepLinkHandler.kt index 34a29346..1dcd3042 100644 --- a/client-domain/src/main/java/com/jraska/github/client/DeepLinkHandler.kt +++ b/core/src/main/java/com/jraska/github/client/DeepLinkHandler.kt @@ -2,7 +2,7 @@ package com.jraska.github.client import com.jraska.github.client.analytics.AnalyticsEvent import com.jraska.github.client.analytics.EventAnalytics -import com.jraska.github.client.common.toAnalyticsString +import com.jraska.github.client.analytics.toAnalyticsString import com.jraska.github.client.logging.CrashReporter import okhttp3.HttpUrl diff --git a/client-domain/src/main/java/com/jraska/github/client/DeepLinkLauncher.kt b/core/src/main/java/com/jraska/github/client/DeepLinkLauncher.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/DeepLinkLauncher.kt rename to core/src/main/java/com/jraska/github/client/DeepLinkLauncher.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt b/core/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt rename to core/src/main/java/com/jraska/github/client/DeepLinkNavigator.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/Navigator.kt b/core/src/main/java/com/jraska/github/client/Navigator.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/Navigator.kt rename to core/src/main/java/com/jraska/github/client/Navigator.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/PerApp.kt b/core/src/main/java/com/jraska/github/client/PerApp.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/PerApp.kt rename to core/src/main/java/com/jraska/github/client/PerApp.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/Urls.kt b/core/src/main/java/com/jraska/github/client/Urls.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/Urls.kt rename to core/src/main/java/com/jraska/github/client/Urls.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/WebLinkLauncher.kt b/core/src/main/java/com/jraska/github/client/WebLinkLauncher.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/WebLinkLauncher.kt rename to core/src/main/java/com/jraska/github/client/WebLinkLauncher.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/analytics/AnalyticsEvent.kt b/core/src/main/java/com/jraska/github/client/analytics/AnalyticsEvent.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/analytics/AnalyticsEvent.kt rename to core/src/main/java/com/jraska/github/client/analytics/AnalyticsEvent.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/analytics/AnalyticsProperty.kt b/core/src/main/java/com/jraska/github/client/analytics/AnalyticsProperty.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/analytics/AnalyticsProperty.kt rename to core/src/main/java/com/jraska/github/client/analytics/AnalyticsProperty.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/analytics/EventAnalytics.kt b/core/src/main/java/com/jraska/github/client/analytics/EventAnalytics.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/analytics/EventAnalytics.kt rename to core/src/main/java/com/jraska/github/client/analytics/EventAnalytics.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/common/HttpUrl.kt b/core/src/main/java/com/jraska/github/client/analytics/HttpUrl.kt similarity index 86% rename from client-domain/src/main/java/com/jraska/github/client/common/HttpUrl.kt rename to core/src/main/java/com/jraska/github/client/analytics/HttpUrl.kt index 5921a4c8..b541fec8 100644 --- a/client-domain/src/main/java/com/jraska/github/client/common/HttpUrl.kt +++ b/core/src/main/java/com/jraska/github/client/analytics/HttpUrl.kt @@ -1,4 +1,4 @@ -package com.jraska.github.client.common +package com.jraska.github.client.analytics import okhttp3.HttpUrl diff --git a/client-domain/src/main/java/com/jraska/github/client/common/AppBuildConfig.kt b/core/src/main/java/com/jraska/github/client/common/AppBuildConfig.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/common/AppBuildConfig.kt rename to core/src/main/java/com/jraska/github/client/common/AppBuildConfig.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/common/DeveloperError.kt b/core/src/main/java/com/jraska/github/client/common/DeveloperError.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/common/DeveloperError.kt rename to core/src/main/java/com/jraska/github/client/common/DeveloperError.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/common/Stopwatch.kt b/core/src/main/java/com/jraska/github/client/common/Stopwatch.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/common/Stopwatch.kt rename to core/src/main/java/com/jraska/github/client/common/Stopwatch.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/logging/CrashReporter.kt b/core/src/main/java/com/jraska/github/client/logging/CrashReporter.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/logging/CrashReporter.kt rename to core/src/main/java/com/jraska/github/client/logging/CrashReporter.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/logging/VerboseLogger.kt b/core/src/main/java/com/jraska/github/client/logging/VerboseLogger.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/logging/VerboseLogger.kt rename to core/src/main/java/com/jraska/github/client/logging/VerboseLogger.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/rx/AppSchedulers.kt b/core/src/main/java/com/jraska/github/client/rx/AppSchedulers.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/rx/AppSchedulers.kt rename to core/src/main/java/com/jraska/github/client/rx/AppSchedulers.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/time/DateTimeProvider.kt b/core/src/main/java/com/jraska/github/client/time/DateTimeProvider.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/time/DateTimeProvider.kt rename to core/src/main/java/com/jraska/github/client/time/DateTimeProvider.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/time/RealDateTimeProvider.kt b/core/src/main/java/com/jraska/github/client/time/RealDateTimeProvider.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/time/RealDateTimeProvider.kt rename to core/src/main/java/com/jraska/github/client/time/RealDateTimeProvider.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/time/RealTimeProvider.kt b/core/src/main/java/com/jraska/github/client/time/RealTimeProvider.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/time/RealTimeProvider.kt rename to core/src/main/java/com/jraska/github/client/time/RealTimeProvider.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/time/TimeProvider.kt b/core/src/main/java/com/jraska/github/client/time/TimeProvider.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/time/TimeProvider.kt rename to core/src/main/java/com/jraska/github/client/time/TimeProvider.kt diff --git a/client-domain/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt b/core/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt similarity index 100% rename from client-domain/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt rename to core/src/test/java/com/jraska/github/client/DeepLinkNavigatorTest.kt diff --git a/client-domain/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt b/core/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt similarity index 88% rename from client-domain/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt rename to core/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt index f0d93002..71a95094 100644 --- a/client-domain/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt +++ b/core/src/test/java/com/jraska/github/client/common/HttpUrlTest.kt @@ -1,5 +1,6 @@ package com.jraska.github.client.common +import com.jraska.github.client.analytics.toAnalyticsString import okhttp3.HttpUrl import org.assertj.core.api.Assertions.assertThat import org.junit.Test diff --git a/client-domain/src/test/java/com/jraska/github/client/common/StopwatchTest.kt b/core/src/test/java/com/jraska/github/client/common/StopwatchTest.kt similarity index 100% rename from client-domain/src/test/java/com/jraska/github/client/common/StopwatchTest.kt rename to core/src/test/java/com/jraska/github/client/common/StopwatchTest.kt diff --git a/client-domain/src/test/java/com/jraska/github/client/time/TestTimeProvider.kt b/core/src/test/java/com/jraska/github/client/time/TestTimeProvider.kt similarity index 100% rename from client-domain/src/test/java/com/jraska/github/client/time/TestTimeProvider.kt rename to core/src/test/java/com/jraska/github/client/time/TestTimeProvider.kt diff --git a/feature-users/.gitignore b/feature-users/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/feature-users/.gitignore @@ -0,0 +1 @@ +/build diff --git a/client-data/build.gradle b/feature-users/build.gradle similarity index 82% rename from client-data/build.gradle rename to feature-users/build.gradle index f68f61ae..6e69ca4e 100644 --- a/client-data/build.gradle +++ b/feature-users/build.gradle @@ -19,12 +19,10 @@ dependencies { kapt 'com.google.dagger:dagger-compiler:2.21' - api project(':client-domain') + api project(':core') + api project(':core-android') - api 'androidx.appcompat:appcompat:1.1.0-alpha04' - api 'androidx.annotation:annotation:1.0.2' - - api 'androidx.lifecycle:lifecycle-extensions:2.0.0' + api 'com.google.dagger:dagger:2.21' api 'com.squareup.retrofit2:retrofit:2.5.0' api 'com.squareup.retrofit2:converter-gson:2.5.0' @@ -32,8 +30,6 @@ dependencies { api 'com.google.code.gson:gson:2.8.5' api 'com.squareup.okhttp3:logging-interceptor:3.13.1' - api 'com.jakewharton.timber:timber:4.7.1' - testImplementation 'com.jraska.livedata:testing:1.1.0' testImplementation 'com.jraska.livedata:testing-ktx:1.1.0' testImplementation 'junit:junit:4.12' diff --git a/client-domain/lint.xml b/feature-users/lint.xml similarity index 100% rename from client-domain/lint.xml rename to feature-users/lint.xml diff --git a/client-data/src/main/AndroidManifest.xml b/feature-users/src/main/AndroidManifest.xml similarity index 100% rename from client-data/src/main/AndroidManifest.xml rename to feature-users/src/main/AndroidManifest.xml diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubApiUsersRepository.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubApiUsersRepository.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubApiUsersRepository.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubApiUsersRepository.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubRepo.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubRepo.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubRepo.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubRepo.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubUser.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubUser.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubUser.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubUser.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubUserDetail.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubUserDetail.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubUserDetail.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubUserDetail.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubUserDetailApi.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubUserDetailApi.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubUserDetailApi.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubUserDetailApi.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/GitHubUsersApi.kt b/feature-users/src/main/java/com/jraska/github/client/users/GitHubUsersApi.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/GitHubUsersApi.kt rename to feature-users/src/main/java/com/jraska/github/client/users/GitHubUsersApi.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/RepoConverter.kt b/feature-users/src/main/java/com/jraska/github/client/users/RepoConverter.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/RepoConverter.kt rename to feature-users/src/main/java/com/jraska/github/client/users/RepoConverter.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/users/RepoDetail.kt b/feature-users/src/main/java/com/jraska/github/client/users/RepoDetail.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/RepoDetail.kt rename to feature-users/src/main/java/com/jraska/github/client/users/RepoDetail.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt b/feature-users/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt similarity index 97% rename from client-data/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt rename to feature-users/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt index db7eb688..d2a6b6e7 100644 --- a/client-data/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt +++ b/feature-users/src/main/java/com/jraska/github/client/users/RepoDetailViewModel.kt @@ -7,7 +7,7 @@ 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.rx.AppSchedulers -import com.jraska.github.client.rx.RxLiveData +import com.jraska.github.client.core.android.rx.RxLiveData class RepoDetailViewModel constructor( private val usersRepository: UsersRepository, diff --git a/client-domain/src/main/java/com/jraska/github/client/users/RepoHeader.kt b/feature-users/src/main/java/com/jraska/github/client/users/RepoHeader.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/RepoHeader.kt rename to feature-users/src/main/java/com/jraska/github/client/users/RepoHeader.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/users/User.kt b/feature-users/src/main/java/com/jraska/github/client/users/User.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/User.kt rename to feature-users/src/main/java/com/jraska/github/client/users/User.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/users/UserDetail.kt b/feature-users/src/main/java/com/jraska/github/client/users/UserDetail.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/UserDetail.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UserDetail.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt b/feature-users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt similarity index 97% rename from client-data/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt index 0caadf49..52ac091e 100644 --- a/client-data/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt +++ b/feature-users/src/main/java/com/jraska/github/client/users/UserDetailViewModel.kt @@ -8,7 +8,7 @@ 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.rx.AppSchedulers -import com.jraska.github.client.rx.RxLiveData +import com.jraska.github.client.core.android.rx.RxLiveData class UserDetailViewModel internal constructor( private val usersRepository: UsersRepository, diff --git a/client-data/src/main/java/com/jraska/github/client/users/UserDetailWithReposConverter.kt b/feature-users/src/main/java/com/jraska/github/client/users/UserDetailWithReposConverter.kt similarity index 100% rename from client-data/src/main/java/com/jraska/github/client/users/UserDetailWithReposConverter.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UserDetailWithReposConverter.kt diff --git a/client-domain/src/main/java/com/jraska/github/client/users/UserStats.kt b/feature-users/src/main/java/com/jraska/github/client/users/UserStats.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/UserStats.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UserStats.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/UserViewModelModule.kt b/feature-users/src/main/java/com/jraska/github/client/users/UsersModule.kt similarity index 78% rename from client-data/src/main/java/com/jraska/github/client/users/UserViewModelModule.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UsersModule.kt index 9edac6b8..8a830aa3 100644 --- a/client-data/src/main/java/com/jraska/github/client/users/UserViewModelModule.kt +++ b/feature-users/src/main/java/com/jraska/github/client/users/UsersModule.kt @@ -3,15 +3,28 @@ package com.jraska.github.client.users import androidx.lifecycle.ViewModel import com.jraska.github.client.Config import com.jraska.github.client.Navigator +import com.jraska.github.client.PerApp import com.jraska.github.client.analytics.EventAnalytics import com.jraska.github.client.rx.AppSchedulers + import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap +import retrofit2.Retrofit @Module -object UserViewModelModule { +object UsersModule { + @JvmStatic + @Provides + @PerApp + fun provideUsersRepository(retrofit: Retrofit): UsersRepository { + val usersApi = retrofit.create(GitHubUsersApi::class.java) + val detailApi = retrofit.create(GitHubUserDetailApi::class.java) + + return GitHubApiUsersRepository(usersApi, detailApi) + } + @JvmStatic @Provides @IntoMap diff --git a/client-domain/src/main/java/com/jraska/github/client/users/UsersRepository.kt b/feature-users/src/main/java/com/jraska/github/client/users/UsersRepository.kt similarity index 100% rename from client-domain/src/main/java/com/jraska/github/client/users/UsersRepository.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UsersRepository.kt diff --git a/client-data/src/main/java/com/jraska/github/client/users/UsersViewModel.kt b/feature-users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt similarity index 98% rename from client-data/src/main/java/com/jraska/github/client/users/UsersViewModel.kt rename to feature-users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt index 459fe3c6..ccd1c8aa 100644 --- a/client-data/src/main/java/com/jraska/github/client/users/UsersViewModel.kt +++ b/feature-users/src/main/java/com/jraska/github/client/users/UsersViewModel.kt @@ -8,7 +8,7 @@ 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.rx.AppSchedulers -import com.jraska.github.client.rx.RxLiveData +import com.jraska.github.client.core.android.rx.RxLiveData import io.reactivex.Single import io.reactivex.SingleEmitter import io.reactivex.SingleOnSubscribe diff --git a/client-data/src/test/java/com/jraska/github/client/FakeConfig.kt b/feature-users/src/test/java/com/jraska/github/client/FakeConfig.kt similarity index 100% rename from client-data/src/test/java/com/jraska/github/client/FakeConfig.kt rename to feature-users/src/test/java/com/jraska/github/client/FakeConfig.kt diff --git a/client-data/src/test/java/com/jraska/github/client/users/GitHubUserTest.kt b/feature-users/src/test/java/com/jraska/github/client/users/GitHubUserTest.kt similarity index 100% rename from client-data/src/test/java/com/jraska/github/client/users/GitHubUserTest.kt rename to feature-users/src/test/java/com/jraska/github/client/users/GitHubUserTest.kt diff --git a/client-data/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt b/feature-users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt similarity index 100% rename from client-data/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt rename to feature-users/src/test/java/com/jraska/github/client/users/RepoDetailViewModelTest.kt diff --git a/client-data/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt b/feature-users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt similarity index 100% rename from client-data/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt rename to feature-users/src/test/java/com/jraska/github/client/users/UserDetailViewModelTest.kt diff --git a/client-data/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt b/feature-users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt similarity index 100% rename from client-data/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt rename to feature-users/src/test/java/com/jraska/github/client/users/UsersViewModelTest.kt diff --git a/gradle.properties b/gradle.properties index 17b97f96..89837e52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,4 +5,3 @@ org.gradle.parallel=true org.gradle.daemon=true android.useAndroidX=true android.enableJetifier=true -android.jetifier.blacklist = butterknife-compiler diff --git a/settings.gradle b/settings.gradle index c8538d27..934efc38 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':client', ':client-domain', ':client-data' +include ':client', ':core', ':feature-users', ':core-android'