From 7d936668e412fc6196ab8b77671f2471cbcf04aa Mon Sep 17 00:00:00 2001 From: kosenda Date: Thu, 17 Aug 2023 00:01:41 +0900 Subject: [PATCH 1/3] bug-fix: prevent multiple clicks back button --- .../confsched2023/sessions/component/BookmarkTopArea.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt index ffcfa3135..167c277c6 100644 --- a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt +++ b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt @@ -20,7 +20,9 @@ import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.lerp import androidx.compose.ui.text.TextStyle @@ -98,6 +100,8 @@ fun BookmarkTopArea( fraction, ) + var enabledBackPress by remember { mutableStateOf(true) } + Box( modifier = modifier .height(topBarHeight) @@ -116,9 +120,10 @@ fun BookmarkTopArea( contentDescription = null, modifier = Modifier .size(24.dp) - .clickable { + .clickable(enabled = enabledBackPress) { + enabledBackPress = false onBackPressClick() - }, + } ) Text( text = SessionsStrings.Bookmark.asString(), From ae7c07d38a02c33bd9b600fe11dd027a52f8a2b5 Mon Sep 17 00:00:00 2001 From: kosenda Date: Thu, 17 Aug 2023 00:16:59 +0900 Subject: [PATCH 2/3] chore: add last comma --- .../confsched2023/sessions/component/BookmarkTopArea.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt index 167c277c6..1dcd68358 100644 --- a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt +++ b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt @@ -123,7 +123,7 @@ fun BookmarkTopArea( .clickable(enabled = enabledBackPress) { enabledBackPress = false onBackPressClick() - } + }, ) Text( text = SessionsStrings.Bookmark.asString(), From 6aafb52ac0ddb1475a38f51b21ef60c743b7737d Mon Sep 17 00:00:00 2001 From: kosenda Date: Thu, 17 Aug 2023 01:09:11 +0900 Subject: [PATCH 3/3] fix: change approach --- .../sessions/component/BookmarkTopArea.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt index 1dcd68358..eb4504128 100644 --- a/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt +++ b/feature/sessions/src/main/java/io/github/droidkaigi/confsched2023/sessions/component/BookmarkTopArea.kt @@ -20,17 +20,17 @@ import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.lerp +import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.lerp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.lerp import androidx.compose.ui.unit.sp +import androidx.lifecycle.Lifecycle import io.github.droidkaigi.confsched2023.sessions.SessionsStrings import kotlin.math.min @@ -100,7 +100,7 @@ fun BookmarkTopArea( fraction, ) - var enabledBackPress by remember { mutableStateOf(true) } + val lifecycleOwner = LocalLifecycleOwner.current Box( modifier = modifier @@ -120,9 +120,13 @@ fun BookmarkTopArea( contentDescription = null, modifier = Modifier .size(24.dp) - .clickable(enabled = enabledBackPress) { - enabledBackPress = false - onBackPressClick() + .clickable { + // Ignore click events when you've started navigating to another screen + // https://stackoverflow.com/a/76386604/4339442 + val currentState = lifecycleOwner.lifecycle.currentState + if (currentState.isAtLeast(Lifecycle.State.RESUMED)) { + onBackPressClick() + } }, ) Text(