Skip to content

Commit a7f7752

Browse files
cmonfortepdaxmobile
authored andcommitted
Show Not now as secondary button during autofill onboarding (#5198)
Task/Issue URL: https://app.asana.com/0/1203822806345703/1208592982102639/f ### Description During Autofill Onboarding show "Not Now" as secondary button. ### Steps to test this PR _Feature 1_ - [x] fresh install - [x] visit fill.dev and try a login - [x] ensure on the dialog (onboarding), secondary button is not now - [x] click Not Now - [x] visit authenticationtest.com and try a login - [x] ensure on the dialog (onboarding), secondary - [x] click not now - [x] visit fill.dev again and try a login - [x] ensure on the dialog (not onboarding anymote), secondary button is Never for this site ### UI changes | Before | After | | ------ | ----- | !(Upload before screenshot)|(Upload after screenshot)| --------- Co-authored-by: Dax The Translator <[email protected]>
1 parent d129356 commit a7f7752

28 files changed

+82
-31
lines changed

autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/ui/credential/saving/AutofillSavingCredentialsDialogFragment.kt

+30-3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import com.duckduckgo.autofill.impl.ui.credential.saving.AutofillSavingCredentia
6464
import com.duckduckgo.autofill.impl.ui.credential.saving.AutofillSavingCredentialsDialogFragment.DialogEvent.Shown
6565
import com.duckduckgo.autofill.impl.ui.credential.saving.AutofillSavingCredentialsViewModel.ViewState
6666
import com.duckduckgo.autofill.impl.ui.credential.saving.declines.AutofillDeclineCounter
67+
import com.duckduckgo.common.ui.view.button.DaxButton
6768
import com.duckduckgo.common.ui.view.prependIconToText
6869
import com.duckduckgo.common.utils.DispatcherProvider
6970
import com.duckduckgo.common.utils.FragmentViewModelFactory
@@ -115,6 +116,8 @@ class AutofillSavingCredentialsDialogFragment : BottomSheetDialogFragment(), Cre
115116

116117
private lateinit var keyFeaturesContainer: ViewGroup
117118

119+
private lateinit var secondaryButton: DaxButton
120+
118121
private val viewModel by lazy {
119122
ViewModelProvider(this, viewModelFactory)[AutofillSavingCredentialsViewModel::class.java]
120123
}
@@ -157,12 +160,14 @@ class AutofillSavingCredentialsDialogFragment : BottomSheetDialogFragment(), Cre
157160

158161
private fun renderViewState(viewState: ViewState) {
159162
keyFeaturesContainer.isVisible = viewState.expandedDialog
163+
configureSecondaryButtons(viewState.expandedDialog)
160164
(dialog as? BottomSheetDialog)?.behavior?.isDraggable = viewState.expandedDialog
161165
pixelNameDialogEvent(Shown, viewState.expandedDialog)?.let { pixel.fire(it) }
162166
}
163167

164168
private fun configureViews(binding: ContentAutofillSaveNewCredentialsBinding) {
165169
keyFeaturesContainer = binding.keyFeaturesContainer
170+
secondaryButton = binding.secondaryButton
166171
(dialog as BottomSheetDialog).behavior.state = BottomSheetBehavior.STATE_EXPANDED
167172
configureCloseButtons(binding)
168173
configureSaveButton(binding)
@@ -222,6 +227,16 @@ class AutofillSavingCredentialsDialogFragment : BottomSheetDialogFragment(), Cre
222227
}
223228
}
224229

