@@ -13,6 +13,7 @@ import com.woocommerce.android.experiment.JetpackInstallationExperiment
1313import com.woocommerce.android.experiment.JetpackInstallationExperiment.JetpackInstallationVariant
1414import com.woocommerce.android.ui.login.AccountRepository
1515import com.woocommerce.android.ui.sitepicker.SitePickerRepository
16+ import com.woocommerce.android.util.UrlUtils
1617import com.woocommerce.android.viewmodel.MultiLiveEvent
1718import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.Exit
1819import com.woocommerce.android.viewmodel.MultiLiveEvent.Event.ExitWithResult
@@ -35,8 +36,6 @@ import kotlinx.coroutines.flow.map
3536import kotlinx.coroutines.flow.transformLatest
3637import kotlinx.coroutines.flow.zip
3738import kotlinx.coroutines.launch
38- import org.wordpress.android.fluxc.network.discovery.DiscoveryUtils
39- import org.wordpress.android.util.UrlUtils
4039import javax.inject.Inject
4140import kotlin.text.RegexOption.IGNORE_CASE
4241
@@ -47,7 +46,8 @@ class SitePickerSiteDiscoveryViewModel @Inject constructor(
4746 private val accountRepository : AccountRepository ,
4847 private val resourceProvider : ResourceProvider ,
4948 private val analyticsTracker : AnalyticsTrackerWrapper ,
50- private val jetpackInstallationExperiment : JetpackInstallationExperiment
49+ private val jetpackInstallationExperiment : JetpackInstallationExperiment ,
50+ private val urlUtils : UrlUtils
5151) : ScopedViewModel(savedStateHandle) {
5252 companion object {
5353 private const val FETCHED_URL_KEY = " fetched_url"
@@ -174,7 +174,7 @@ class SitePickerSiteDiscoveryViewModel @Inject constructor(
174174
175175 sitePickRepository.fetchSiteInfo(siteAddressFlow.value).fold(
176176 onSuccess = {
177- val siteAddress = (it.urlAfterRedirects ? : it.url).sanitiseUrl( )
177+ val siteAddress = urlUtils.sanitiseUrl (it.urlAfterRedirects ? : it.url)
178178 // Remove protocol prefix
179179 val protocolRegex = Regex (" ^(http[s]?://)" , IGNORE_CASE )
180180 fetchedSiteUrl = siteAddress.replaceFirst(protocolRegex, " " )
@@ -271,22 +271,6 @@ class SitePickerSiteDiscoveryViewModel @Inject constructor(
271271 }
272272 }
273273
274- /* *
275- * Basic sanitization of the URL based on the same logic we use in the XMLRPC discovery
276- * see: https://github.com/wordpress-mobile/WordPress-FluxC-Android/blob/94601a5d4c1c98068adde0352ecc25e6d0046f35/fluxc/src/main/java/org/wordpress/android/fluxc/network/discovery/SelfHostedEndpointFinder.java#L292
277- */
278- private fun String.sanitiseUrl (): String {
279- return trim()
280- .trimEnd(' /' )
281- .let {
282- // Convert IDN names to punycode if necessary
283- UrlUtils .convertUrlToPunycodeIfNeeded(it)
284- }.let {
285- // Strip url from known usual trailing paths
286- DiscoveryUtils .stripKnownPaths(it)
287- }
288- }
289-
290274 private enum class Step {
291275 AddressInput , JetpackUnavailable , NotWordpress
292276 }
0 commit comments