8000 Replace location dialog subtitle copy in requests from our SERP (#1227) · sdevpiyush/Android@f748370 · GitHub
[go: up one dir, main page]

Skip to content

Commit f748370

Browse files
authored
Replace location dialog subtitle copy in requests from our SERP (duckduckgo#1227)
* we now show a different message if the request comes from duckduckgo.com * addressing PR comments
1 parent cc50e8c commit f748370

File tree

2 files changed

+72
-49
lines changed

2 files changed

+72
-49
lines changed

app/src/main/java/com/duckduckgo/app/location/ui/SiteLocationPermissionDialog.kt

Lines changed: 69 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class SiteLocationPermissionDialog : DialogFragment() {
4141
@Inject
4242
lateinit var faviconManager: FaviconManager
4343

44-
var faviconJob: Job? = null
44+
private var faviconJob: Job? = null
4545

4646
interface SiteLocationPermissionDialogListener {
4747
fun onSiteLocationPermissionSelected(domain: String, permission: LocationPermissionType)
@@ -71,6 +71,7 @@ class SiteLocationPermissionDialog : DialogFragment() {
7171
val rootView = layoutInflater.inflate(R.layout.content_site_location_permission_dialog, null)
7272

7373
val title = rootView.find<TextView>(R.id.sitePermissionDialogTitle)
74+
val subtitle = rootView.find<TextView>(R.id.sitePermissionDialogSubtitle)
7475
val favicon = rootView.find<ImageView>(R.id.sitePermissionDialogFavicon)
7576
val allowAlways = rootView.find<TextView>(R.id.siteAllowAlwaysLocationPermission)
7677
val allowOnce = rootView.find<TextView>(R.id.siteAllowOnceLocationPermission)
@@ -84,6 +85,7 @@ class SiteLocationPermissionDialog : DialogFragment() {
8485

8586
validateBundleArguments()
8687
populateTitle(title)
88+
populateSubtitle(subtitle)
8789
populateFavicon(favicon)
8890
configureListeners(allowAlways, allowOnce, denyOnce, denyAlways)
8991
hideExtraViews(allowOnce, denyOnce, extraDivider, anotherDivider)
@@ -97,28 +99,40 @@ class SiteLocationPermissionDialog : DialogFragment() {
9799
super.onDetach()
98100
}
99101

102+
private fun getOriginUrl(): String {
103+
return requireArguments().getString(KEY_REQUEST_ORIGIN)!!
104+
}
105+
106+
private fun getTabId(): String {
107+
return requireArguments().getString(KEY_TAB_ID)!!
108+
}
109+
110+
private fun isEditingPermissions(): Boolean {
111+
return requireArguments().getBoolean(KEY_EDITING_PERMISSION)
112+
}
113+
100114
private fun populateTitle(title: TextView) {
101-
arguments?.let { args ->
102-
val originUrl = args.getString(KEY_REQUEST_ORIGIN)!!
103-
val dialogTitle = getString(R.string.preciseLocationSiteDialogTitle, originUrl.websiteFromGeoLocationsApiOrigin())
104-
title.text = dialogTitle
115+
title.text = getString(R.string.preciseLocationSiteDialogTitle, getOriginUrl().websiteFromGeoLocationsApiOrigin())
116+
}
117+
118+
private fun populateSubtitle(subtitle: TextView) {
119+
if (getOriginUrl().websiteFromGeoLocationsApiOrigin() == DDG_DOMAIN) {
120+
subtitle.text = getString(R.string.preciseLocationDDGDialogSubtitle)
121+
} else {
122+
subtitle.text = getString(R.string.preciseLocationSiteDialogSubtitle)
105123
}
106124
}
107125

108126
private fun populateFavicon(imageView: ImageView) {
109-
arguments?.let { args ->
110-
val originUrl = args.getString(KEY_REQUEST_ORIGIN)
111-
val tabId = args.getString(KEY_TAB_ID, "")
112-
113-
originUrl?.let { url ->
114-
faviconJob?.cancel()
115-
faviconJob = this.lifecycleScope.launch {
116-
if (tabId.isNotBlank()) {
117-
faviconManager.loadToViewFromTemp(tabId, url, imageView)
118-
} else {
119-
faviconManager.loadToViewFromPersisted(url, imageView)
120-
}
121-
}
127+
val originUrl = getOriginUrl()
128+
val tabId = getTabId()
129+
130+
faviconJob?.cancel()
131+
faviconJob = this.lifecycleScope.launch {
132+
if (tabId.isNotBlank()) {
133+
faviconManager.loadToViewFromTemp(tabId, originUrl, imageView)
134+
} else {
135+
faviconManager.loadToViewFromPersisted(originUrl, imageView)
122136
}
123137
}
124138
}
@@ -129,25 +143,24 @@ class SiteLocationPermissionDialog : DialogFragment() {
129143
denyOnce: TextView,
130144
denyAlways: TextView
131145
) {
132-
arguments?.let { args ->
133-
val originUrl = args.getString(KEY_REQUEST_ORIGIN)!!
134-
allowAlways.setOnClickListener {
135-
dismiss()
136-
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.ALLOW_ALWAYS)
137-
}
138-
allowOnce.setOnClickListener {
139-
dismiss()
140-
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.ALLOW_ONCE)
141-
}
142-
denyOnce.setOnClickListener {
143-
dismiss()
144-
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.DENY_ONCE)
145-
}
146-
denyAlways.setOnClickListener {
147-
dismiss()
148-
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.DENY_ALWAYS)
149-
}
146+
val originUrl = getOriginUrl()
147+
allowAlways.setOnClickListener {
148+
dismiss()
149+
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.ALLOW_ALWAYS)
150+
}
151+
allowOnce.setOnClickListener {
152+
dismiss()
153+
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.ALLOW_ONCE)
154+
}
155+
denyOnce.setOnClickListener {
156+
dismiss()
157+
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.DENY_ONCE)
150158
}
159+
denyAlways.setOnClickListener {
160+
dismiss()
161+
listener.onSiteLocationPermissionSelected(originUrl, LocationPermissionType.DENY_ALWAYS)
162+
}
163+
151164
}
152165

153166
private fun hideExtraViews(
@@ -156,23 +169,16 @@ class SiteLocationPermissionDialog : DialogFragment() {
156169
dividerOne: View,
157170
dividerTwo: View
158171
) {
159-
arguments?.let { args ->
160-
161-
val isEditing = args.getBoolean(KEY_EDITING_PERMISSION)
162-
if (isEditing) {
163-
dividerOne.gone()
164-
dividerTwo.gone()
165-
allowOnce.gone()
166-
denyOnce.gone()
167-
}
172+
if (isEditingPermissions()) {
173+
dividerOne.gone()
174+
dividerTwo.gone()
175+
allowOnce.gone()
176+
denyOnce.gone()
168177
}
169178
}
170179

171180
private fun makeCancellable() {
172-
arguments?.let { args ->
173-
val isEditing = args.getBoolean(KEY_EDITING_PERMISSION)
174-
isCancelable = isEditing
175-
}
181+
isCancelable = isEditingPermissions()
176182
}
177183

178184
private fun validateBundleArguments() {
@@ -181,6 +187,18 @@ class SiteLocationPermissionDialog : DialogFragment() {
181187
if (!args.containsKey(KEY_REQUEST_ORIGIN)) {
182188
throw IllegalArgumentException("Bundle arguments required [KEY_REQUEST_ORIGIN")
183189
}
190+
if (args.getString(KEY_REQUEST_ORIGIN) == null) {
191+
throw IllegalArgumentException("Bundle arguments can't be null [KEY_REQUEST_ORIGIN")
192+
}
193+
if (!args.containsKey(KEY_TAB_ID)) {
194+
throw IllegalArgumentException("Bundle arguments required [KEY_TAB_ID")
195+
}
196+
if (args.getString(KEY_TAB_ID) == null) {
197+
throw IllegalArgumentException("Bundle arguments can't be null [KEY_TAB_ID")
198+
}
199+
if (!args.containsKey(KEY_EDITING_PERMISSION)) {
200+
throw IllegalArgumentException("Bundle arguments required [KEY_EDITING_PERMISSION")
201+
}
184202
}
185203

186204
companion object {
@@ -190,6 +208,8 @@ class SiteLocationPermissionDialog : DialogFragment() {
190208
private const val KEY_EDITING_PERMISSION = "KEY_SCREEN_FROM"
191209
private const val KEY_TAB_ID = "TAB_ID"
192210

211+
private const val DDG_DOMAIN = "duckduckgo.com"
212+
193213
fun instance(origin: String, isEditingPermission: Boolean, tabId: String): SiteLocationPermissionDialog {
194214
return SiteLocationPermissionDialog().also { fragment ->
195215
val bundle = Bundle()

app/src/main/res/values/string-untranslated.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,7 @@
4747
<string name="importBookmarksError">Couldn\'t import any bookmarks, something went wrong</string>
4848
<string name="importBookmarksEmpty">The file has no bookmarks to import</string>
4949
<string name="importBookmarksSuccess">Successfully imported %1$d bookmarks</string>
50+
51+
<!-- Precise Location Improvements -->
52+
<string name="preciseLocationDDGDialogSubtitle">We only use your anonymous location to deliver better results, closer to you. You can always change your mind later.</string>
5053
</resources>

0 commit comments

Comments
 (0)
0