Skip to content

Commit 9c519dc

Browse files
Move sanitiseUrl inside UrlUtils to provide better usage context
1 parent a321756 commit 9c519dc

File tree

3 files changed

+21
-20
lines changed

3 files changed

+21
-20
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/login/LoginActivity.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ import com.woocommerce.android.util.ActivityUtils
6565
import com.woocommerce.android.util.ChromeCustomTabUtils
6666
import com.woocommerce.android.util.UrlUtils
6767
import com.woocommerce.android.util.WooLog
68-
import com.woocommerce.android.util.sanitiseUrl
6968
import dagger.android.AndroidInjector
7069
import dagger.android.DispatchingAndroidInjector
7170
import dagger.android.HasAndroidInjector
@@ -547,7 +546,7 @@ class LoginActivity :
547546
override fun gotConnectedSiteInfo(siteAddress: String, redirectUrl: String?, hasJetpack: Boolean) {
548547
// If the redirect url is available, use that as the preferred url. Pass this url to the other fragments
549548
// with the protocol since it is needed for initiating forgot password flow etc in the login process.
550-
val inputSiteAddress = (redirectUrl ?: siteAddress).sanitiseUrl()
549+
val inputSiteAddress = urlUtils.sanitiseUrl(redirectUrl ?: siteAddress)
551550

552551
// Save site address to app prefs so it's available to MainActivity regardless of how the user
553552
// logs into the app. Strip the protocol from this url string prior to saving to AppPrefs since it's

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/sitepicker/sitediscovery/SitePickerSiteDiscoveryViewModel.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.woocommerce.android.experiment.JetpackInstallationExperiment
1313
import com.woocommerce.android.experiment.JetpackInstallationExperiment.JetpackInstallationVariant
1414
import com.woocommerce.android.ui.login.AccountRepository
1515
import com.woocommerce.android.ui.sitepicker.SitePickerRepository
16-
import com.woocommerce.android.util.sanitiseUrl
16+
import com.woocommerce.android.util.UrlUtils
1717
import com.woocommerce.android.viewmodel.MultiLiveEvent
1818
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit
1919
import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ExitWithResult
@@ -46,7 +46,8 @@ class SitePickerSiteDiscoveryViewModel @Inject constructor(
4646
private val accountRepository: AccountRepository,
4747
private val resourceProvider: ResourceProvider,
4848
private val analyticsTracker: AnalyticsTrackerWrapper,
49-
private val jetpackInstallationExperiment: JetpackInstallationExperiment
49+
private val jetpackInstallationExperiment: JetpackInstallationExperiment,
50+
private val urlUtils: UrlUtils
5051
) : ScopedViewModel(savedStateHandle) {
5152
companion object {
5253
private const val FETCHED_URL_KEY = "fetched_url"
@@ -173,7 +174,7 @@ class SitePickerSiteDiscoveryViewModel @Inject constructor(
173174

174175
sitePickRepository.fetchSiteInfo(siteAddressFlow.value).fold(
175176
onSuccess = {
176-
val siteAddress = (it.urlAfterRedirects ?: it.url).sanitiseUrl()
177+
val siteAddress = urlUtils.sanitiseUrl(it.urlAfterRedirects ?: it.url)
177178
// Remove protocol prefix
178179
val protocolRegex = Regex("^(http[s]?://)", IGNORE_CASE)
179180
fetchedSiteUrl = siteAddress.replaceFirst(protocolRegex, "")

WooCommerce/src/main/kotlin/com/woocommerce/android/util/UrlUtils.kt

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@ class UrlUtils @Inject constructor(
1515
val tosUrlWithLocale by lazy {
1616
"${AppUrls.AUTOMATTIC_TOS}?locale=${LanguageUtils.getPatchedCurrentDeviceLanguage(context)}"
1717
}
18-
}
1918

20-
/**
21-
* Basic sanitization of the URL based on the same logic we use in the XMLRPC discovery
22-
* see: https://github.com/wordpress-mobile/WordPress-FluxC-Android/blob/94601a5d4c1c98068adde0352ecc25e6d0046f35/fluxc/src/main/java/org/wordpress/android/fluxc/network/discovery/SelfHostedEndpointFinder.java#L292
23-
*/
24-
fun String.sanitiseUrl(): String {
25-
return trim()
26-
.trimEnd('/')
27-
.let {
28-
// Convert IDN names to punycode if necessary
29-
UrlUtils.convertUrlToPunycodeIfNeeded(it)
30-
}.let {
31-
// Strip url from known usual trailing paths
32-
DiscoveryUtils.stripKnownPaths(it)
33-
}
19+
/**
20+
* Basic sanitization of the URL based on the same logic we use in the XMLRPC discovery
21+
* see: https://github.com/wordpress-mobile/WordPress-FluxC-Android/blob/94601a5d4c1c98068adde0352ecc25e6d0046f35/fluxc/src/main/java/org/wordpress/android/fluxc/network/discovery/SelfHostedEndpointFinder.java#L292
22+
*/
23+
fun sanitiseUrl(url: String): String {
24+
return url
25+
.trim()
26+
.trimEnd('/')
27+
.let {
28+
// Convert IDN names to punycode if necessary
29+
UrlUtils.convertUrlToPunycodeIfNeeded(it)
30+
}.let {
31+
// Strip url from known usual trailing paths
32+
DiscoveryUtils.stripKnownPaths(it)
33+
}
34+
}
3435
}

0 commit comments

Comments
 (0)