Skip to content

Commit 5fa4806

Browse files
committed
(chore) Lift out viewModelScope
1 parent 3e058d8 commit 5fa4806

3 files changed

Lines changed: 32 additions & 4 deletions

File tree

buildSrc/src/main/kotlin/Libs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
object Libs {
22

33
const val navigationVersion = "2.5.1"
4-
const val lifecycleVersion = "2.6.0"
4+
const val lifecycleVersion = "2.8.0"
55
const val hiltVersion = "2.50"
66
const val androidxHiltVersion = "1.2.0"
77
const val dataStoreVersion = "1.0.0"
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.flamyoad.common.di
2+
3+
import dagger.Module
4+
import dagger.Provides
5+
import dagger.hilt.InstallIn
6+
import dagger.hilt.android.components.ViewModelComponent
7+
import dagger.hilt.android.scopes.ViewModelScoped
8+
import kotlinx.coroutines.CoroutineScope
9+
import kotlinx.coroutines.Dispatchers
10+
import kotlinx.coroutines.SupervisorJob
11+
import javax.inject.Named
12+
13+
const val ViewModelCoroutineScope = "ViewModelCoroutineScope"
14+
15+
@Module
16+
@InstallIn(ViewModelComponent::class)
17+
class ViewModelCoroutinesModule {
18+
19+
@Named(ViewModelCoroutineScope)
20+
@ViewModelScoped
21+
@Provides
22+
fun provideViewModelCoroutineScope(): CoroutineScope {
23+
return CoroutineScope(Dispatchers.Main + SupervisorJob())
24+
}
25+
}

explorer-impl/src/main/java/com/flamyoad/explorer_impl/ui/HomePageViewModel.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
package com.flamyoad.explorer_impl.ui
22

3-
import android.os.Environment
43
import androidx.lifecycle.ViewModel
54
import androidx.lifecycle.viewModelScope
5+
import com.flamyoad.common.di.ViewModelCoroutineScope
66
import com.flamyoad.file_scanner.DirectoryProvider
77
import dagger.hilt.android.lifecycle.HiltViewModel
8+
import kotlinx.coroutines.CoroutineScope
89
import kotlinx.coroutines.flow.SharingStarted
910
import kotlinx.coroutines.flow.StateFlow
1011
import kotlinx.coroutines.flow.stateIn
1112
import java.io.File
1213
import javax.inject.Inject
14+
import javax.inject.Named
1315

1416
@HiltViewModel
1517
internal class HomePageViewModel @Inject constructor(
16-
private val directoryProvider: DirectoryProvider
17-
) : ViewModel() {
18+
private val directoryProvider: DirectoryProvider,
19+
@Named(ViewModelCoroutineScope) vmCoroutineScope: CoroutineScope,
20+
) : ViewModel(vmCoroutineScope) {
1821

1922
val rootDirectories: StateFlow<List<File>> = directoryProvider.rootDirectories()
2023
.stateIn(

0 commit comments

Comments
 (0)