Skip to content

Commit 39b0ee0

Browse files
committed
Added logic to redirect Woo users to email login or jetpack required screen
1 parent efd18a8 commit 39b0ee0

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

WordPressLoginFlow/src/main/java/org/wordpress/android/login/LoginSiteAddressFragment.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@
5050
public class LoginSiteAddressFragment extends LoginBaseFormFragment<LoginListener> implements TextWatcher,
5151
OnEditorCommitListener {
5252
private static final String KEY_REQUESTED_SITE_ADDRESS = "KEY_REQUESTED_SITE_ADDRESS";
53+
private static final String KEY_HAS_JETPACK = "KEY_HAS_JETPACK";
5354

5455
public static final String TAG = "login_site_address_fragment_tag";
5556

5657
private WPLoginInputRow mSiteAddressInput;
5758

5859
private String mRequestedSiteAddress;
60+
private boolean mHasJetpack;
5961

6062
private LoginSiteAddressValidator mLoginSiteAddressValidator;
6163

@@ -138,6 +140,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
138140

139141
if (savedInstanceState != null) {
140142
mRequestedSiteAddress = savedInstanceState.getString(KEY_REQUESTED_SITE_ADDRESS);
143+
mHasJetpack = savedInstanceState.getBoolean(KEY_HAS_JETPACK);
141144
} else {
142145
mAnalyticsListener.trackUrlFormViewed();
143146
}
@@ -165,6 +168,7 @@ public void onSaveInstanceState(Bundle outState) {
165168
super.onSaveInstanceState(outState);
166169

167170
outState.putString(KEY_REQUESTED_SITE_ADDRESS, mRequestedSiteAddress);
171+
outState.putBoolean(KEY_HAS_JETPACK, mHasJetpack);
168172
}
169173

170174
@Override public void onDestroyView() {
@@ -305,10 +309,16 @@ public void onWPComSiteFetched(OnWPComSiteFetched event) {
305309
showError(R.string.invalid_site_url_message);
306310
endProgress();
307311
} else {
312+
mHasJetpack = false;
308313
// Start the discovery process
309314
mDispatcher.dispatch(AuthenticationActionBuilder.newDiscoverEndpointAction(mRequestedSiteAddress));
310315
}
311316
} else {
317+
// Woo Login: verify if Jetpack is installed/active/connected
318+
if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) {
319+
mHasJetpack = event.site.isJetpackInstalled() && event.site.isJetpackConnected();
320+
}
321+
312322
if (event.site.isJetpackInstalled() && mLoginListener.getLoginMode() != LoginMode.WPCOM_LOGIN_ONLY) {
313323
// If Jetpack site, treat it as self-hosted and start the discovery process
314324
// An exception is WPCOM_LOGIN_ONLY mode - in that case we're only interested in adding sites
@@ -319,6 +329,12 @@ public void onWPComSiteFetched(OnWPComSiteFetched event) {
319329

320330
endProgress();
321331

332+
// Woo login: if jetpack is not installed/active/connected, redirect to Jetpack required
333+
if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) {
334+
mLoginListener.gotConnectedSiteInfo(event.site.getUrl(), null, mHasJetpack);
335+
return;
336+
}
337+
322338
// it's a wp.com site so, treat it as such.
323339
mLoginListener.gotWpcomSiteInfo(
324340
UrlUtils.removeScheme(event.site.getUrl()),
@@ -360,6 +376,9 @@ public void onDiscoverySucceeded(OnDiscoveryResponse event) {
360376

361377
ArrayList<Integer> oldSitesIDs = SiteUtils.getCurrentSiteIds(mSiteStore, true);
362378
mLoginListener.alreadyLoggedInWpcom(oldSitesIDs);
379+
} else if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) {
380+
// Woo login: if jetpack is not installed/active/connected, redirect to Jetpack required
381+
mLoginListener.gotConnectedSiteInfo(event.failedEndpoint, null, mHasJetpack);
363382
} else {
364383
mLoginListener.gotWpcomSiteInfo(event.failedEndpoint, null, null);
365384
}
@@ -374,6 +393,13 @@ public void onDiscoverySucceeded(OnDiscoveryResponse event) {
374393
}
375394

376395
AppLog.i(T.NUX, "Discovery succeeded, endpoint: " + event.xmlRpcEndpoint);
396+
397+
// Woo login: if jetpack is not installed/active/connected, redirect to Jetpack required
398+
if (mLoginListener.getLoginMode() == LoginMode.WOO_LOGIN_MODE) {
399+
mLoginListener.gotConnectedSiteInfo(requestedSiteAddress, null, mHasJetpack);
400+
return;
401+
}
402+
377403
mLoginListener.gotXmlRpcEndpoint(requestedSiteAddress, event.xmlRpcEndpoint);
378404
}
379405

0 commit comments

Comments
 (0)