Skip to content

Commit faff570

Browse files
Merge pull request #11 from ashwini009/hilt
Migration from dagger-android to Hilt
2 parents b8ae489 + a2decf2 commit faff570

28 files changed

+74
-352
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ TvFlix consists of 3 pieces of UI right now:
99
2. Favorites
1010
3. All Shows
1111

12-
This app is under heavy development. :construction_worker: :hammer_and_wrench:
12+
This app is under development. :construction_worker: :hammer_and_wrench:
1313

1414
*Note: TvFlix is an unofficial app built only for learning and sharing the latest concepts with #AndroidDevs*
1515

@@ -18,7 +18,7 @@ This app is under heavy development. :construction_worker: :hammer_and_wrench:
1818
* The entire codebase is in [Kotlin](https://kotlinlang.org/)
1919
* Uses Kotlin [Coroutines](https://kotlinlang.org/docs/reference/coroutines/coroutines-guide.html)
2020
* Uses MVVM Architecture by [Architecture Components](https://developer.android.com/topic/libraries/architecture/). Room, LiveData, ViewModel, Paging
21-
* Uses [dagger-android](https://google.github.io/dagger/android.html) for dependency injection
21+
* Uses [Hilt Android](https://developer.android.com/training/dependency-injection/hilt-android) with [Dagger](https://dagger.dev/) for dependency injection
2222
* Unit Testing by [Mockito](https://github.com/mockito/mockito)
2323
* Tests Coroutines and architecture components like ViewModel
2424
* UI Test by [Espresso](https://developer.android.com/training/testing/espresso) based on [Robot Pattern](https://academy.realm.io/posts/kau-jake-wharton-testing-robots/)

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ apply from: "$project.rootDir/tools/pmd.gradle"
44
apply plugin: 'kotlin-android'
55
apply plugin: 'kotlin-kapt'
66
apply plugin: 'kotlin-android-extensions'
7+
apply plugin: 'dagger.hilt.android.plugin'
78

89
android {
910
compileSdkVersion versions.compile_sdk

app/dependencies.gradle

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@ dependencies {
2727
implementation deps.retrofit.moshi
2828
implementation deps.okhttp.logging_interceptor
2929

30-
// Dagger2
31-
implementation deps.dagger.main
32-
kapt deps.dagger.compiler
33-
implementation deps.dagger.android
34-
kapt deps.dagger.android_processor
35-
implementation deps.dagger.android_support
36-
3730
// Viewmodel
3831
implementation deps.lifecycle.extensions
3932
kapt deps.lifecycle.compiler
@@ -84,4 +77,9 @@ dependencies {
8477

8578
debugImplementation deps.chucker.debug
8679
releaseImplementation deps.chucker.release
80+
81+
implementation deps.hilt.android
82+
kapt deps.hilt.android_compiler
83+
implementation deps.hilt.viewmodel
84+
kapt deps.hilt.compiler
8785
}
Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,15 @@
11
package com.android.tvmaze
22

33
import androidx.multidex.MultiDexApplication
4-
import com.android.tvmaze.di.AppComponent
5-
import com.android.tvmaze.di.AppInjector
6-
import com.android.tvmaze.di.DaggerAppComponent
7-
import dagger.android.AndroidInjector
8-
import dagger.android.DispatchingAndroidInjector
9-
import dagger.android.HasAndroidInjector
4+
import dagger.hilt.android.HiltAndroidApp
105
import timber.log.Timber
11-
import javax.inject.Inject
12-
13-
class TvMazeApplication : MultiDexApplication(), HasAndroidInjector {
14-
@Inject
15-
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Any>
16-
17-
private lateinit var appComponent: AppComponent
186

7+
@HiltAndroidApp
8+
class TvMazeApplication : MultiDexApplication() {
199
override fun onCreate() {
2010
super.onCreate()
2111
if (BuildConfig.DEBUG) {
2212
Timber.plant(Timber.DebugTree())
2313
}
24-
appComponent = DaggerAppComponent.builder()
25-
.application(this)
26-
.build()
27-
appComponent.inject(this)
28-
AppInjector.init(this)
29-
}
30-
31-
override fun androidInjector(): AndroidInjector<Any> {
32-
return dispatchingAndroidInjector
3314
}
3415
}

app/src/main/java/com/android/tvmaze/base/TvMazeBaseActivity.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

app/src/main/java/com/android/tvmaze/db/TvMazeDbModule.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@ import androidx.room.Room
55
import com.android.tvmaze.db.favouriteshow.ShowDao
66
import dagger.Module
77
import dagger.Provides
8+
import dagger.hilt.InstallIn
9+
import dagger.hilt.android.components.ApplicationComponent
10+
import dagger.hilt.android.qualifiers.ApplicationContext
811

912
import javax.inject.Singleton
1013

14+
@InstallIn(ApplicationComponent::class)
1115
@Module
1216
object TvMazeDbModule {
13-
@JvmStatic
1417
@Singleton
1518
@Provides
16-
fun provideTvMazeDatabase(context: Context): TvMazeDatabase {
19+
fun provideTvMazeDatabase(@ApplicationContext context: Context): TvMazeDatabase {
1720
return Room.databaseBuilder(
1821
context,
1922
TvMazeDatabase::class.java, TvMazeDatabase.DATABASE_NAME
@@ -23,7 +26,6 @@ object TvMazeDbModule {
2326
.build()
2427
}
2528

26-
@JvmStatic
2729
@Singleton
2830
@Provides
2931
fun provideShowDao(tvMazeDatabase: TvMazeDatabase): ShowDao {

app/src/main/java/com/android/tvmaze/di/ActivityBuildersModule.kt

Lines changed: 0 additions & 26 deletions
This file was deleted.

app/src/main/java/com/android/tvmaze/di/AppComponent.kt

Lines changed: 0 additions & 30 deletions
This file was deleted.

app/src/main/java/com/android/tvmaze/di/AppInjector.kt

Lines changed: 0 additions & 71 deletions
This file was deleted.

app/src/main/java/com/android/tvmaze/di/AppModule.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import android.app.Application
44
import android.content.Context
55
import dagger.Module
66
import dagger.Provides
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.android.components.ApplicationComponent
79
import javax.inject.Singleton
810

11+
@InstallIn(ApplicationComponent::class)
912
@Module
1013
object AppModule {
1114
@Provides

0 commit comments

Comments
 (0)