From 883fb36fcc91da1178dea452af814a10fff740bc Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 21 Nov 2025 15:52:54 +0100 Subject: [PATCH] Fix crash when clicking fast on back key on the Labs screen. --- .../features/preferences/impl/PreferencesFlowNode.kt | 7 ++++++- .../features/preferences/impl/labs/LabsNode.kt | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt index 783d732036..d316006bae 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/PreferencesFlowNode.kt @@ -190,7 +190,12 @@ class PreferencesFlowNode( createNode(buildContext, listOf(developerSettingsCallback)) } NavTarget.Labs -> { - createNode(buildContext) + val callback = object : LabsNode.Callback { + override fun onDone() { + backstack.pop() + } + } + createNode(buildContext, listOf(callback)) } NavTarget.About -> { val callback = object : AboutNode.Callback { diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsNode.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsNode.kt index 343b4d2795..b7ba73c9af 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsNode.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsNode.kt @@ -16,6 +16,7 @@ import com.bumble.appyx.core.plugin.Plugin import dev.zacsweers.metro.Assisted import dev.zacsweers.metro.AssistedInject import io.element.android.annotations.ContributesNode +import io.element.android.libraries.architecture.callback import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) @@ -25,9 +26,18 @@ class LabsNode( @Assisted plugins: List, private val presenter: LabsPresenter, ) : Node(buildContext, plugins = plugins) { + interface Callback : Plugin { + fun onDone() + } + + val callback: Callback = callback() + @Composable override fun View(modifier: Modifier) { val state = presenter.present() - LabsView(state = state, onBack = ::navigateUp) + LabsView( + state = state, + onBack = callback::onDone, + ) } }