230+
private fun onUserChoseNotNow() {
231+
pixelNameDialogEvent(Dismissed, isOnboardingMode())?.let { pixel.fire(it) }
232+
233+
// this is another way to refuse saving credentials, so ensure that normal logic still runs
234+
onUserRejectedToSaveCredentials()
235+
236+
// avoid the standard cancellation logic from running
237+
ignoreCancellationEvents = true
238+
}
239+
225240
private fun onUserChoseNeverSaveThisSite() {
226241
pixelNameDialogEvent(Exclude, isOnboardingMode())?.let { pixel.fire(it) }
227242
viewModel.addSiteToNeverSaveList(getOriginalUrl())
@@ -239,9 +254,21 @@ class AutofillSavingCredentialsDialogFragment : BottomSheetDialogFragment(), Cre
239254
*/
240255
private fun configureCloseButtons(binding: ContentAutofillSaveNewCredentialsBinding) {
241256
binding.closeButton.setOnClickListener { animateClosed() }
242-
binding.neverSaveForThisSiteButton.setOnClickListener {
243-
onUserChoseNeverSaveThisSite()
244-
animateClosed()
257+
}
258+
259+
private fun configureSecondaryButtons(isOnboarding: Boolean) {
260+
if (isOnboarding) {
261+
secondaryButton.text = getString(R.string.saveOnboardingLoginDialogSecondaryButton)
262+
secondaryButton.setOnClickListener {
263+
onUserChoseNotNow()
264+
animateClosed()
265+
}
266+
} else {
267+
secondaryButton.text = getString(R.string.saveLoginDialogNeverForThisSite)
268+
secondaryButton.setOnClickListener {
269+
onUserChoseNeverSaveThisSite()
270+
animateClosed()
271+
}
245272
}
246273
}
247274

autofill/autofill-impl/src/main/java/com/duckduckgo/autofill/impl/ui/credential/saving/AutofillSavingCredentialsViewModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class AutofillSavingCredentialsViewModel @Inject constructor(
4646
viewModelScope.launch(dispatchers.io()) {
4747
val shouldShowExpandedView = autofillDeclineCounter.declineCount() < 2 && autofillDeclineCounter.isDeclineCounterActive()
4848
_viewState.value = ViewState(shouldShowExpandedView)
49-
Timber.d("Autofill: AutofillSavingCredentialsViewModel initialized")
49+
Timber.d("Autofill: AutofillSavingCredentialsViewModel initialized with expanded view state: $shouldShowExpandedView")
5050
}
5151
}
5252

autofill/autofill-impl/src/main/res/layout/content_autofill_save_new_credentials.xml

+1-2
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,9 @@
146146
app:layout_constraintTop_toBottomOf="@id/keyFeaturesContainer" />
147147

148148
<com.duckduckgo.common.ui.view.button.DaxButtonGhost
149-
android:id="@+id/neverSaveForThisSiteButton"
149+
android:id="@+id/secondaryButton"
150150
android:layout_width="0dp"
151151
android:layout_height="wrap_content"
152-
android:text="@string/saveLoginDialogNeverForThisSite"
153152
app:buttonSize="large"
154153
app:layout_constraintEnd_toEndOf="@id/saveLoginButton"
155154
app:layout_constraintStart_toStartOf="@id/saveLoginButton"

autofill/autofill-impl/src/main/res/values-bg/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Предложения</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Автоматичното попълване за пароли не е достъпно, защото Вашата версия на Android WebView е твърде стара.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Автоматичното попълване на пароли не е достъпно, тъй като Вашата версия на Android WebView е остаряла или несъвместима.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Изчистване на въведеното търсене</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Няма резултати за \'%1$s\'</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b></b>\nСинхронизирането на пароли е на пауза\nНякои пароли са форматирани неправилно или са твърде дълги и не бяха синхронизирани.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Никога не питай за този сайт</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Не, благодаря</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Ако нулирате изключените сайтове, при следващото влизане в някой от тези сайтове ще бъдете подканени да запазите паролата за вход.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Нулиране на изключените сайтове</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Нулиране на изключените сайтове?</string>

autofill/autofill-impl/src/main/res/values-cs/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Navrhované</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automatické vyplňování hesel není dostupné, protože tvoje verze Android WebView je moc stará.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automatické vyplňování hesel není dostupné, protože tvoje verze Android WebView je zastaralá nebo nekompatibilní.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Vymazat vyhledávací vstup</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Žádné výsledky pro dotaz „%1$s“</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Synchronizace hesel je pozastavená</b>\nNěkterá hesla jsou nesprávně naformátovaná nebo moc dlouhá, takže jsme je nemohli synchronizovat.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Na téhle stránce už se neptat</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Ne, děkuji</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Pokud vyloučené weby resetuješ, při příštím přihlašování na některý z nich se ti zobrazí výzva k uložení hesla.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Obnovit vyloučené stránky</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Obnovit vyloučené stránky?</string>

autofill/autofill-impl/src/main/res/values-da/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Foreslået</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automatisk udfyldning af adgangskoder er ikke tilgængelig, fordi din version af Android WebView er for gammel.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automatisk udfyldning af adgangskoder er ikke tilgængelig, fordi din version af Android WebView er forældet eller inkompatibel.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Ryd søgeinput</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Ingen resultater for \"%1$s\"</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Synkronisering af adgangskoder er sat på pause</b>\nNogle adgangskoder er formateret forkert eller er for lange og blev ikke synkroniseret.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Spørg aldrig på dette websted</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Nej tak</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Hvis du nulstiller ekskluderede websteder, vil du blive bedt om at gemme din adgangskode, næste gang du logger ind på en af disse sider.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Nulstil ekskluderede websteder</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Nulstil ekskluderede websteder?</string>

autofill/autofill-impl/src/main/res/values-de/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Vorgeschlagen</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Die automatische Vervollständigung von Passwörtern ist nicht verfügbar, da Ihre Version von Android WebView zu alt ist.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Die automatische Vervollständigung von Passwörtern ist nicht verfügbar, da deine Version von Android WebView nicht aktuell oder inkompatibel ist.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Sucheingabe löschen</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Keine Ergebnisse für „%1$s“</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Die Passwort-Synchronisierung wurde angehalten</b>\nEinige Passwörter sind falsch formatiert oder zu lang und wurden nicht synchronisiert.\n\n</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Für diese Website niemals fragen</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Nein, danke</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Wenn du die ausgeschlossenen Websites zurücksetzt, wirst du aufgefordert, dein Passwort zu speichern, wenn du dich das nächste Mal auf einer dieser Websites anmeldest.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Ausgeschlossene Websites zurücksetzen</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Ausgeschlossene Websites zurücksetzen?</string>

autofill/autofill-impl/src/main/res/values-el/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Προτεινόμενο</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Η αυτόματη συμπλήρωση κωδικών πρόσβασης δεν είναι διαθέσιμη καθώς η έκδοση του Android WebView είναι πολύ παλιά.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Η αυτόματη συμπλήρωση κωδικών πρόσβασης δεν είναι διαθέσιμη καθώς η έκδοση του Android WebView είναι παλιά ή μη συμβατή.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Εκκαθάριση εισαγωγής αναζήτησης</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Δεν υπάρχουν αποτελέσματα για «%1$s»</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Ο συγχρονισμός κωδικών πρόσβασης έχει τεθεί σε παύση</b>\nΟρισμένοι κωδικοί πρόσβασης δεν έχουν μορφοποιηθεί σωστά ή είναι πολύ μεγάλοι και δεν συγχρονίστηκαν.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Μην ζητάτε ποτέ αυτόν τον ιστότοπο</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Όχι, ευχαριστώ</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Εάν κάνετε επαναφορά των αποκλεισμένων ιστότοπων, θα σας ζητηθεί να αποθηκεύσετε τον κωδικό πρόσβασής σας την επόμενη φορά που θα συνδεθείτε σε οποιονδήποτε από τους ιστότοπους αυτούς.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Επαναφορά αποκλεισμένων ιστότοπων</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Επαναφορά αποκλεισμένων ιστότοπων;</string>

autofill/autofill-impl/src/main/res/values-es/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Sugerencias</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">La función de autocompletar para las contraseñas no está disponible porque tu versión de Android WebView es demasiado antigua.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">La función de autocompletar para las contraseñas no está disponible porque tu versión de Android WebView está desfasada o es incompatible.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Borrar búsqueda</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Sin resultados para «%1$s»</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>La sincronización de contraseña está en pausa</b>\nAlgunas contraseñas tienen un formato incorrecto o son demasiado largas y no se han sincronizado.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">No preguntar nunca para esta página</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">No, gracias</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Si restableces los sitios excluidos, se te pedirá que guardes tu contraseña la próxima vez que accedas a cualquiera de estos sitios.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Restablecer sitios excluidos</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">¿Restablecer sitios excluidos?</string>

autofill/autofill-impl/src/main/res/values-et/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Soovitatud</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automaatne täitmine paroolide jaoks pole saadaval, sest sinu Android WebView\'i versioon on liiga vana.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Automaatne täitmine paroolide jaoks pole saadaval, sest sinu Android WebView\'i versioon on aegunud või ühildumatu.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Tühjenda otsingusisend</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Päringule „%1$s” ei leitud tulemusi</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Paroolide sünkroonimine on peatatud</b>\nMõned paroolid on valesti vormindatud või liiga pikad ja neid ei sünkroonitud.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Ära selle saidi kohta rohkem küsi</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Ei, aitäh</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Kui lähtestad välistatud saidid, pakutakse sulle järgmisel korral, kui logid neile saitidele sisse, võimalust parool salvestada.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Lähtesta välistatud saidid</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Kas lähtestada välistatud saidid?</string>

autofill/autofill-impl/src/main/res/values-fi/strings-autofill-impl.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<string name="credentialManagementSuggestionsLabel">Ehdotettu</string>
5858

59-
<string name="credentialManagementWebViewIncompatibleErrorMessage">Salasanojen automaattinen täyttäminen ei ole käytettävissä, koska Android WebView -versiosi on liian vanha.</string>
59+
<string name="credentialManagementWebViewIncompatibleErrorMessage">Salasanojen automaattinen täyttäminen ei ole käytettävissä, koska Android WebView -versiosi on vanhentunut tai yhteensopimaton.</string>
6060

6161
<string name="autofillManagementSearchClearDescription">Tyhjennä hakusyöte</string>
6262
<string name="autofillManagementNoSearchResults" instruction="Placeholder is the query the user has searched for. e.g., No results for &apos;kittens&apos;">Ei tuloksia haulla \'%1$s\'</string>
@@ -145,6 +145,7 @@
145145
<string name="credentials_invalid_request_warning_notif"><b>Salasanojen synkronointi keskeytetty</b>\nSalasanojen synkronointi on keskeytetty.\n\nJotkin salasanat on muotoiltu väärin tai ovat liian pitkiä, eikä niitä synkronoitu.</string>
146146

147147
<string name="saveLoginDialogNeverForThisSite">Älä kysy enää tällä sivustolla</string>
148+
<string name="saveOnboardingLoginDialogSecondaryButton">Ei kiitos</string>
148149
<string name="credentialManagementInstructionNeverForThisSite">Jos nollaat poissuljetut sivustot, sinua pyydetään tallentamaan salasanasi, kun seuraavan kerran kirjaudut sisään jollekin näistä sivustoista.</string>
149150
<string name="credentialManagementClearNeverForThisSiteList">Nollaa poissuljetut sivustot</string>
150151
<string name="credentialManagementClearNeverForThisSiteDialogTitle">Nollataanko poissuljetut sivustot?</string>

0 commit comments

Comments
 (0)