Migrate to AndroidX ViewModel from Voyager ScreenModel (#3594)

This commit is contained in:
AntsyLich
2026-07-15 21:19:11 +06:00
committed by GitHub
parent ef1c529672
commit c3b99aea07
91 changed files with 1503 additions and 1091 deletions
@@ -18,14 +18,14 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.util.fastForEach
import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.rememberScreenModel
import androidx.lifecycle.viewmodel.compose.viewModel
import cafe.adriel.voyager.core.screen.Screen
import eu.kanade.domain.manga.model.hasCustomCover
import eu.kanade.domain.source.service.SourcePreferences
import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.download.DownloadManager
import kotlinx.coroutines.flow.update
import mihon.core.viewmodel.StateViewModel
import mihon.domain.migration.models.MigrationFlag
import mihon.domain.migration.usecases.MigrateMangaUseCase
import mihon.feature.common.utils.getLabel
@@ -50,11 +50,11 @@ internal fun Screen.MigrateMangaDialog(
) {
val scope = rememberCoroutineScope()
val screenModel = rememberScreenModel { MigrateDialogScreenModel() }
val viewModel = viewModel<MigrateDialogViewModel>()
LaunchedEffect(current, target) {
screenModel.init(current, target)
viewModel.init(current, target)
}
val state by screenModel.state.collectAsState()
val state by viewModel.state.collectAsState()
if (state.isMigrated) return
@@ -78,7 +78,7 @@ internal fun Screen.MigrateMangaDialog(
LabeledCheckbox(
label = stringResource(flag.getLabel()),
checked = flag in state.selectedFlags,
onCheckedChange = { screenModel.toggleSelection(flag) },
onCheckedChange = { viewModel.toggleSelection(flag) },
)
}
}
@@ -101,7 +101,7 @@ internal fun Screen.MigrateMangaDialog(
TextButton(
onClick = {
scope.launchIO {
screenModel.migrateManga(replace = false)
viewModel.migrateManga(replace = false)
withUIContext { onComplete() }
}
},
@@ -111,7 +111,7 @@ internal fun Screen.MigrateMangaDialog(
TextButton(
onClick = {
scope.launchIO {
screenModel.migrateManga(replace = true)
viewModel.migrateManga(replace = true)
withUIContext { onComplete() }
}
},
@@ -123,12 +123,12 @@ internal fun Screen.MigrateMangaDialog(
)
}
private class MigrateDialogScreenModel(
private class MigrateDialogViewModel(
private val sourcePreference: SourcePreferences = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get(),
private val migrateManga: MigrateMangaUseCase = Injekt.get(),
) : StateScreenModel<MigrateDialogScreenModel.State>(State()) {
) : StateViewModel<MigrateDialogViewModel.State>(State()) {
fun init(current: Manga, target: Manga) {
val applicableFlags = buildList {