Migrate from Bucket

This commit is contained in:
2024-10-28 20:47:35 +00:00
commit 445e130ebf
84 changed files with 4416 additions and 0 deletions
@@ -0,0 +1,54 @@
package ica.tees.mywallet.components
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.OnBackPressedDispatcherOwner
import androidx.compose.runtime.*
import androidx.compose.ui.platform.LocalLifecycleOwner
private val LocalBackPressedDispatcher =
staticCompositionLocalOf<OnBackPressedDispatcherOwner?> { null }
private class ComposableBackNavigationHandler(enabled: Boolean) : OnBackPressedCallback(enabled) {
lateinit var onBackPressed: () -> Unit
override fun handleOnBackPressed() {
onBackPressed()
}
}
@Composable
internal fun ComposableHandler(
enabled: Boolean = true,
onBackPressed: () -> Unit
) {
val dispatcher = (LocalBackPressedDispatcher.current ?: return).onBackPressedDispatcher
val handler = remember { ComposableBackNavigationHandler(enabled) }
DisposableEffect(dispatcher) {
dispatcher.addCallback(handler)
onDispose { handler.remove() }
}
LaunchedEffect(enabled) {
handler.isEnabled = enabled
handler.onBackPressed = onBackPressed
}
}
@Composable
internal fun SystemBackButtonHandler(onBackPressed: () -> Unit) {
CompositionLocalProvider(
LocalBackPressedDispatcher provides LocalLifecycleOwner.current as ComponentActivity
) {
ComposableHandler {
onBackPressed()
}
}
}