Skip to content

Commit 8af12fa

Browse files
committed
Add animated tile dismissal dialog to TabSwitcher
We want to show a dialog when the user taps the info panel, and explain what the panel is doing but allow the user to hide it if they really want to
1 parent d426f22 commit 8af12fa

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,14 @@ import com.duckduckgo.app.tabs.ui.TabSwitcherItem.TrackerAnimationInfoPanel
5454
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command
5555
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.Close
5656
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.CloseAllTabsRequest
57+
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.DismissAnimatedTileDismissalDialog
58+
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.ShowAnimatedTileDismissalDialog
5759
import com.duckduckgo.appbuildconfig.api.AppBuildConfig
5860
import com.duckduckgo.common.ui.DuckDuckGoActivity
5961
import com.duckduckgo.common.ui.view.button.ButtonType.DESTRUCTIVE
62+
import com.duckduckgo.common.ui.view.button.ButtonType.GHOST
6063
import com.duckduckgo.common.ui.view.button.ButtonType.GHOST_ALT
64+
import com.duckduckgo.common.ui.view.dialog.DaxAlertDialog
6165
import com.duckduckgo.common.ui.view.dialog.TextAlertDialogBuilder
6266
import com.duckduckgo.common.ui.view.gone
6367
import com.duckduckgo.common.ui.view.hide
@@ -152,6 +156,8 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
152156
private var layoutTypeMenuItem: MenuItem? = null
153157
private var layoutType: LayoutType? = null
154158

159+
private var tabSwitcherAnimationTileRemovalDialog: DaxAlertDialog? = null
160+
155161
override fun onCreate(savedInstanceState: Bundle?) {
156162
super.onCreate(savedInstanceState)
157163
setContentView(R.layout.activity_tab_switcher)
@@ -349,6 +355,8 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
349355
when (command) {
350356
is Close -> finishAfterTransition()
351357
is CloseAllTabsRequest -> showCloseAllTabsConfirmation()
358+
ShowAnimatedTileDismissalDialog -> showAnimatedTileDismissalDialog()
359+
DismissAnimatedTileDismissalDialog -> tabSwitcherAnimationTileRemovalDialog!!.dismiss()
352360
}
353361
}
354362

@@ -571,6 +579,30 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
571579
.show()
572580
}
573581

582+
private fun showAnimatedTileDismissalDialog() {
583+
tabSwitcherAnimationTileRemovalDialog = TextAlertDialogBuilder(this)
584+
.setTitle(R.string.tabSwitcherAnimationTileRemovalDialogTitle)
585+
.setMessage(R.string.tabSwitcherAnimationTileRemovalDialogBody)
586+
.setPositiveButton(R.string.daxDialogGotIt)
587+
.setNegativeButton(R.string.tabSwitcherAnimationTileRemovalDialogNegativeButton, GHOST)
588+
.setCancellable(true)
589+
.addEventListener(
590+
object : TextAlertDialogBuilder.EventListener() {
591+
override fun onNegativeButtonClicked() {
592+
viewModel.onTrackerAnimationTileNegativeButtonClicked()
593+
}
594+
595+
override fun onPositiveButtonClicked() {
596+
viewModel.onTrackerAnimationTilePositiveButtonClicked()
597+
}
598+
},
599+
)
600+
.build()
601+
.also { dialog ->
602+
dialog.show()
603+
}
604+
}
605+
574606
private fun configureOnBackPressedListener() {
575607
onBackPressedDispatcher.addCallback(
576608
this,

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import com.duckduckgo.app.tabs.model.TabSwitcherData.LayoutType.LIST
3838
import com.duckduckgo.app.tabs.store.TabSwitcherDataStore
3939
import com.duckduckgo.app.tabs.ui.TabSwitcherItem.Tab
4040
import com.duckduckgo.app.tabs.ui.TabSwitcherItem.TrackerAnimationInfoPanel
41+
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.DismissAnimatedTileDismissalDialog
42+
import com.duckduckgo.app.tabs.ui.TabSwitcherViewModel.Command.ShowAnimatedTileDismissalDialog
4143
import com.duckduckgo.app.trackerdetection.api.WebTrackersBlockedAppRepository
4244
import com.duckduckgo.common.utils.DispatcherProvider
4345
import com.duckduckgo.common.utils.SingleLiveEvent
@@ -92,6 +94,8 @@ class TabSwitcherViewModel @Inject constructor(
9294
sealed class Command {
9395
data object Close : Command()
9496
data object CloseAllTabsRequest : Command()
97+
data object ShowAnimatedTileDismissalDialog : Command()
98+
data object DismissAnimatedTileDismissalDialog : Command()
9599
}
96100

97101
suspend fun onNewTabRequested(fromOverflowMenu: Boolean) {
@@ -248,4 +252,16 @@ class TabSwitcherViewModel @Inject constructor(
248252
emit(tabSwitcherItems)
249253
}
250254
}
255+
256+
fun onTrackerAnimationTilePositiveButtonClicked() {
257+
viewModelScope.launch {
258+
command.value = DismissAnimatedTileDismissalDialog
259+
}
260+
}
261+
262+
fun onTrackerAnimationTileNegativeButtonClicked() {
263+
viewModelScope.launch {
264+
tabSwitcherDataStore.setIsAnimationTileDismissed(isDismissed = true)
265+
}
266+
}
251267
}

app/src/main/res/values/donottranslate.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,8 @@
8282
<!-- Bottom Navigation Bar Experiment-->
8383
<string name="refreshPage">Refresh Page</string>
8484

85+
<!--TabSwitcher Animation Tile Dialog-->
86+
<string name="tabSwitcherAnimationTileRemovalDialogTitle">DuckDuckGo blocks trackers to protect your browsing</string>
87+
<string name="tabSwitcherAnimationTileRemovalDialogBody">Clearing your tabs and data will delete your tracker blocking history and reset this number to zero.\n\nHide this banner if you\'d prefer not to see it in the tabs view.</string>
88+
<string name="tabSwitcherAnimationTileRemovalDialogNegativeButton">Hide Banner</string>
8589
</resources>

0 commit comments

Comments
 (0)