@@ -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
@@ -651,8 +645,6 @@ class BrowserTabFragment :
651645
652646 private lateinit var webViewContainer: FrameLayout
653647
654- private var bookmarksBottomSheetDialog: BookmarksBottomSheetDialog .Builder ? = null
655-
656648 private var autocompleteItemOffsetTop: Int = 0
657649 private var autocompleteFirstVisibleItemPosition: Int = 0
658650
@@ -3770,70 +3762,30 @@ class BrowserTabFragment :
37703762 }
37713763
37723764 private fun savedSiteAdded (savedSiteChangedViewState : SavedSiteChangedViewState ) {
3773- val dismissHandler = Handler (Looper .getMainLooper())
3774- val dismissRunnable =
3775- Runnable {
3776- if (isAdded) {
3777- bookmarksBottomSheetDialog?.dialog?.let { dialog ->
3778- if (dialog.isShowing) {
3779- dialog.dismiss()
3780- }
3765+ context?.let { ctx ->
3766+ val dialog = BookmarkAddedConfirmationDialog (ctx, savedSiteChangedViewState.bookmarkFolder)
3767+ dialog.addEventListener(
3768+ object : BookmarkAddedConfirmationDialog .EventListener () {
3769+ override fun onFavoriteStateChangeClicked (isFavorited : Boolean ) {
3770+ viewModel.onFavoriteMenuClicked()
37813771 }
3782- }
3783- }
3784- val title = getBookmarksBottomSheetTitle(savedSiteChangedViewState.bookmarkFolder)
37853772
3786- bookmarksBottomSheetDialog =
3787- BookmarksBottomSheetDialog
3788- .Builder (requireContext())
3789- .setTitle(title)
3790- .setPrimaryItem(
3791- getString(com.duckduckgo.saved.sites.impl.R .string.addToFavorites),
3792- icon = com.duckduckgo.mobile.android.R .drawable.ic_favorite_24,
3793- ).setSecondaryItem(
3794- getString(com.duckduckgo.saved.sites.impl.R .string.editBookmark),
3795- icon = com.duckduckgo.mobile.android.R .drawable.ic_edit_24,
3796- ).addEventListener(
3797- object : BookmarksBottomSheetDialog .EventListener () {
3798- override fun onPrimaryItemClicked () {
3799- viewModel.onFavoriteMenuClicked()
3800- dismissHandler.removeCallbacks(dismissRunnable)
3801- }
3802-
3803- override fun onSecondaryItemClicked () {
3804- if (savedSiteChangedViewState.savedSite is Bookmark ) {
3805- pixel.fire(AppPixelName .ADD_BOOKMARK_CONFIRM_EDITED )
3806- editSavedSite(
3807- savedSiteChangedViewState.copy(
3808- savedSite = savedSiteChangedViewState.savedSite.copy(
3809- isFavorite = viewModel.browserViewState.value?.favorite != null ,
3810- ),
3773+ override fun onEditBookmarkClicked () {
3774+ if (savedSiteChangedViewState.savedSite is Bookmark ) {
3775+ pixel.fire(AppPixelName .ADD_BOOKMARK_CONFIRM_EDITED )
3776+ editSavedSite(
3777+ savedSiteChangedViewState.copy(
3778+ savedSite = savedSiteChangedViewState.savedSite.copy(
3779+ isFavorite = viewModel.browserViewState.value?.favorite != null ,
38113780 ),
3812- )
3813- dismissHandler.removeCallbacks(dismissRunnable)
3814- }
3815- }
3816-
3817- override fun onBottomSheetDismissed () {
3818- super .onBottomSheetDismissed()
3819- dismissHandler.removeCallbacks(dismissRunnable)
3781+ ),
3782+ )
38203783 }
3821- },
3822- )
3823- bookmarksBottomSheetDialog?.show()
3824-
3825- dismissHandler.postDelayed(dismissRunnable, BOOKMARKS_BOTTOM_SHEET_DURATION )
3826- }
3827-
3828- private fun getBookmarksBottomSheetTitle (bookmarkFolder : BookmarkFolder ? ): SpannableString {
3829- val folderName = bookmarkFolder?.name ? : " "
3830- val fullText = getString(com.duckduckgo.saved.sites.impl.R .string.bookmarkAddedInBookmarks, folderName)
3831- val spannableString = SpannableString (fullText)
3832-
3833- val boldStart = fullText.indexOf(folderName)
3834- val boldEnd = boldStart + folderName.length
3835- spannableString.setSpan(StyleSpan (Typeface .BOLD ), boldStart, boldEnd, Spannable .SPAN_EXCLUSIVE_EXCLUSIVE )
3836- return spannableString
3784+ }
3785+ },
3786+ )
3787+ dialog.show()
3788+ }
38373789 }
38383790
38393791 private fun editSavedSite (savedSiteChangedViewState : SavedSiteChangedViewState ) {
@@ -4371,8 +4323,6 @@ class BrowserTabFragment :
43714323
43724324 private const val COOKIES_ANIMATION_DELAY = 400L
43734325
4374- private const val BOOKMARKS_BOTTOM_SHEET_DURATION = 3500L
4375-
43764326 private const val AUTOCOMPLETE_PADDING_DP = 6
43774327
43784328 private const val SITE_SECURITY_WARNING = " Warning: Security Risk"
@@ -4618,7 +4568,6 @@ class BrowserTabFragment :
46184568 renderFullscreenMode(viewState)
46194569 privacyProtectionsPopup.setViewState(viewState.privacyProtectionsPopupViewState)
46204570
4621- bookmarksBottomSheetDialog?.dialog?.toggleSwitch(viewState.favorite != null )
46224571 val bookmark =
46234572 viewModel.browserViewState.value
46244573 ?.bookmark
0 commit comments