Skip to content

Commit 547fcbd

Browse files
author
murat.cakir
committed
Conversion from Dagger to Hilt
1 parent dee47d6 commit 547fcbd

36 files changed

Lines changed: 111 additions & 291 deletions

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-kapt'
4+
apply plugin: 'dagger.hilt.android.plugin'
45
apply plugin: 'androidx.navigation.safeargs'
56
apply from: "$rootDir/config/git-hooks.gradle.kts"
67
apply from: "$rootDir/config/detekt.gradle"
@@ -108,7 +109,7 @@ dependencies {
108109
implementation androidx
109110
implementation common
110111
implementation network
111-
implementation dagger
112+
implementation hiltt
112113

113114
kapt commonKapt
114115
debugImplementation commonDebug

app/src/main/kotlin/com/adesso/movee/application/MainApplication.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.adesso.movee.application
22

3+
import android.app.Application
34
import com.adesso.movee.BuildConfig
4-
import com.adesso.movee.internal.injection.DaggerApplication
55
import com.adesso.movee.internal.util.TimberTree
6+
import dagger.hilt.android.HiltAndroidApp
67
import timber.log.Timber
78

8-
class MainApplication : DaggerApplication() {
9+
@HiltAndroidApp
10+
class MainApplication : Application() {
911

1012
override fun onCreate() {
1113
super.onCreate()
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.adesso.movee.base
22

3+
import androidx.appcompat.app.AppCompatActivity
34
import androidx.lifecycle.ViewModelProvider
45
import com.adesso.movee.internal.util.functional.lazyThreadSafetyNone
5-
import dagger.android.support.DaggerAppCompatActivity
66
import java.lang.reflect.ParameterizedType
77
import javax.inject.Inject
88

9-
abstract class BaseActivity<VM : BaseAndroidViewModel> : DaggerAppCompatActivity() {
9+
abstract class BaseActivity<VM : BaseAndroidViewModel> : AppCompatActivity() {
1010

1111
@Inject
1212
lateinit var viewModelFactory: ViewModelProvider.Factory
1313

1414
@Suppress("UNCHECKED_CAST")
1515
protected val viewModel by lazyThreadSafetyNone {
16-
val persistentViewModelClass = (javaClass.genericSuperclass as ParameterizedType)
17-
.actualTypeArguments[0] as Class<VM>
18-
return@lazyThreadSafetyNone ViewModelProvider(this, viewModelFactory)
19-
.get(persistentViewModelClass)
16+
val persistentViewModelClass =
17+
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VM>
18+
return@lazyThreadSafetyNone ViewModelProvider(this, viewModelFactory).get(
19+
persistentViewModelClass
20+
)
2021
}
2122
}

app/src/main/kotlin/com/adesso/movee/base/BaseBottomSheetDialogFragment.kt

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.adesso.movee.base
22

3-
import android.content.Context
43
import android.os.Bundle
54
import android.view.LayoutInflater
65
import android.view.View
@@ -26,18 +25,11 @@ import com.adesso.movee.navigation.NavigationCommand
2625
import com.adesso.movee.scene.main.MainActivity
2726
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
2827
import com.google.android.material.snackbar.Snackbar
29-
import dagger.android.AndroidInjector
30-
import dagger.android.DispatchingAndroidInjector
31-
import dagger.android.HasAndroidInjector
32-
import dagger.android.support.AndroidSupportInjection
3328
import java.lang.reflect.ParameterizedType
3429
import javax.inject.Inject
3530

3631
abstract class BaseBottomSheetDialogFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> :
37-
BottomSheetDialogFragment(), HasAndroidInjector {
38-
39-
@Inject
40-
lateinit var androidInjector: DispatchingAndroidInjector<Any>
32+
BottomSheetDialogFragment() {
4133

4234
@Inject
4335
lateinit var viewModelFactory: ViewModelProvider.Factory
@@ -74,13 +66,6 @@ abstract class BaseBottomSheetDialogFragment<VM : BaseAndroidViewModel, B : View
7466
return navGraphViewModels(navGraphId) { viewModelFactory }
7567
}
7668

77-
override fun onAttach(context: Context) {
78-
AndroidSupportInjection.inject(this)
79-
super.onAttach(context)
80-
}
81-
82-
override fun androidInjector(): AndroidInjector<Any> = androidInjector
83-
8469
override fun onActivityCreated(savedInstanceState: Bundle?) {
8570
super.onActivityCreated(savedInstanceState)
8671

app/src/main/kotlin/com/adesso/movee/base/BaseFragment.kt

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.annotation.LayoutRes
99
import androidx.core.net.toUri
1010
import androidx.databinding.DataBindingUtil
1111
import androidx.databinding.ViewDataBinding
12+
import androidx.fragment.app.Fragment
1213
import androidx.fragment.app.activityViewModels
1314
import androidx.fragment.app.viewModels
1415
import androidx.lifecycle.ViewModel
@@ -24,12 +25,10 @@ import com.adesso.movee.internal.util.functional.lazyThreadSafetyNone
2425
import com.adesso.movee.navigation.NavigationCommand
2526
import com.adesso.movee.scene.main.MainActivity
2627
import com.google.android.material.snackbar.Snackbar
27-
import dagger.android.support.DaggerFragment
2828
import java.lang.reflect.ParameterizedType
2929
import javax.inject.Inject
3030

31-
abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> :
32-
DaggerFragment() {
31+
abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> : Fragment() {
3332

3433
@Inject
3534
lateinit var viewModelFactory: ViewModelProvider.Factory
@@ -43,10 +42,11 @@ abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> :
4342

4443
@Suppress("UNCHECKED_CAST")
4544
protected open val viewModel by lazyThreadSafetyNone {
46-
val persistentViewModelClass = (javaClass.genericSuperclass as ParameterizedType)
47-
.actualTypeArguments[0] as Class<VM>
48-
return@lazyThreadSafetyNone ViewModelProvider(this, viewModelFactory)
49-
.get(persistentViewModelClass)
45+
val persistentViewModelClass =
46+
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<VM>
47+
return@lazyThreadSafetyNone ViewModelProvider(this, viewModelFactory).get(
48+
persistentViewModelClass
49+
)
5050
}
5151

5252
protected inline fun <reified VM : ViewModel> activityViewModels(): Lazy<VM> {
@@ -100,16 +100,19 @@ abstract class BaseFragment<VM : BaseAndroidViewModel, B : ViewDataBinding> :
100100
is NavigationCommand.ToDirection -> {
101101
findNavController().navigate(command.directions, getExtras())
102102
}
103+
103104
is NavigationCommand.ToDeepLink -> {
104-
(activity as? MainActivity)
105-
?.navController
106-
?.navigate(command.deepLink.toUri(), null, getExtras())
105+
(activity as? MainActivity)?.navController?.navigate(
106+
command.deepLink.toUri(), null, getExtras()
107+
)
107108
}
109+
108110
is NavigationCommand.Popup -> {
109111
with(command) {
110112
context?.showPopup(model, callback)
111113
}
112114
}
115+
113116
is NavigationCommand.Back -> findNavController().navigateUp()
114117
}
115118
}

app/src/main/kotlin/com/adesso/movee/internal/injection/DaggerApplication.kt

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

app/src/main/kotlin/com/adesso/movee/internal/injection/component/AppComponent.kt

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

app/src/main/kotlin/com/adesso/movee/internal/injection/module/ActivitiesModule.kt

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

app/src/main/kotlin/com/adesso/movee/internal/injection/module/AppModule.kt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,19 @@ package com.adesso.movee.internal.injection.module
22

33
import android.app.Application
44
import android.content.Context
5-
import com.adesso.movee.internal.injection.DaggerApplication
65
import dagger.Module
76
import dagger.Provides
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.components.SingletonComponent
89
import javax.inject.Singleton
910

1011
@Module(includes = [MoshiModule::class])
11-
internal class AppModule {
12+
@InstallIn(SingletonComponent::class)
13+
object AppModule {
1214

1315
@Provides
1416
@Singleton
15-
internal fun provideApplicationContext(application: DaggerApplication): Context {
17+
fun provideApplicationContext(application: Application): Context {
1618
return application.applicationContext
1719
}
18-
19-
@Provides
20-
@Singleton
21-
internal fun provideApplication(application: DaggerApplication): Application {
22-
return application
23-
}
2420
}

app/src/main/kotlin/com/adesso/movee/internal/injection/module/CacheModule.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import android.content.SharedPreferences
55
import androidx.preference.PreferenceManager
66
import dagger.Module
77
import dagger.Provides
8+
import dagger.hilt.InstallIn
9+
import dagger.hilt.components.SingletonComponent
810

911
@Module
12+
@InstallIn(SingletonComponent::class)
1013
object CacheModule {
1114

1215
@Provides
13-
@JvmStatic
1416
fun provideSharedPreferences(application: Application): SharedPreferences {
1517
return PreferenceManager.getDefaultSharedPreferences(
1618
application.applicationContext

0 commit comments

Comments
 (0)