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:
parent
615c9fa259
commit
0db7b47bcf
6 changed files with 12 additions and 7 deletions
|
|
@ -6,6 +6,8 @@ import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
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.LocalNavigator
|
||||||
import cafe.adriel.voyager.navigator.Navigator
|
import cafe.adriel.voyager.navigator.Navigator
|
||||||
import eu.kanade.presentation.category.components.ChangeCategoryDialog
|
import eu.kanade.presentation.category.components.ChangeCategoryDialog
|
||||||
|
|
@ -28,7 +30,7 @@ import tachiyomi.presentation.core.i18n.stringResource
|
||||||
* @param dialog the dialog to show.
|
* @param dialog the dialog to show.
|
||||||
*/
|
*/
|
||||||
@Composable
|
@Composable
|
||||||
fun BulkFavoriteDialogs(
|
fun Screen.BulkFavoriteDialogs(
|
||||||
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
|
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
|
||||||
dialog: Dialog?,
|
dialog: Dialog?,
|
||||||
) {
|
) {
|
||||||
|
|
@ -84,6 +86,7 @@ fun BulkFavoriteDialogs(
|
||||||
dialog = dialog,
|
dialog = dialog,
|
||||||
navigator = navigator,
|
navigator = navigator,
|
||||||
state = bulkFavoriteState,
|
state = bulkFavoriteState,
|
||||||
|
migrateScreenModel = rememberScreenModel { MigrateDialogScreenModel() },
|
||||||
onDismiss = bulkFavoriteScreenModel::dismissDialog,
|
onDismiss = bulkFavoriteScreenModel::dismissDialog,
|
||||||
stopRunning = bulkFavoriteScreenModel::stopRunning,
|
stopRunning = bulkFavoriteScreenModel::stopRunning,
|
||||||
toggleSelection = bulkFavoriteScreenModel::toggleSelection,
|
toggleSelection = bulkFavoriteScreenModel::toggleSelection,
|
||||||
|
|
@ -99,6 +102,7 @@ private fun ShowMigrateDialog(
|
||||||
dialog: Dialog.Migrate,
|
dialog: Dialog.Migrate,
|
||||||
navigator: Navigator?,
|
navigator: Navigator?,
|
||||||
state: BulkFavoriteScreenModel.State,
|
state: BulkFavoriteScreenModel.State,
|
||||||
|
migrateScreenModel: MigrateDialogScreenModel,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
stopRunning: () -> Unit,
|
stopRunning: () -> Unit,
|
||||||
toggleSelection: (Manga, toSelectedState: Boolean) -> Unit,
|
toggleSelection: (Manga, toSelectedState: Boolean) -> Unit,
|
||||||
|
|
@ -109,7 +113,7 @@ private fun ShowMigrateDialog(
|
||||||
MigrateDialog(
|
MigrateDialog(
|
||||||
oldManga = dialog.oldManga,
|
oldManga = dialog.oldManga,
|
||||||
newManga = dialog.newManga,
|
newManga = dialog.newManga,
|
||||||
screenModel = MigrateDialogScreenModel(),
|
screenModel = migrateScreenModel,
|
||||||
onDismissRequest = onDismiss,
|
onDismissRequest = onDismiss,
|
||||||
onClickTitle = { navigator?.push(MangaScreen(dialog.oldManga.id)) },
|
onClickTitle = { navigator?.push(MangaScreen(dialog.oldManga.id)) },
|
||||||
onPopScreen = {
|
onPopScreen = {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||||
|
import cafe.adriel.voyager.core.screen.Screen
|
||||||
import cafe.adriel.voyager.core.stack.StackEvent
|
import cafe.adriel.voyager.core.stack.StackEvent
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||||
|
|
@ -42,7 +43,7 @@ import tachiyomi.i18n.sy.SYMR
|
||||||
import tachiyomi.presentation.core.i18n.stringResource
|
import tachiyomi.presentation.core.i18n.stringResource
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun feedTab(
|
fun Screen.feedTab(
|
||||||
// KMK -->
|
// KMK -->
|
||||||
screenModel: FeedScreenModel,
|
screenModel: FeedScreenModel,
|
||||||
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
|
bulkFavoriteScreenModel: BulkFavoriteScreenModel,
|
||||||
|
|
|
||||||
|
|
@ -463,7 +463,7 @@ data class BrowseSourceScreen(
|
||||||
MigrateDialog(
|
MigrateDialog(
|
||||||
oldManga = dialog.oldManga,
|
oldManga = dialog.oldManga,
|
||||||
newManga = dialog.newManga,
|
newManga = dialog.newManga,
|
||||||
screenModel = MigrateDialogScreenModel(),
|
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
||||||
onPopScreen = { onDismissRequest() },
|
onPopScreen = { onDismissRequest() },
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ data object HistoryTab : Tab {
|
||||||
MigrateDialog(
|
MigrateDialog(
|
||||||
oldManga = dialog.oldManga,
|
oldManga = dialog.oldManga,
|
||||||
newManga = dialog.newManga,
|
newManga = dialog.newManga,
|
||||||
screenModel = MigrateDialogScreenModel(),
|
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
||||||
onPopScreen = onDismissRequest,
|
onPopScreen = onDismissRequest,
|
||||||
|
|
|
||||||
|
|
@ -467,7 +467,7 @@ class MangaScreen(
|
||||||
MigrateDialog(
|
MigrateDialog(
|
||||||
oldManga = dialog.oldManga,
|
oldManga = dialog.oldManga,
|
||||||
newManga = dialog.newManga,
|
newManga = dialog.newManga,
|
||||||
screenModel = MigrateDialogScreenModel(),
|
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
||||||
onPopScreen = onDismissRequest,
|
onPopScreen = onDismissRequest,
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() {
|
||||||
MigrateDialog(
|
MigrateDialog(
|
||||||
oldManga = dialog.oldManga,
|
oldManga = dialog.oldManga,
|
||||||
newManga = dialog.newManga,
|
newManga = dialog.newManga,
|
||||||
screenModel = MigrateDialogScreenModel(),
|
screenModel = rememberScreenModel { MigrateDialogScreenModel() },
|
||||||
onDismissRequest = onDismissRequest,
|
onDismissRequest = onDismissRequest,
|
||||||
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
onClickTitle = { navigator.push(MangaScreen(dialog.oldManga.id)) },
|
||||||
onPopScreen = { onDismissRequest() },
|
onPopScreen = { onDismissRequest() },
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue