diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index 8f3c187e..0ff461cd 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -65,6 +65,7 @@ fun LobstersApp( val coroutineScope = rememberCoroutineScope() val postActions = rememberPostActions(urlLauncher, navController, viewModel) val currentDestination by currentNavigationDestination(navController) + val context = LocalContext.current val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems() val newestPosts = viewModel.newestPosts.collectAsLazyPagingItems() @@ -128,7 +129,9 @@ fun LobstersApp( backgroundColor = systemBarsColor, navigationIcon = { if (navItems.none { it.route == currentDestination }) { - IconButton(onClick = { navController.popBackStack() }) { + IconButton( + onClick = { if (!navController.popBackStack()) context.getActivity()?.finish() } + ) { Icon( painter = ClawIcons.ArrowBack, contentDescription = "Go back to previous screen", diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt index 10612d50..78e90d53 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt @@ -1,7 +1,9 @@ package dev.msfjarvis.claw.android.ui import android.content.Context +import android.content.ContextWrapper import android.os.Build +import androidx.activity.ComponentActivity import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition import androidx.compose.animation.core.FastOutLinearInEasing @@ -48,6 +50,14 @@ fun slideOutAnimation(): ExitTransition { ) } +fun Context.getActivity(): ComponentActivity? { + return when (this) { + is ComponentActivity -> this + is ContextWrapper -> baseContext.getActivity() + else -> null + } +} + /** * Parses a given [String] into a [LocalDateTime]. This method is only intended to be used for dates * in the format returned by the Lobsters API, and is not a general purpose parsing solution.