From dda9aad279e48188b7798681ede2efe983acb8c7 Mon Sep 17 00:00:00 2001 From: Ana Capatina Date: Wed, 3 Dec 2025 16:44:55 +0000 Subject: [PATCH 1/2] Add coroutine job to manage widget bottom sheet dialog lifecycle. --- .../duckduckgo/app/browser/BrowserTabFragment.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index f4f0a618d18d..5fd7fc8363d4 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -614,6 +614,7 @@ class BrowserTabFragment : private lateinit var popupMenu: BrowserMenu private lateinit var ctaBottomSheet: PromoBottomSheetDialog private lateinit var widgetBottomSheetDialog: AlternativeHomeScreenWidgetBottomSheetDialog + private val widgetBottomSheetDialogJob: ConflatedJob = ConflatedJob() private lateinit var autoCompleteSuggestionsAdapter: BrowserAutoCompleteSuggestionsAdapter @@ -4076,6 +4077,7 @@ class BrowserTabFragment : dismissAppLinkSnackBar() supervisorJob.cancel() if (::popupMenu.isInitialized) popupMenu.dismiss() + widgetBottomSheetDialogJob?.cancel() loginDetectionDialog?.dismiss() automaticFireproofDialog?.dismiss() browserAutofill.removeJsInterface() @@ -4349,6 +4351,7 @@ class BrowserTabFragment : const val KEYBOARD_DELAY = 200L private const val NAVIGATION_DELAY = 100L private const val POPUP_MENU_DELAY = 200L + private const val WIDGET_PROMPT_DELAY = 200L private const val REQUEST_CODE_CHOOSE_FILE = 100 private const val PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 200 @@ -4840,10 +4843,13 @@ class BrowserTabFragment : } private fun showBottomSheetCta(configuration: HomePanelCta) { - if (configuration is AddWidgetAutoOnboardingExperiment) { - showAlternativeHomeWidgetPrompt(configuration) - } else { - showHomeCta(configuration) + widgetBottomSheetDialogJob += lifecycleScope.launch { + delay(WIDGET_PROMPT_DELAY) + if (configuration is AddWidgetAutoOnboardingExperiment) { + showAlternativeHomeWidgetPrompt(configuration) + } else { + showHomeCta(configuration) + } } } From f50786772c147741acfe9f02eb594b136fb4e673 Mon Sep 17 00:00:00 2001 From: Ana Capatina Date: Wed, 3 Dec 2025 17:09:39 +0000 Subject: [PATCH 2/2] Used viewLifecycleOwner.lifecycleScope instead of lifecycleScope in showBottomSheetCta. --- .../main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index 5fd7fc8363d4..b2b57881e00c 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -4843,7 +4843,7 @@ class BrowserTabFragment : } private fun showBottomSheetCta(configuration: HomePanelCta) { - widgetBottomSheetDialogJob += lifecycleScope.launch { + widgetBottomSheetDialogJob += viewLifecycleOwner.lifecycleScope.launch { delay(WIDGET_PROMPT_DELAY) if (configuration is AddWidgetAutoOnboardingExperiment) { showAlternativeHomeWidgetPrompt(configuration)