From 616293344e3abbdbab3c1e193c88d323d561930d Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 14 Oct 2024 13:02:57 +0100 Subject: [PATCH 1/6] Bump fluxc --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 70cbad2ee1..ef436c257e 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ ext { // libs wordpressLintVersion = '2.1.0' wordpressUtilsVersion = '3.5.0' - wordpressFluxCVersion = 'trunk-863f213e0e3a7a4322032e8e8c57a99f77bb48ec' + wordpressFluxCVersion = '3107-f51c7f6c7ce02a207df0b45e074941225850b6ae' gravatarSdkVersion = '0.2.0' // main From a4e7cfd533884097f2e985e8fb840f163c682dca Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 14 Oct 2024 14:23:21 +0100 Subject: [PATCH 2/6] Introduce a new listener function to pass the connect/site-info result --- .../wordpress/android/login/ConnectSiteInfoResult.kt | 11 +++++++++++ .../org/wordpress/android/login/LoginListener.java | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt new file mode 100644 index 0000000000..086f5d2d82 --- /dev/null +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt @@ -0,0 +1,11 @@ +package org.wordpress.android.login + +data class ConnectSiteInfoResult @JvmOverloads constructor( + val url: String, + val urlAfterRedirects: String, + val hasJetpack: Boolean, + /** + * Whether the site is suspended on WordPress.com and can't be connected using Jetpack + */ + val isWPComSuspended: Boolean = false, +) diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java index 25e85e121e..9964353730 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginListener.java @@ -61,7 +61,11 @@ void needs2faSocial(String email, String userId, String nonceAuthenticator, Stri // Login Site Address input callbacks void alreadyLoggedInWpcom(ArrayList oldSitesIds); void gotWpcomSiteInfo(String siteAddress); - void gotConnectedSiteInfo(@NonNull String siteAddress, @Nullable String redirectUrl, boolean hasJetpack); + default void gotConnectSiteInfo(@NonNull ConnectSiteInfoResult result) { + gotConnectedSiteInfo(result.getUrl(), result.getUrlAfterRedirects(), result.getHasJetpack()); + } + + default void gotConnectedSiteInfo(@NonNull String siteAddress, @Nullable String redirectUrl, boolean hasJetpack) { } void gotXmlRpcEndpoint(String inputSiteAddress, String endpointAddress); void handleSslCertificateError(MemorizingTrustManager memorizingTrustManager, SelfSignedSSLCallback callback); void helpSiteAddress(String url); From ca5ced6d45beb322e113b3989d019aa46ef9dea0 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 14 Oct 2024 14:23:57 +0100 Subject: [PATCH 3/6] Update site address logic to handle suspended websites for Woo login --- .../login/LoginSiteAddressFragment.java | 46 +++++++++++++------ 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java index 8d99ea6b83..c4c8171109 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java @@ -32,6 +32,7 @@ import org.wordpress.android.fluxc.store.AccountStore; import org.wordpress.android.fluxc.store.SiteStore.ConnectSiteInfoPayload; import org.wordpress.android.fluxc.store.SiteStore.OnConnectSiteInfoChecked; +import org.wordpress.android.fluxc.store.SiteStore.SiteErrorType; import org.wordpress.android.login.util.SiteUtils; import org.wordpress.android.login.widgets.WPLoginInputRow; import org.wordpress.android.login.widgets.WPLoginInputRow.OnEditorCommitListener; @@ -340,11 +341,13 @@ public void handleDiscoverySuccess(@NonNull String endpointAddress) { String inputSiteAddress = mRequestedSiteAddress; endProgress(); if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) { - mLoginListener.gotConnectedSiteInfo( - mConnectSiteInfoUrl, - mConnectSiteInfoUrlRedirect, - mConnectSiteInfoCalculatedHasJetpack - ); + mLoginListener.gotConnectSiteInfo( + new ConnectSiteInfoResult( + mConnectSiteInfoUrl, + mConnectSiteInfoUrlRedirect, + mConnectSiteInfoCalculatedHasJetpack + ) + ); } else { mLoginListener.gotXmlRpcEndpoint(inputSiteAddress, endpointAddress); } @@ -397,13 +400,26 @@ public void onFetchedConnectSiteInfo(OnConnectSiteInfoChecked event) { event.error.type.name(), event.error.message); - AppLog.e(T.API, "onFetchedConnectSiteInfo has error: " + event.error.message); - if (NetworkUtils.isNetworkAvailable(requireContext())) { - showError(R.string.invalid_site_url_message); + if (event.error.type == SiteErrorType.WPCOM_SITE_SUSPENDED + && mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) { + // the site is WPCom suspended, we should treat it as non-Jetpack site + mConnectSiteInfoCalculatedHasJetpack = false; + mLoginListener.gotConnectSiteInfo( + new ConnectSiteInfoResult( + mRequestedSiteAddress, + mRequestedSiteAddress, + mConnectSiteInfoCalculatedHasJetpack, + true + ) + ); } else { - showError(R.string.error_generic_network); + AppLog.e(T.API, "onFetchedConnectSiteInfo has error: " + event.error.message); + if (NetworkUtils.isNetworkAvailable(requireContext())) { + showError(R.string.invalid_site_url_message); + } else { + showError(R.string.error_generic_network); + } } - endProgressIfNeeded(); } else { boolean hasJetpack = calculateHasJetpack(event.info); @@ -433,10 +449,12 @@ private void handleConnectSiteInfoForWoo(ConnectSiteInfoPayload siteInfo) { mLoginListener.handleSiteAddressError(siteInfo); } else { endProgressIfNeeded(); - mLoginListener.gotConnectedSiteInfo( - mConnectSiteInfoUrl, - mConnectSiteInfoUrlRedirect, - mConnectSiteInfoCalculatedHasJetpack + mLoginListener.gotConnectSiteInfo( + new ConnectSiteInfoResult( + mConnectSiteInfoUrl, + mConnectSiteInfoUrlRedirect, + mConnectSiteInfoCalculatedHasJetpack + ) ); } } From e38977d9358e010214dbc360ba1f37ed9c95ed3b Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 14 Oct 2024 14:24:25 +0100 Subject: [PATCH 4/6] Code cleanup In Woo, XMLRPC discovery is not used anymore, so the code removed here wasn't used --- .../android/login/LoginSiteAddressFragment.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java index c4c8171109..582c33ceec 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java @@ -340,17 +340,7 @@ public void handleDiscoverySuccess(@NonNull String endpointAddress) { // hold the URL in a variable to use below otherwise it gets cleared up by endProgress String inputSiteAddress = mRequestedSiteAddress; endProgress(); - if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) { - mLoginListener.gotConnectSiteInfo( - new ConnectSiteInfoResult( - mConnectSiteInfoUrl, - mConnectSiteInfoUrlRedirect, - mConnectSiteInfoCalculatedHasJetpack - ) - ); - } else { - mLoginListener.gotXmlRpcEndpoint(inputSiteAddress, endpointAddress); - } + mLoginListener.gotXmlRpcEndpoint(inputSiteAddress, endpointAddress); } private void askForHttpAuthCredentials(@NonNull final String url, int messageId) { From 7c872152838eadf9f3c2d10073bf5e9cf1489bf0 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Mon, 14 Oct 2024 14:45:31 +0100 Subject: [PATCH 5/6] Make urlAfterRedirects nullable --- .../java/org/wordpress/android/login/ConnectSiteInfoResult.kt | 2 +- .../org/wordpress/android/login/LoginSiteAddressFragment.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt index 086f5d2d82..a0ab4a7c0e 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/ConnectSiteInfoResult.kt @@ -2,7 +2,7 @@ package org.wordpress.android.login data class ConnectSiteInfoResult @JvmOverloads constructor( val url: String, - val urlAfterRedirects: String, + val urlAfterRedirects: String?, val hasJetpack: Boolean, /** * Whether the site is suspended on WordPress.com and can't be connected using Jetpack diff --git a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java index 582c33ceec..764c5e4159 100644 --- a/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java +++ b/WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java @@ -397,7 +397,7 @@ public void onFetchedConnectSiteInfo(OnConnectSiteInfoChecked event) { mLoginListener.gotConnectSiteInfo( new ConnectSiteInfoResult( mRequestedSiteAddress, - mRequestedSiteAddress, + null, mConnectSiteInfoCalculatedHasJetpack, true ) From 500238c7654b3de7beed9f2145e2cd8f687912f8 Mon Sep 17 00:00:00 2001 From: Hicham Boushaba Date: Fri, 18 Oct 2024 10:00:05 +0100 Subject: [PATCH 6/6] Bump fluxc --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ef436c257e..e6ca23f30a 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ ext { // libs wordpressLintVersion = '2.1.0' wordpressUtilsVersion = '3.5.0' - wordpressFluxCVersion = '3107-f51c7f6c7ce02a207df0b45e074941225850b6ae' + wordpressFluxCVersion = 'trunk-5dfbbc993d2472f6aad2b9f357021506ecfe7152' gravatarSdkVersion = '0.2.0' // main