mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
fix: Crashes caused by cab40214d2
Screen arguments need to be parcelable
This commit is contained in:
parent
c6a86d773b
commit
cd4079aa4b
3 changed files with 17 additions and 7 deletions
|
@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.ui.base.controller.BaseComposeController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
||||||
import eu.kanade.tachiyomi.util.compose.LocalAlertDialog
|
import eu.kanade.tachiyomi.util.compose.LocalAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.compose.LocalBackPress
|
import eu.kanade.tachiyomi.util.compose.LocalBackPress
|
||||||
|
import eu.kanade.tachiyomi.util.compose.LocalRouter
|
||||||
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
import eu.kanade.tachiyomi.util.system.materialAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.view.setNegativeButton
|
import eu.kanade.tachiyomi.util.view.setNegativeButton
|
||||||
import eu.kanade.tachiyomi.util.view.setPositiveButton
|
import eu.kanade.tachiyomi.util.view.setPositiveButton
|
||||||
|
@ -32,13 +33,12 @@ class AboutController : BaseComposeController() {
|
||||||
@Composable
|
@Composable
|
||||||
override fun ScreenContent() {
|
override fun ScreenContent() {
|
||||||
Navigator(
|
Navigator(
|
||||||
screen = AboutScreen { body, url, isBeta ->
|
screen = AboutScreen(),
|
||||||
NewUpdateDialogController(body, url, isBeta).showDialog(router)
|
|
||||||
},
|
|
||||||
content = {
|
content = {
|
||||||
CompositionLocalProvider(
|
CompositionLocalProvider(
|
||||||
LocalAlertDialog provides ComposableAlertDialog(null),
|
LocalAlertDialog provides ComposableAlertDialog(null),
|
||||||
LocalBackPress provides router::handleBack,
|
LocalBackPress provides router::handleBack,
|
||||||
|
LocalRouter provides router,
|
||||||
) {
|
) {
|
||||||
ScreenTransition(
|
ScreenTransition(
|
||||||
navigator = it,
|
navigator = it,
|
||||||
|
|
|
@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.ProvidableCompositionLocal
|
import androidx.compose.runtime.ProvidableCompositionLocal
|
||||||
import androidx.compose.runtime.compositionLocalOf
|
import androidx.compose.runtime.compositionLocalOf
|
||||||
import androidx.compose.runtime.staticCompositionLocalOf
|
import androidx.compose.runtime.staticCompositionLocalOf
|
||||||
|
import com.bluelinelabs.conductor.Router
|
||||||
import yokai.domain.ComposableAlertDialog
|
import yokai.domain.ComposableAlertDialog
|
||||||
|
|
||||||
val <T> ProvidableCompositionLocal<T?>.currentOrThrow
|
val <T> ProvidableCompositionLocal<T?>.currentOrThrow
|
||||||
|
@ -12,3 +13,8 @@ val <T> ProvidableCompositionLocal<T?>.currentOrThrow
|
||||||
|
|
||||||
val LocalBackPress: ProvidableCompositionLocal<(() -> Unit)?> = staticCompositionLocalOf { null }
|
val LocalBackPress: ProvidableCompositionLocal<(() -> Unit)?> = staticCompositionLocalOf { null }
|
||||||
val LocalAlertDialog: ProvidableCompositionLocal<ComposableAlertDialog?> = compositionLocalOf { null }
|
val LocalAlertDialog: ProvidableCompositionLocal<ComposableAlertDialog?> = compositionLocalOf { null }
|
||||||
|
@Deprecated(
|
||||||
|
message = "Scheduled for removal once Conductor is fully replaced by Voyager",
|
||||||
|
replaceWith = ReplaceWith("LocalNavigator", "cafe.adriel.voyager.navigator.LocalNavigator"),
|
||||||
|
)
|
||||||
|
val LocalRouter: ProvidableCompositionLocal<Router?> = compositionLocalOf { null }
|
||||||
|
|
|
@ -27,6 +27,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
|
import com.bluelinelabs.conductor.Router
|
||||||
import dev.icerock.moko.resources.compose.stringResource
|
import dev.icerock.moko.resources.compose.stringResource
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.core.storage.preference.asDateFormat
|
import eu.kanade.tachiyomi.core.storage.preference.asDateFormat
|
||||||
|
@ -35,7 +36,9 @@ import eu.kanade.tachiyomi.data.updater.AppUpdateChecker
|
||||||
import eu.kanade.tachiyomi.data.updater.AppUpdateNotifier
|
import eu.kanade.tachiyomi.data.updater.AppUpdateNotifier
|
||||||
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
|
import eu.kanade.tachiyomi.data.updater.AppUpdateResult
|
||||||
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
|
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
|
||||||
|
import eu.kanade.tachiyomi.ui.more.AboutController.NewUpdateDialogController
|
||||||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||||
|
import eu.kanade.tachiyomi.util.compose.LocalRouter
|
||||||
import eu.kanade.tachiyomi.util.compose.currentOrThrow
|
import eu.kanade.tachiyomi.util.compose.currentOrThrow
|
||||||
import eu.kanade.tachiyomi.util.lang.toTimestampString
|
import eu.kanade.tachiyomi.util.lang.toTimestampString
|
||||||
import eu.kanade.tachiyomi.util.system.isOnline
|
import eu.kanade.tachiyomi.util.system.isOnline
|
||||||
|
@ -60,11 +63,12 @@ import yokai.presentation.settings.SettingsScaffold
|
||||||
import yokai.util.Screen
|
import yokai.util.Screen
|
||||||
import yokai.util.lang.getString
|
import yokai.util.lang.getString
|
||||||
|
|
||||||
class AboutScreen(private val showNewUpdateDialog: (String, String, Boolean?) -> Unit) : Screen() {
|
class AboutScreen : Screen() {
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val navigator = LocalNavigator.currentOrThrow
|
val navigator = LocalNavigator.currentOrThrow
|
||||||
|
val router = LocalRouter.currentOrThrow
|
||||||
val uriHandler = LocalUriHandler.current
|
val uriHandler = LocalUriHandler.current
|
||||||
|
|
||||||
val snackbarHostState = remember { SnackbarHostState() }
|
val snackbarHostState = remember { SnackbarHostState() }
|
||||||
|
@ -105,7 +109,7 @@ class AboutScreen(private val showNewUpdateDialog: (String, String, Boolean?) ->
|
||||||
onPreferenceClick = {
|
onPreferenceClick = {
|
||||||
if (context.isOnline()) {
|
if (context.isOnline()) {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
context.checkVersion()
|
context.checkVersion(router)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
context.toast(MR.strings.no_network_connection)
|
context.toast(MR.strings.no_network_connection)
|
||||||
|
@ -189,7 +193,7 @@ class AboutScreen(private val showNewUpdateDialog: (String, String, Boolean?) ->
|
||||||
else -> "Release ${BuildConfig.VERSION_NAME}"
|
else -> "Release ${BuildConfig.VERSION_NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun Context.checkVersion() {
|
private suspend fun Context.checkVersion(router: Router) {
|
||||||
val updateChecker = AppUpdateChecker()
|
val updateChecker = AppUpdateChecker()
|
||||||
|
|
||||||
withUIContext { toast(MR.strings.searching_for_updates) }
|
withUIContext { toast(MR.strings.searching_for_updates) }
|
||||||
|
@ -211,7 +215,7 @@ class AboutScreen(private val showNewUpdateDialog: (String, String, Boolean?) ->
|
||||||
// Create confirmation window
|
// Create confirmation window
|
||||||
withUIContext {
|
withUIContext {
|
||||||
AppUpdateNotifier.releasePageUrl = result.release.releaseLink
|
AppUpdateNotifier.releasePageUrl = result.release.releaseLink
|
||||||
showNewUpdateDialog(body, url, isBeta)
|
NewUpdateDialogController(body, url, isBeta).showDialog(router)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is AppUpdateResult.NoNewUpdate -> {
|
is AppUpdateResult.NoNewUpdate -> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue