Skip to content

Commit d38ca97

Browse files
committed
migration: dagger to hilt
1 parent f625039 commit d38ca97

12 files changed

Lines changed: 25 additions & 107 deletions

File tree

app/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ plugins {
22
alias(libs.plugins.android.application)
33
alias(libs.plugins.kotlin.android)
44
id("kotlin-kapt")
5+
id("com.google.dagger.hilt.android")
56
}
67

78
android {
@@ -60,14 +61,14 @@ dependencies {
6061
implementation(libs.retrofit)
6162
implementation(libs.converter.gson)
6263

63-
implementation(libs.dagger)
64-
kapt(libs.dagger.compiler)
65-
6664
implementation(libs.androidx.room.runtime)
6765
kapt(libs.androidx.room.compiler)
6866
implementation(libs.androidx.room.ktx)
6967

7068
implementation(libs.androidx.lifecycle.viewmodel.ktx)
7169

7270
implementation(libs.coil)
71+
72+
implementation(libs.hilt.android)
73+
kapt(libs.hilt.compiler)
7374
}

app/src/main/java/com/example/cfseeker/MainActivity.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.example.cfseeker
22

33
import android.os.Bundle
44
import androidx.activity.enableEdgeToEdge
5+
import androidx.activity.viewModels
56
import androidx.appcompat.app.AppCompatActivity
67
import androidx.core.view.ViewCompat
78
import androidx.core.view.WindowInsetsCompat
@@ -10,21 +11,18 @@ import androidx.lifecycle.lifecycleScope
1011
import androidx.lifecycle.repeatOnLifecycle
1112
import androidx.recyclerview.widget.LinearLayoutManager
1213
import com.example.cfseeker.databinding.ActivityMainBinding
13-
import com.example.cfseeker.di.component.DaggerActivityComponent
14-
import com.example.cfseeker.di.module.ActivityModule
1514
import com.example.cfseeker.ui.UserAdapter
1615
import com.example.cfseeker.ui.UserViewModel
1716
import com.example.cfseeker.ui.base.UiState
17+
import dagger.hilt.android.AndroidEntryPoint
1818
import kotlinx.coroutines.launch
19-
import javax.inject.Inject
2019

20+
@AndroidEntryPoint
2121
class MainActivity : AppCompatActivity() {
22-
@Inject
23-
lateinit var viewModel: UserViewModel
22+
private val viewModel: UserViewModel by viewModels()
2423
private lateinit var binding: ActivityMainBinding
2524
override fun onCreate(savedInstanceState: Bundle?) {
2625
super.onCreate(savedInstanceState)
27-
injectDependencies()
2826
enableEdgeToEdge()
2927
binding = ActivityMainBinding.inflate(layoutInflater)
3028
setContentView(binding.root)
@@ -58,13 +56,4 @@ class MainActivity : AppCompatActivity() {
5856
}
5957
}
6058
}
61-
62-
private fun injectDependencies() {
63-
DaggerActivityComponent
64-
.builder()
65-
.activityModule(ActivityModule(this))
66-
.applicationComponent((application as MyApplication).applicationComponent)
67-
.build()
68-
.inject(this)
69-
}
7059
}
Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,7 @@
11
package com.example.cfseeker
22

33
import android.app.Application
4-
import com.example.cfseeker.di.component.ApplicationComponent
5-
import com.example.cfseeker.di.component.DaggerApplicationComponent
6-
import com.example.cfseeker.di.module.ApplicationModule
4+
import dagger.hilt.android.HiltAndroidApp
75

8-
class MyApplication: Application() {
9-
lateinit var applicationComponent: ApplicationComponent
10-
override fun onCreate() {
11-
super.onCreate()
12-
applicationComponent = DaggerApplicationComponent
13-
.builder()
14-
.applicationModule(ApplicationModule(this))
15-
.build()
16-
applicationComponent.inject(this)
17-
}
18-
}
6+
@HiltAndroidApp
7+
class MyApplication: Application()

app/src/main/java/com/example/cfseeker/di/component/ActivityComponent.kt

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

app/src/main/java/com/example/cfseeker/di/component/ApplicationComponent.kt

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

app/src/main/java/com/example/cfseeker/di/module/ActivityModule.kt

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

app/src/main/java/com/example/cfseeker/di/module/ApplicationModule.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.example.cfseeker.di.module
22

3+
import android.content.Context
34
import androidx.room.Room
4-
import com.example.cfseeker.MyApplication
55
import com.example.cfseeker.data.local.AppDatabase
66
import com.example.cfseeker.data.local.AppDatabaseService
77
import com.example.cfseeker.data.local.DatabaseService
88
import com.example.cfseeker.data.remote.api.NetworkService
99
import dagger.Module
1010
import dagger.Provides
11+
import dagger.hilt.InstallIn
12+
import dagger.hilt.android.qualifiers.ApplicationContext
13+
import dagger.hilt.components.SingletonComponent
1114
import retrofit2.Retrofit
1215
import retrofit2.converter.gson.GsonConverterFactory
1316
import javax.inject.Singleton
1417

1518
@Module
16-
class ApplicationModule(private val application: MyApplication) {
19+
@InstallIn(SingletonComponent::class)
20+
object ApplicationModule {
1721
@Singleton
1822
@Provides
1923
fun provideNetworkService(): NetworkService {
@@ -27,9 +31,9 @@ class ApplicationModule(private val application: MyApplication) {
2731

2832
@Singleton
2933
@Provides
30-
fun provideAppDatabase(): AppDatabase {
34+
fun provideAppDatabase(@ApplicationContext context: Context): AppDatabase {
3135
return Room.databaseBuilder(
32-
application.applicationContext,
36+
context,
3337
AppDatabase::class.java,
3438
"app_database")
3539
.build()

app/src/main/java/com/example/cfseeker/di/scopes.kt

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

app/src/main/java/com/example/cfseeker/ui/UserViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ package com.example.cfseeker.ui
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5-
import com.example.cfseeker.data.local.entity.RatingChangeEntity
6-
import com.example.cfseeker.data.local.entity.UserEntity
75
import com.example.cfseeker.data.local.entity.UserRatingChanges
86
import com.example.cfseeker.data.repository.UserRepository
97
import com.example.cfseeker.ui.base.UiState
8+
import dagger.hilt.android.lifecycle.HiltViewModel
109
import kotlinx.coroutines.Dispatchers
1110
import kotlinx.coroutines.flow.MutableStateFlow
1211
import kotlinx.coroutines.flow.asStateFlow
@@ -15,6 +14,7 @@ import kotlinx.coroutines.flow.flowOn
1514
import kotlinx.coroutines.launch
1615
import javax.inject.Inject
1716

17+
@HiltViewModel
1818
class UserViewModel @Inject constructor(
1919
private val repository: UserRepository,
2020
): ViewModel() {

app/src/main/java/com/example/cfseeker/ui/base/ViewModelProviderFactory.kt

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

0 commit comments

Comments
 (0)