From 00fadd10e1317f8554ad193ec90150998d9b92cf Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 15 Feb 2025 02:28:58 -0600 Subject: [PATCH] Fixed back handler when resuming from background --- .../todoroo/astrid/activity/MainActivity.kt | 42 +++++++++---------- .../astrid/activity/TaskListFragment.kt | 14 ++++--- .../org/tasks/compose/edit/TaskEditScreen.kt | 2 + 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 8e7058cd3..c67fb2706 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -188,6 +188,7 @@ class MainActivity : AppCompatActivity() { } BackHandler(enabled = state.task == null) { + Timber.d("onBackPressed") if (intent.finishAffinity) { finishAffinity() } else if (isDetailVisible && navigator.canNavigateBack()) { @@ -212,17 +213,16 @@ class MainActivity : AppCompatActivity() { directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, listPane = { - val taskListState = key (state.filter) { - rememberFragmentState() + key (state.filter) { + AndroidFragment( + fragmentState = rememberFragmentState(), + arguments = remember(state.filter) { + Bundle() + .apply { putParcelable(EXTRA_FILTER, state.filter) } + }, + modifier = Modifier.fillMaxSize(), + ) } - AndroidFragment( - fragmentState = taskListState, - arguments = remember (state.filter) { - Bundle() - .apply { putParcelable(EXTRA_FILTER, state.filter) } - }, - modifier = Modifier.fillMaxSize(), - ) }, detailPane = { if (state.task == null) { @@ -240,20 +240,16 @@ class MainActivity : AppCompatActivity() { } } } else { - val taskEditState = key (state.task) { - rememberFragmentState() + key (state.task) { + AndroidFragment( + fragmentState = rememberFragmentState(), + arguments = remember(state.task) { + Bundle() + .apply { putParcelable(EXTRA_TASK, state.task) } + }, + modifier = Modifier.fillMaxSize(), + ) } - AndroidFragment( - fragmentState = taskEditState, - arguments = remember(state.task) { - Bundle() - .apply { putParcelable(EXTRA_TASK, state.task) } - }, - modifier = Modifier.fillMaxSize(), - onUpdate = { - Timber.d("On updated") - } - ) } }, ) diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index 1f8a01f1b..318d7ab9d 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -20,7 +20,7 @@ import android.view.Menu import android.view.MenuItem import android.view.View import android.view.ViewGroup -import androidx.activity.addCallback +import androidx.activity.compose.BackHandler import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatActivity @@ -274,11 +274,6 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL @OptIn(ExperimentalPermissionsApi::class) override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - requireActivity().onBackPressedDispatcher.addCallback(owner = viewLifecycleOwner) { - if (search.isActionViewExpanded) { - search.collapseActionView() - } - } binding = FragmentTaskListBinding.inflate(inflater, container, false) ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { view, windowInsets -> @@ -355,7 +350,14 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL binding.banner.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) binding.banner.setContent { val context = LocalContext.current + val mainActivityState = mainViewModel.state.collectAsStateWithLifecycle().value val state = listViewModel.state.collectAsStateWithLifecycle().value + BackHandler(enabled = state.searchQuery != null && mainActivityState.task == null) { + Timber.d("onBackPressed") + if (search.isActionViewExpanded) { + search.collapseActionView() + } + } TasksTheme(theme = theme.themeBase.index) { val notificationPermissions = if (AndroidUtilities.atLeastTiramisu()) { rememberPermissionState( diff --git a/app/src/main/java/org/tasks/compose/edit/TaskEditScreen.kt b/app/src/main/java/org/tasks/compose/edit/TaskEditScreen.kt index 39f6a3efd..29555db9b 100644 --- a/app/src/main/java/org/tasks/compose/edit/TaskEditScreen.kt +++ b/app/src/main/java/org/tasks/compose/edit/TaskEditScreen.kt @@ -35,6 +35,7 @@ import org.tasks.fragments.CommentBarFragment import org.tasks.themes.TasksTheme import org.tasks.ui.TaskEditViewModel import org.tasks.utility.copyToClipboard +import timber.log.Timber @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -51,6 +52,7 @@ fun TaskEditScreen( content: @Composable (Int) -> Unit, ) { BackHandler { + Timber.d("onBackPressed") onBackPressed() } Scaffold(