Skip to content

Commit c06d5ea

Browse files
committed
updated logic to display proper message
1 parent 588e610 commit c06d5ea

6 files changed

Lines changed: 53 additions & 18 deletions

File tree

app/src/main/java/com/duckduckgo/app/browser/weblocalstorage/WebLocalStorageManager.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,13 @@ class DuckDuckGoWebLocalStorageManager @Inject constructor(
8989
db.delete(entry.key)
9090
logcat { "WebLocalStorageManager: Deleted key: $key" }
9191
} else if (settingsDataStore.clearDuckAiData && domainForMatchingAllowedKey == DUCKDUCKGO_DOMAIN) {
92-
if (allowedKeys.none { key.endsWith(it) }) {
93-
db.delete(entry.key)
94-
logcat { "WebLocalStorageManager: Deleted key: $key" }
92+
if (key.endsWith("duckaiHasAgreedToTerms")) {
93+
logcat { "WebLocalStorageManager: Don't delete key: $key" }
94+
} else {
95+
if (allowedKeys.none { key.endsWith(it) }) {
96+
db.delete(entry.key)
97+
logcat { "WebLocalStorageManager: Deleted key: $key" }
98+
}
9599
}
96100
}
97101
}

app/src/main/java/com/duckduckgo/app/firebutton/FireButtonActivity.kt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class FireButtonActivity : DuckDuckGoActivity() {
9494
.flowWithLifecycle(lifecycle, Lifecycle.State.RESUMED)
9595
.onEach { viewState ->
9696
viewState.let {
97-
updateAutomaticClearDataOptions(it.automaticallyClearData)
97+
updateAutomaticClearDataOptions(it.automaticallyClearData, it.clearDuckAiData)
9898
updateSelectedFireAnimation(it.selectedFireAnimation)
9999
updateClearDuckAiDataSetting(it.clearDuckAiData, it.showClearDuckAiDataSetting)
100100
}
@@ -106,8 +106,11 @@ class FireButtonActivity : DuckDuckGoActivity() {
106106
.launchIn(lifecycleScope)
107107
}
108108

109-
private fun updateAutomaticClearDataOptions(automaticallyClearData: AutomaticallyClearData) {
110-
val clearWhatSubtitle = getString(automaticallyClearData.clearWhatOption.nameStringResourceId())
109+
private fun updateAutomaticClearDataOptions(
110+
automaticallyClearData: AutomaticallyClearData,
111+
clearDuckAiData: Boolean,
112+
) {
113+
val clearWhatSubtitle = getString(automaticallyClearData.clearWhatOption.nameStringResourceId(clearDuckAiData))
111114
binding.automaticallyClearWhatSetting.setSecondaryText(clearWhatSubtitle)
112115

113116
val clearWhenSubtitle = getString(automaticallyClearData.clearWhenOption.nameStringResourceId())
@@ -122,26 +125,33 @@ class FireButtonActivity : DuckDuckGoActivity() {
122125
binding.selectedFireAnimationSetting.setSecondaryText(subtitle)
123126
}
124127

125-
private fun updateClearDuckAiDataSetting(enabled: Boolean, isVisible: Boolean) {
128+
private fun updateClearDuckAiDataSetting(
129+
enabled: Boolean,
130+
isVisible: Boolean,
131+
) {
126132
binding.clearDuckAiDataSetting.setIsChecked(enabled)
127133
binding.clearDuckAiDataSetting.visibility = if (isVisible) View.VISIBLE else View.GONE
128134
}
129135

130136
private fun processCommand(it: Command) {
131137
when (it) {
132138
is Command.LaunchFireproofWebsites -> launchFireproofWebsites()
133-
is Command.ShowClearWhatDialog -> launchAutomaticallyClearWhatDialog(it.option)
139+
is Command.ShowClearWhatDialog -> launchAutomaticallyClearWhatDialog(it.option, it.clearDuckAi)
134140
is Command.ShowClearWhenDialog -> launchAutomaticallyClearWhenDialog(it.option)
135141
is Command.LaunchFireAnimationSettings -> launchFireAnimationSelector(it.animation)
136142
}
137143
}
138144

139145
@StringRes
140-
private fun ClearWhatOption.nameStringResourceId(): Int {
146+
private fun ClearWhatOption.nameStringResourceId(clearDuckAi: Boolean): Int {
141147
return when (this) {
142148
ClearWhatOption.CLEAR_NONE -> R.string.settingsAutomaticallyClearWhatOptionNone
143149
ClearWhatOption.CLEAR_TABS_ONLY -> R.string.settingsAutomaticallyClearWhatOptionTabs
144-
ClearWhatOption.CLEAR_TABS_AND_DATA -> R.string.settingsAutomaticallyClearWhatOptionTabsAndData
150+
ClearWhatOption.CLEAR_TABS_AND_DATA -> if (clearDuckAi) {
151+
R.string.settingsAutomaticallyClearWhatOptionTabsAndDataAndChats
152+
} else {
153+
R.string.settingsAutomaticallyClearWhatOptionTabsAndData
154+
}
145155
}
146156
}
147157

@@ -162,15 +172,22 @@ class FireButtonActivity : DuckDuckGoActivity() {
162172
startActivity(FireproofWebsitesActivity.intent(this), options)
163173
}
164174

165-
private fun launchAutomaticallyClearWhatDialog(option: ClearWhatOption) {
175+
private fun launchAutomaticallyClearWhatDialog(
176+
option: ClearWhatOption,
177+
clearDuckAi: Boolean,
178+
) {
166179
val currentOption = option.getOptionIndex()
167180
RadioListAlertDialogBuilder(this)
168181
.setTitle(R.string.settingsAutomaticallyClearWhatDialogTitle)
169182
.setOptions(
170183
listOf(
171184
R.string.settingsAutomaticallyClearWhatOptionNone,
172185
R.string.settingsAutomaticallyClearWhatOptionTabs,
173-
R.string.settingsAutomaticallyClearWhatOptionTabsAndData,
186+
if (clearDuckAi) {
187+
R.string.settingsAutomaticallyClearWhatOptionTabsAndDataAndChats
188+
} else {
189+
R.string.settingsAutomaticallyClearWhatOptionTabsAndData
190+
},
174191
),
175192
currentOption,
176193
)

app/src/main/java/com/duckduckgo/app/firebutton/FireButtonViewModel.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ class FireButtonViewModel @Inject constructor(
6666

6767
sealed class Command {
6868
data object LaunchFireproofWebsites : Command()
69-
data class ShowClearWhatDialog(val option: ClearWhatOption) : Command()
69+
data class ShowClearWhatDialog(
70+
val option: ClearWhatOption,
71+
val clearDuckAi: Boolean,
72+
) : Command()
73+
7074
data class ShowClearWhenDialog(val option: ClearWhenOption) : Command()
7175
data class LaunchFireAnimationSettings(val animation: FireAnimation) : Command()
7276
}
@@ -105,7 +109,14 @@ class FireButtonViewModel @Inject constructor(
105109
}
106110

107111
fun onAutomaticallyClearWhatClicked() {
108-
viewModelScope.launch { command.send(Command.ShowClearWhatDialog(viewState.value.automaticallyClearData.clearWhatOption)) }
112+
viewModelScope.launch {
113+
command.send(
114+
Command.ShowClearWhatDialog(
115+
viewState.value.automaticallyClearData.clearWhatOption,
116+
viewState.value.clearDuckAiData,
117+
),
118+
)
119+
}
109120
pixel.fire(AppPixelName.SETTINGS_AUTOMATICALLY_CLEAR_WHAT_PRESSED)
110121
}
111122

app/src/main/res/layout/activity_data_clearing.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,12 @@
7272
app:primaryText="@string/settingsAutomaticallyClearWhen"
7373
tools:secondaryText="test test test" />
7474

75-
<com.duckduckgo.common.ui.view.listitem.OneLineListItem
75+
<com.duckduckgo.common.ui.view.listitem.TwoLineListItem
7676
android:id="@+id/clearDuckAiDataSetting"
7777
android:layout_width="match_parent"
7878
android:layout_height="wrap_content"
79-
app:primaryText="@string/settingsClearAiData"
79+
app:primaryText="@string/settingsClearAiDataTitle"
80+
app:secondaryText="@string/settingsClearAiDataTitle"
8081
app:showSwitch="true" />
8182

8283
</LinearLayout>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@
233233
<string name="settingsAutomaticallyClearWhatOptionNone">None</string>
234234
<string name="settingsAutomaticallyClearWhatOptionTabs">Tabs</string>
235235
<string name="settingsAutomaticallyClearWhatOptionTabsAndData">Tabs and data</string>
236+
<string name="settingsAutomaticallyClearWhatOptionTabsAndDataAndChats">Tabs, data and Duck.ai chats</string>
236237

237238
<string name="settingsAutomaticallyClearWhen">Clear On…</string>
238239
<string name="settingsAutomaticallyClearWhenDialogTitle">Clear on…</string>
@@ -242,7 +243,8 @@
242243
<string name="settingsAutomaticallyClearWhenAppExit15Minutes">App exit, inactive for 15 minutes</string>
243244
<string name="settingsAutomaticallyClearWhenAppExit30Minutes">App exit, inactive for 30 minutes</string>
244245
<string name="settingsAutomaticallyClearWhenAppExit60Minutes">App exit, inactive for 1 hour</string>
245-
<string name="settingsClearAiData">Clear recent Duck.ai chats</string>
246+
<string name="settingsClearAiDataTitle">Clear Duck.ai Chats</string>
247+
<string name="settingsClearAiDataMessage">Let Fire Button also erase your recent Duck.ai chats</string>
246248

247249
<!-- About Activity -->
248250
<string name="aboutActivityTitle">About DuckDuckGo</string>

app/src/test/java/com/duckduckgo/app/firebutton/FireButtonViewModelTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ internal class FireButtonViewModelTest {
119119
testee.commands().test {
120120
testee.onAutomaticallyClearWhatClicked()
121121

122-
assertEquals(Command.ShowClearWhatDialog(ClearWhatOption.CLEAR_NONE), awaitItem())
122+
assertEquals(Command.ShowClearWhatDialog(ClearWhatOption.CLEAR_NONE, false), awaitItem())
123123
verify(mockPixel).fire(AppPixelName.SETTINGS_AUTOMATICALLY_CLEAR_WHAT_PRESSED)
124124

125125
cancelAndConsumeRemainingEvents()

0 commit comments

Comments
 (0)