@@ -31,21 +31,16 @@ import android.content.pm.ActivityInfo
3131import android.content.pm.PackageManager
3232import android.content.pm.ResolveInfo
3333import android.content.res.Configuration
34- import android.graphics.Typeface
3534import android.net.Uri
3635import android.os.Build
3736import android.os.Bundle
3837import android.os.Environment
3938import android.os.Handler
40- import android.os.Looper
4139import android.os.Message
4240import android.print.PrintAttributes
4341import android.print.PrintManager
4442import android.provider.MediaStore
45- import android.text.Spannable
46- import android.text.SpannableString
4743import android.text.Spanned
48- import android.text.style.StyleSpan
4944import android.view.ContextMenu
5045import android.view.MenuItem
5146import android.view.MotionEvent
@@ -102,6 +97,7 @@ import androidx.webkit.WebViewCompat
10297import androidx.webkit.WebViewFeature
10398import com.duckduckgo.anvil.annotations.InjectWith
10499import com.duckduckgo.app.accessibility.data.AccessibilitySettingsDataStore
100+ import com.duckduckgo.app.bookmarks.dialog.BookmarkAddedConfirmationDialog
105101import com.duckduckgo.app.browser.BrowserTabViewModel.FileChooserRequestedParams
106102import com.duckduckgo.app.browser.R.string
107103import com.duckduckgo.app.browser.SSLErrorType.NONE
@@ -322,11 +318,9 @@ import com.duckduckgo.privacy.dashboard.api.ui.PrivacyDashboardHybridScreenResul
322318import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopup
323319import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopupFactory
324320import com.duckduckgo.privacyprotectionspopup.api.PrivacyProtectionsPopupViewState
325- import com.duckduckgo.savedsites.api.models.BookmarkFolder
326321import com.duckduckgo.savedsites.api.models.SavedSite
327322import com.duckduckgo.savedsites.api.models.SavedSite.Bookmark
328323import com.duckduckgo.savedsites.api.models.SavedSitesNames
329- import com.duckduckgo.savedsites.impl.bookmarks.BookmarksBottomSheetDialog
330324import com.duckduckgo.savedsites.impl.bookmarks.FaviconPromptSheet
331325import com.duckduckgo.savedsites.impl.dialogs.EditSavedSiteDialogFragment
332326import com.duckduckgo.serp.logos.api.SerpLogoScreens.EasterEggLogoScreen
@@ -654,8 +648,6 @@ class BrowserTabFragment :
654648
655649 private lateinit var webViewContainer: FrameLayout
656650
657- private var bookmarksBottomSheetDialog: BookmarksBottomSheetDialog .Builder ? = null
658-
659651 private var autocompleteItemOffsetTop: Int = 0
660652 private var autocompleteFirstVisibleItemPosition: Int = 0
661653
@@ -3779,70 +3771,30 @@ class BrowserTabFragment :
37793771 }
37803772
37813773 private fun savedSiteAdded (savedSiteChangedViewState : SavedSiteChangedViewState ) {
3782- val dismissHandler = Handler (Looper .getMainLooper())
3783- val dismissRunnable =
3784- Runnable {
3785- if (isAdded) {
3786- bookmarksBottomSheetDialog?.dialog?.let { dialog ->
3787- if (dialog.isShowing) {
3788- dialog.dismiss()
3789- }
3774+ context?.let { ctx ->
3775+ val dialog = BookmarkAddedConfirmationDialog (ctx, savedSiteChangedViewState.bookmarkFolder)
3776+ dialog.addEventListener(
3777+ object : BookmarkAddedConfirmationDialog .EventListener () {
3778+ override fun onFavoriteStateChangeClicked (isFavorited : Boolean ) {
3779+ viewModel.onFavoriteMenuClicked()
37903780 }
3791- }
3792- }
3793- val title = getBookmarksBottomSheetTitle(savedSiteChangedViewState.bookmarkFolder)
37943781
3795- bookmarksBottomSheetDialog =
3796- BookmarksBottomSheetDialog
3797- .Builder (requireContext())
3798- .setTitle(title)
3799- .setPrimaryItem(
3800- getString(com.duckduckgo.saved.sites.impl.R .string.addToFavorites),
3801- icon = com.duckduckgo.mobile.android.R .drawable.ic_favorite_24,
3802- ).setSecondaryItem(
3803- getString(com.duckduckgo.saved.sites.impl.R .string.editBookmark),
3804- icon = com.duckduckgo.mobile.android.R .drawable.ic_edit_24,
3805- ).addEventListener(
3806- object : BookmarksBottomSheetDialog .EventListener () {
3807- override fun onPrimaryItemClicked () {
3808- viewModel.onFavoriteMenuClicked()
3809- dismissHandler.removeCallbacks(dismissRunnable)
3810- }
3811-
3812- override fun onSecondaryItemClicked () {
3813- if (savedSiteChangedViewState.savedSite is Bookmark ) {
3814- pixel.fire(AppPixelName .ADD_BOOKMARK_CONFIRM_EDITED )
3815- editSavedSite(
3816- savedSiteChangedViewState.copy(
3817- savedSite = savedSiteChangedViewState.savedSite.copy(
3818- isFavorite = viewModel.browserViewState.value?.favorite != null ,
3819- ),
3782+ override fun onEditBookmarkClicked () {
3783+ if (savedSiteChangedViewState.savedSite is Bookmark ) {
3784+ pixel.fire(AppPixelName .ADD_BOOKMARK_CONFIRM_EDITED )
3785+ editSavedSite(
3786+ savedSiteChangedViewState.copy(
3787+ savedSite = savedSiteChangedViewState.savedSite.copy(
3788+ isFavorite = viewModel.browserViewState.value?.favorite != null ,
38203789 ),
3821- )
3822- dismissHandler.removeCallbacks(dismissRunnable)
3823- }
3824- }
3825-
3826- override fun onBottomSheetDismissed () {
3827- super .onBottomSheetDismissed()
3828- dismissHandler.removeCallbacks(dismissRunnable)
3790+ ),
3791+ )
38293792 }
3830- },
3831- )
3832- bookmarksBottomSheetDialog?.show()
3833-
3834- dismissHandler.postDelayed(dismissRunnable, BOOKMARKS_BOTTOM_SHEET_DURATION )
3835- }
3836-
3837- private fun getBookmarksBottomSheetTitle (bookmarkFolder : BookmarkFolder ? ): SpannableString {
3838- val folderName = bookmarkFolder?.name ? : " "
3839- val fullText = getString(com.duckduckgo.saved.sites.impl.R .string.bookmarkAddedInBookmarks, folderName)
3840- val spannableString = SpannableString (fullText)
3841-
3842- val boldStart = fullText.indexOf(folderName)
3843- val boldEnd = boldStart + folderName.length
3844- spannableString.setSpan(StyleSpan (Typeface .BOLD ), boldStart, boldEnd, Spannable .SPAN_EXCLUSIVE_EXCLUSIVE )
3845- return spannableString
3793+ }
3794+ },
3795+ )
3796+ dialog.show()
3797+ }
38463798 }
38473799
38483800 private fun editSavedSite (savedSiteChangedViewState : SavedSiteChangedViewState ) {
@@ -4380,8 +4332,6 @@ class BrowserTabFragment :
43804332
43814333 private const val COOKIES_ANIMATION_DELAY = 400L
43824334
4383- private const val BOOKMARKS_BOTTOM_SHEET_DURATION = 3500L
4384-
43854335 private const val AUTOCOMPLETE_PADDING_DP = 6
43864336
43874337 private const val SITE_SECURITY_WARNING = " Warning: Security Risk"
@@ -4627,7 +4577,6 @@ class BrowserTabFragment :
46274577 renderFullscreenMode(viewState)
46284578 privacyProtectionsPopup.setViewState(viewState.privacyProtectionsPopupViewState)
46294579
4630- bookmarksBottomSheetDialog?.dialog?.toggleSwitch(viewState.favorite != null )
46314580 val bookmark =
46324581 viewModel.browserViewState.value
46334582 ?.bookmark
0 commit comments