Skip to content

Commit 077abba

Browse files
committed
refactor: Align HomeLinkHandler with existing handlers
The existing StartLinkHandler implements a very similar scenario, so this updates the HomeLinkHandler to mirror that code.
1 parent deea967 commit 077abba

5 files changed

Lines changed: 52 additions & 23 deletions

File tree

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,12 +1752,8 @@ public static void startQRCodeAuthFlowInNewStack(@NonNull Context context, @NonN
17521752
taskStackBuilder.startActivities();
17531753
}
17541754

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-
}
1755+
public static void showLoginPrologue(@NonNull Context context) {
1756+
Intent intent = new Intent(context, LoginActivity.class);
1757+
context.startActivity(intent);
17621758
}
17631759
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.Login
88
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditor
99
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditorForPost
1010
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditorForSite
11-
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
11+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenMySite
1212
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInBrowser
1313
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInReader
14+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenLoginPrologue
1415
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenNotifications
1516
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenPages
1617
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenPagesForSite
@@ -75,7 +76,8 @@ class DeepLinkNavigator
7576
is OpenPagesForSite -> ActivityLauncher.viewPagesInNewStack(activity, navigateAction.site)
7677
OpenPages -> ActivityLauncher.viewPagesInNewStack(activity)
7778
is OpenQRCodeAuthFlow -> ActivityLauncher.startQRCodeAuthFlowInNewStack(activity, navigateAction.uri)
78-
is OpenHome -> ActivityLauncher.showHome(activity, navigateAction.isLoggedIn)
79+
OpenMySite -> ActivityLauncher.viewMySiteInNewStack(activity)
80+
OpenLoginPrologue -> ActivityLauncher.showLoginPrologue(activity)
7981
}
8082
if (navigateAction != LoginForResult) {
8183
activity.finish()
@@ -103,6 +105,7 @@ class DeepLinkNavigator
103105
data class OpenPagesForSite(val site: SiteModel) : NavigateAction()
104106
object OpenPages : NavigateAction()
105107
data class OpenQRCodeAuthFlow(val uri: String) : NavigateAction()
106-
data class OpenHome(val isLoggedIn: Boolean) : NavigateAction()
108+
object OpenMySite : NavigateAction()
109+
object OpenLoginPrologue : NavigateAction()
107110
}
108111
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ 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
1211
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInBrowser
12+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenLoginPrologue
1313
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.ShowSignInFlow
1414
import org.wordpress.android.ui.deeplinks.handlers.DeepLinkHandlers
1515
import org.wordpress.android.ui.deeplinks.handlers.ServerTrackingHandler
@@ -82,7 +82,7 @@ class DeepLinkingIntentReceiverViewModel
8282
return accountStore.hasAccessToken() ||
8383
action is OpenInBrowser ||
8484
action is ShowSignInFlow ||
85-
action is OpenHome
85+
action is OpenLoginPrologue
8686
}
8787

8888
private fun buildNavigateAction(uri: UriWrapper, rootUri: UriWrapper = uri): NavigateAction? {

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package org.wordpress.android.ui.deeplinks.handlers
22

33
import org.wordpress.android.fluxc.store.AccountStore
44
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
5-
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
5+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenMySite
6+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenLoginPrologue
67
import org.wordpress.android.util.UriWrapper
78
import javax.inject.Inject
89

@@ -16,13 +17,15 @@ class HomeLinkHandler
1617
}
1718

1819
override fun buildNavigateAction(uri: UriWrapper): NavigateAction {
19-
return OpenHome(accountStore.hasAccessToken())
20+
return if (accountStore.hasAccessToken()) {
21+
OpenMySite
22+
} else {
23+
OpenLoginPrologue
24+
}
2025
}
2126

2227
override fun stripUrl(uri: UriWrapper): String {
23-
return buildString {
24-
append(HOME_PATH)
25-
}
28+
return HOME_PATH;
2629
}
2730

2831
companion object {
Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,52 @@
11
package org.wordpress.android.ui.deeplinks.handlers
22

3+
import com.nhaarman.mockitokotlin2.mock
4+
import com.nhaarman.mockitokotlin2.whenever
35
import org.assertj.core.api.Assertions.assertThat
46
import org.junit.Before
57
import org.junit.Test
6-
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
8+
import org.junit.runner.RunWith
9+
import org.mockito.Mock
10+
import org.mockito.junit.MockitoJUnitRunner
11+
import org.wordpress.android.fluxc.store.AccountStore
12+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenMySite
13+
import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenLoginPrologue
714
import org.wordpress.android.ui.deeplinks.buildUri
815

16+
@RunWith(MockitoJUnitRunner::class)
917
class HomeLinkHandlerTest {
18+
@Mock lateinit var accountStore: AccountStore
1019
private lateinit var homeLinkHandler: HomeLinkHandler
1120

1221
@Before
1322
fun setUp() {
14-
homeLinkHandler = HomeLinkHandler()
23+
homeLinkHandler = HomeLinkHandler(accountStore)
1524
}
1625

1726
@Test
18-
fun `opens home screen from app link`() {
19-
val uri = buildUri(host = "home")
27+
fun `returns login prologue action when user is logged out`() {
28+
whenever(accountStore.hasAccessToken()).thenReturn(false)
2029

21-
val navigateAction = homeLinkHandler.buildNavigateAction(uri)
30+
val navigateAction = homeLinkHandler.buildNavigateAction(mock())
2231

23-
assertThat(navigateAction).isEqualTo(NavigateAction.OpenHome)
32+
assertThat(navigateAction).isEqualTo(OpenLoginPrologue)
33+
}
34+
35+
@Test
36+
fun `returns my site action when user is logged in`() {
37+
whenever(accountStore.hasAccessToken()).thenReturn(true)
38+
39+
val navigateAction = homeLinkHandler.buildNavigateAction(mock())
40+
41+
assertThat(navigateAction).isEqualTo(OpenMySite)
42+
}
43+
44+
@Test
45+
fun `builds URL for tracking`() {
46+
val homeUri = buildUri("home")
47+
48+
val strippedUrl = homeLinkHandler.stripUrl(homeUri)
49+
50+
assertThat(strippedUrl).isEqualTo("home")
2451
}
2552
}

0 commit comments

Comments
 (0)