feat: exit handler

This commit is contained in:
tapframe 2026-04-14 19:17:00 +05:30
parent 457d95e918
commit 823716b175
4 changed files with 41 additions and 2 deletions

View file

@ -0,0 +1,9 @@
package com.nuvio.app.core.ui
import android.os.Process
import kotlin.system.exitProcess
actual fun platformExitApp() {
Process.killProcess(Process.myPid())
exitProcess(0)
}

View file

@ -80,7 +80,9 @@ import com.nuvio.app.core.sync.SyncManager
import com.nuvio.app.core.ui.NuvioNavigationBar
import com.nuvio.app.core.ui.NuvioContinueWatchingActionSheet
import com.nuvio.app.core.ui.NuvioPosterActionSheet
import com.nuvio.app.core.ui.NuvioStatusModal
import com.nuvio.app.core.ui.PlatformBackHandler
import com.nuvio.app.core.ui.platformExitApp
import com.nuvio.app.core.ui.configurePlatformImageLoader
import com.nuvio.app.core.ui.NuvioToastHost
import com.nuvio.app.core.ui.NuvioToastController
@ -421,6 +423,7 @@ private fun MainAppContent(
val hapticFeedback = LocalHapticFeedback.current
val coroutineScope = rememberCoroutineScope()
var selectedTab by rememberSaveable { mutableStateOf(AppScreenTab.Home) }
var showExitConfirmation by rememberSaveable { mutableStateOf(false) }
var selectedPosterForActions by remember { mutableStateOf<MetaPreview?>(null) }
var selectedContinueWatchingForActions by remember { mutableStateOf<ContinueWatchingItem?>(null) }
var showLibraryListPicker by remember { mutableStateOf(false) }
@ -827,8 +830,14 @@ private fun MainAppContent(
) {
composable<TabsRoute> {
PlatformBackHandler(
enabled = selectedTab != AppScreenTab.Home,
onBack = { selectedTab = AppScreenTab.Home },
enabled = true,
onBack = {
if (selectedTab != AppScreenTab.Home) {
selectedTab = AppScreenTab.Home
} else {
showExitConfirmation = !showExitConfirmation
}
},
)
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
@ -1673,6 +1682,21 @@ private fun MainAppContent(
},
)
NuvioStatusModal(
title = "Exit app",
message = "Do you want to exit the app?",
isVisible = showExitConfirmation,
confirmText = "Yes",
dismissText = "No",
onConfirm = {
showExitConfirmation = false
platformExitApp()
},
onDismiss = {
showExitConfirmation = false
},
)
androidx.compose.animation.AnimatedVisibility(
visible = !initialHomeReady || profileSwitchLoading,
enter = fadeIn(),

View file

@ -0,0 +1,3 @@
package com.nuvio.app.core.ui
expect fun platformExitApp()

View file

@ -0,0 +1,3 @@
package com.nuvio.app.core.ui
actual fun platformExitApp() = Unit