Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Hilt #6

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
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
13 changes: 7 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: "kotlin-allopen"
apply plugin: 'dagger.hilt.android.plugin'

def getProperty(String filename, String propName) {
def propsFile = rootProject.file(filename)
Expand Down Expand Up @@ -105,7 +106,8 @@ dependencies {
def archComponentVersion = '2.1.0'
def roomVersion = '2.2.5'
def lifecycleVersion = '2.2.0'
def daggerVersion = '2.28.1'
def hiltVersion = '2.28.3-alpha'
def hiltViewModelVersion = '1.0.0-alpha02'
def retrofitVersion = '2.9.0'
def googleJsonVersion = '2.8.6'
def okhttpVersion = '4.7.2'
Expand Down Expand Up @@ -153,11 +155,10 @@ dependencies {
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

// dependency injection
implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-android:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
implementation "com.google.dagger:hilt-android:$hiltVersion"
kapt "com.google.dagger:hilt-android-compiler:$hiltVersion"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hiltViewModelVersion"
kapt "androidx.hilt:hilt-compiler:$hiltViewModelVersion"

debugImplementation "androidx.fragment:fragment-testing:$androidFragment"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,7 @@ class MovieDetailFragmentTest {
val scenario = launchFragmentInContainer(
bundle, themeResId = R.style.AppTheme
) {
MovieDetailFragment().apply {
viewModelFactory = ViewModelUtil.createFor(viewModel)
}
MovieDetailFragment()
}

dataBindingIdlingResourceRule.monitorFragment(scenario)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ class MovieListFragmentTest {
val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
MovieListFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ class MovieSearchFragmentTest {
val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
MovieSearchFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ class MovieSearchResultFilterFragmentTest {
) {
MovieSearchResultFilterFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ class MovieSearchResultFragmentTest {
) {
MovieSearchResultFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ class CelebritiesListFragmentTest {
) {
CelebritiesListFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ class CelebrityDetailFragmentTest {
bundle, themeResId = R.style.AppTheme
) {
CelebrityDetailFragment().apply {
viewModelFactory = ViewModelUtil.createFor(viewModel)
appExecutors = countingAppExecutors.appExecutors
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ class SearchCelebritiesFragmentTest {
val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
SearchCelebritiesFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ class SearchCelebritiesResultFragmentTest {
) {
SearchCelebritiesResultFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,7 @@ class TvDetailFragmentTest {
val scenario = launchFragmentInContainer(
bundle, themeResId = R.style.AppTheme
) {
TvDetailFragment().apply {
viewModelFactory = ViewModelUtil.createFor(viewModel)
}
TvDetailFragment()
}

dataBindingIdlingResourceRule.monitorFragment(scenario)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ class TvListFragmentTest {
val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
TvListFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ class TvSearchFragmentTest {
val scenario = launchFragmentInContainer(themeResId = R.style.AppTheme) {
TvSearchFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ class TvSearchResultFilterFragmentTest {
) {
TvSearchResultFilterFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ class TvSearchResultFragmentTest {
) {
TvSearchResultFragment().apply {
appExecutors = countingAppExecutors.appExecutors
viewModelFactory = ViewModelUtil.createFor(viewModel)
dataBindingComponent = object : DataBindingComponent {
override fun getFragmentBindingAdapters(): FragmentBindingAdapters {
return mockBindingAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.fragment.app.FragmentContainerView
import com.mustafa.movieguideapp.R
import dagger.hilt.android.AndroidEntryPoint

/**
* Used for testing fragments inside a fake activity.
*/
@AndroidEntryPoint
class SingleFragmentActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down
20 changes: 3 additions & 17 deletions app/src/main/java/com/mustafa/movieguideapp/MovieGuideApp.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,17 @@
package com.mustafa.movieguideapp

import android.app.Application
import com.mustafa.movieguideapp.di.AppInjector
import dagger.android.AndroidInjector
import dagger.android.DispatchingAndroidInjector
import dagger.android.HasAndroidInjector
import dagger.hilt.android.HiltAndroidApp
import timber.log.Timber
import javax.inject.Inject

@Suppress("unused")
class MovieGuideApp : Application(), HasAndroidInjector {

@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>

@HiltAndroidApp
class MovieGuideApp : Application() {

override fun onCreate() {
super.onCreate()

AppInjector.init(this)

if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
}

override fun androidInjector(): AndroidInjector<Any> {
return androidInjector
}
}
27 changes: 0 additions & 27 deletions app/src/main/java/com/mustafa/movieguideapp/di/AppComponent.kt

This file was deleted.

60 changes: 0 additions & 60 deletions app/src/main/java/com/mustafa/movieguideapp/di/AppInjector.kt

This file was deleted.

9 changes: 7 additions & 2 deletions app/src/main/java/com/mustafa/movieguideapp/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.mustafa.movieguideapp.di

import android.app.Application
import android.content.Context
import androidx.annotation.NonNull
import androidx.room.Room
import com.facebook.stetho.okhttp3.StethoInterceptor
Expand All @@ -11,17 +12,21 @@ import com.mustafa.movieguideapp.room.PeopleDao
import com.mustafa.movieguideapp.room.TvDao
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ApplicationComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import javax.inject.Singleton

@Module(includes = [ViewModelModule::class])
@InstallIn(ApplicationComponent::class)
@Module
class AppModule {
@Provides
@Singleton
fun provideDatabase(@NonNull application: Application): AppDatabase {
fun provideDatabase(@ApplicationContext application: Context): AppDatabase {
return Room
.databaseBuilder(application, AppDatabase::class.java, "Movie.db")
.allowMainThreadQueries()
Expand Down

This file was deleted.

Loading