fix(migrate-dialog): Fix migrate-dialog reappear before migration actual complete (#905)

refactor MigrateDialog to use rememberScreenModel for state management
This commit is contained in:
Cuong-Tran 2025-05-11 20:32:02 +07:00 committed by GitHub
parent 615c9fa259
commit 0db7b47bcf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 12 additions and 7 deletions

View file

@ -6,6 +6,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.Navigator
import eu.kanade.presentation.category.components.ChangeCategoryDialog
@ -28,7 +30,7 @@ import tachiyomi.presentation.core.i18n.stringResource
* @param dialog the dialog to show.
*/
@Composable
fun BulkFavoriteDialogs(
fun Screen.BulkFavoriteDialogs(
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
dialog: Dialog?,
) {
@ -84,6 +86,7 @@ fun BulkFavoriteDialogs(
dialog = dialog,
navigator = navigator,
state = bulkFavoriteState,
migrateScreenModel = rememberScreenModel { MigrateDialogScreenModel() },
onDismiss = bulkFavoriteScreenModel::dismissDialog,
stopRunning = bulkFavoriteScreenModel::stopRunning,
toggleSelection = bulkFavoriteScreenModel::toggleSelection,
@ -99,6 +102,7 @@ private fun ShowMigrateDialog(
dialog: Dialog.Migrate,
navigator: Navigator?,
state: BulkFavoriteScreenModel.State,
migrateScreenModel: MigrateDialogScreenModel,
onDismiss: () -> Unit,
stopRunning: () -> Unit,
toggleSelection: (Manga, toSelectedState: Boolean) -> Unit,
@ -109,7 +113,7 @@ private fun ShowMigrateDialog(
MigrateDialog(
oldManga = dialog.oldManga,
newManga = dialog.newManga,
screenModel = MigrateDialogScreenModel(),
screenModel = migrateScreenModel,
onDismissRequest = onDismiss,
onClickTitle = { navigator?.push(MangaScreen(dialog.oldManga.id)) },
onPopScreen = {

View file

@ -15,6 +15,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.platform.LocalHapticFeedback
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.core.stack.StackEvent
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow
@ -42,7 +43,7 @@ import tachiyomi.i18n.sy.SYMR
import tachiyomi.presentation.core.i18n.stringResource
@Composable
fun feedTab(
fun Screen.feedTab(
// KMK -->
screenModel: FeedScreenModel,
bulkFavoriteScreenModel: BulkFavoriteScreenModel,

View file

@ -463,7 +463,7 @@ data class BrowseSourceScreen(
MigrateDialog(
oldManga = dialog.oldManga,
newManga = dialog.newManga,
screenModel = MigrateDialogScreenModel(),
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
onDismissRequest = onDismissRequest,
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
onPopScreen = { onDismissRequest() },

View file

@ -138,7 +138,7 @@ data object HistoryTab : Tab {
MigrateDialog(
oldManga = dialog.oldManga,
newManga = dialog.newManga,
screenModel = MigrateDialogScreenModel(),
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
onDismissRequest = onDismissRequest,
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
onPopScreen = onDismissRequest,

View file

@ -467,7 +467,7 @@ class MangaScreen(
MigrateDialog(
oldManga = dialog.oldManga,
newManga = dialog.newManga,
screenModel = MigrateDialogScreenModel(),
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
onDismissRequest = onDismissRequest,
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
onPopScreen = onDismissRequest,

View file

@ -169,7 +169,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() {
MigrateDialog(
oldManga = dialog.oldManga,
newManga = dialog.newManga,
screenModel = MigrateDialogScreenModel(),
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
onDismissRequest = onDismissRequest,
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
onPopScreen = { onDismissRequest() },