Skip to content

Commit 57cbd92

Browse files
committed
feat: Add custom Home intent for logged out users
Circumvent the DeepLinkNavigator fallback login case, which displays email login for WPCOM. This change results in the login prologue displaying instead, allowing the user to select WPCOM or self-hosted.
1 parent 0a31feb commit 57cbd92

4 files changed

Lines changed: 16 additions & 5 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,4 +1751,13 @@ public static void startQRCodeAuthFlowInNewStack(@NonNull Context context, @NonN
17511751

17521752
taskStackBuilder.startActivities();
17531753
}
1754+
1755+
public static void showHome(@NonNull Context context, @NonNull Boolean isLoggedIn) {
1756+
if (isLoggedIn) {
1757+
viewMySiteInNewStack(context);
1758+
} else {
1759+
Intent intent = new Intent(context, LoginActivity.class);
1760+
context.startActivity(intent);
1761+
}
1762+
}
17541763
}

WordPress/src/main/java/org/wordpress/android/ui/deeplinks/DeepLinkNavigator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class DeepLinkNavigator
7575
is OpenPagesForSite -> ActivityLauncher.viewPagesInNewStack(activity, navigateAction.site)
7676
OpenPages -> ActivityLauncher.viewPagesInNewStack(activity)
7777
is OpenQRCodeAuthFlow -> ActivityLauncher.startQRCodeAuthFlowInNewStack(activity, navigateAction.uri)
78-
OpenHome -> ActivityLauncher.viewMySiteInNewStack(activity)
78+
is OpenHome -> ActivityLauncher.showHome(activity, navigateAction.isLoggedIn)
7979
}
8080
if (navigateAction != LoginForResult) {
8181
activity.finish()
@@ -103,6 +103,6 @@ class DeepLinkNavigator
103103
data class OpenPagesForSite(val site: SiteModel) : NavigateAction()
104104
object OpenPages : NavigateAction()
105105
data class OpenQRCodeAuthFlow(val uri: String) : NavigateAction()
106-
object OpenHome : NavigateAction()
106+
data class OpenHome(val isLoggedIn: Boolean) : NavigateAction()
107107
}
108108
}

WordPress/src/main/java/org/wordpress/android/ui/deeplinks/DeepLinkingIntentReceiverViewModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.wordpress.android.fluxc.store.AccountStore
88
import org.wordpress.android.modules.UI_THREAD
99
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
1010
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.LoginForResult
11+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
1112
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInBrowser
1213
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.ShowSignInFlow
1314
import org.wordpress.android.ui.deeplinks.handlers.DeepLinkHandlers
@@ -69,7 +70,7 @@ class DeepLinkingIntentReceiverViewModel
6970
if (action != null) {
7071
deepLinkTrackingUtils.track(action, it, uriWrapper)
7172
}
72-
if (accountStore.hasAccessToken() || it is OpenInBrowser || it is ShowSignInFlow) {
73+
if (accountStore.hasAccessToken() || it is OpenInBrowser || it is ShowSignInFlow || it is OpenHome) {
7374
_navigateAction.value = Event(it)
7475
} else {
7576
_navigateAction.value = Event(LoginForResult)

WordPress/src/main/java/org/wordpress/android/ui/deeplinks/handlers/HomeLinkHandler.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package org.wordpress.android.ui.deeplinks.handlers
22

3+
import org.wordpress.android.fluxc.store.AccountStore
34
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
45
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
56
import org.wordpress.android.util.UriWrapper
67
import javax.inject.Inject
78

89
class HomeLinkHandler
9-
@Inject constructor() : DeepLinkHandler {
10+
@Inject constructor(private val accountStore: AccountStore) : DeepLinkHandler {
1011
/**
1112
* Returns true if the URI looks like `wordpress://home`
1213
*/
@@ -15,7 +16,7 @@ class HomeLinkHandler
1516
}
1617

1718
override fun buildNavigateAction(uri: UriWrapper): NavigateAction {
18-
return OpenHome
19+
return OpenHome(accountStore.hasAccessToken())
1920
}
2021

2122
override fun stripUrl(uri: UriWrapper): String {

0 commit comments

Comments
 (0)