5050public 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