File tree Expand file tree Collapse file tree
java/org/wordpress/android/ui/deeplinks
test/java/org/wordpress/android/ui/deeplinks/handlers Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3737 <data
3838 android : host =" notifications"
3939 android : scheme =" jetpack" />
40+ <data
41+ android : host =" home"
42+ android : scheme =" jetpack" />
4043 </intent-filter >
4144 </activity >
4245
Original file line number Diff line number Diff line change 400400 <data
401401 android : host =" notifications"
402402 android : scheme =" wordpress" />
403+ <data
404+ android : host =" home"
405+ android : scheme =" wordpress" />
403406 </intent-filter >
404407
405408 <intent-filter android : autoVerify =" true" >
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.Login
88import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditor
99import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditorForPost
1010import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenEditorForSite
11+ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
1112import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInBrowser
1213import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenInReader
1314import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenNotifications
@@ -74,6 +75,7 @@ class DeepLinkNavigator
7475 is OpenPagesForSite -> ActivityLauncher .viewPagesInNewStack(activity, navigateAction.site)
7576 OpenPages -> ActivityLauncher .viewPagesInNewStack(activity)
7677 is OpenQRCodeAuthFlow -> ActivityLauncher .startQRCodeAuthFlowInNewStack(activity, navigateAction.uri)
78+ OpenHome -> ActivityLauncher .viewMySiteInNewStack(activity)
7779 }
7880 if (navigateAction != LoginForResult ) {
7981 activity.finish()
@@ -101,5 +103,6 @@ class DeepLinkNavigator
101103 data class OpenPagesForSite (val site : SiteModel ) : NavigateAction()
102104 object OpenPages : NavigateAction()
103105 data class OpenQRCodeAuthFlow (val uri : String ) : NavigateAction()
106+ object OpenHome : NavigateAction()
104107 }
105108}
Original file line number Diff line number Diff line change @@ -15,7 +15,8 @@ class DeepLinkHandlers
1515 readerLinkHandler: ReaderLinkHandler ,
1616 pagesLinkHandler: PagesLinkHandler ,
1717 notificationsLinkHandler: NotificationsLinkHandler ,
18- qrCodeAuthLinkHandler: QRCodeAuthLinkHandler
18+ qrCodeAuthLinkHandler: QRCodeAuthLinkHandler ,
19+ homeLinkHandler: HomeLinkHandler
1920) {
2021 private val handlers = listOf (
2122 editorLinkHandler,
@@ -24,7 +25,8 @@ class DeepLinkHandlers
2425 readerLinkHandler,
2526 pagesLinkHandler,
2627 notificationsLinkHandler,
27- qrCodeAuthLinkHandler
28+ qrCodeAuthLinkHandler,
29+ homeLinkHandler
2830 )
2931
3032 private val _toast by lazy {
Original file line number Diff line number Diff line change 1+ package org.wordpress.android.ui.deeplinks.handlers
2+
3+ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
4+ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.OpenHome
5+ import org.wordpress.android.util.UriWrapper
6+ import javax.inject.Inject
7+
8+ class HomeLinkHandler
9+ @Inject constructor () : DeepLinkHandler {
10+ /* *
11+ * Returns true if the URI looks like `wordpress://home`
12+ */
13+ override fun shouldHandleUrl (uri : UriWrapper ): Boolean {
14+ return uri.host == HOME_PATH
15+ }
16+
17+ override fun buildNavigateAction (uri : UriWrapper ): NavigateAction {
18+ return OpenHome
19+ }
20+
21+ override fun stripUrl (uri : UriWrapper ): String {
22+ return buildString {
23+ append(HOME_PATH )
24+ }
25+ }
26+
27+ companion object {
28+ private const val HOME_PATH = " home"
29+ }
30+ }
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ class DeepLinkHandlersTest : BaseUnitTest() {
2020 @Mock lateinit var pagesLinkHandler: PagesLinkHandler
2121 @Mock lateinit var notificationsLinkHandler: NotificationsLinkHandler
2222 @Mock lateinit var qrCodeAuthLinkHandler: QRCodeAuthLinkHandler
23+ @Mock lateinit var homeLinkHandler: HomeLinkHandler
2324 @Mock lateinit var uri: UriWrapper
2425 private lateinit var deepLinkHandlers: DeepLinkHandlers
2526 private lateinit var handlers: List <DeepLinkHandler >
@@ -33,7 +34,8 @@ class DeepLinkHandlersTest : BaseUnitTest() {
3334 readerLinkHandler,
3435 pagesLinkHandler,
3536 notificationsLinkHandler,
36- qrCodeAuthLinkHandler
37+ qrCodeAuthLinkHandler,
38+ homeLinkHandler
3739 )
3840 initDeepLinkHandlers()
3941 }
@@ -46,7 +48,8 @@ class DeepLinkHandlersTest : BaseUnitTest() {
4648 readerLinkHandler,
4749 pagesLinkHandler,
4850 notificationsLinkHandler,
49- qrCodeAuthLinkHandler
51+ qrCodeAuthLinkHandler,
52+ homeLinkHandler
5053 )
5154 }
5255
Original file line number Diff line number Diff line change 1+ package org.wordpress.android.ui.deeplinks.handlers
2+
3+ import org.assertj.core.api.Assertions.assertThat
4+ import org.junit.Before
5+ import org.junit.Test
6+ import org.junit.runner.RunWith
7+ import org.mockito.Mock
8+ import org.mockito.junit.MockitoJUnitRunner
9+ import org.wordpress.android.fluxc.model.SiteModel
10+ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction
11+ import org.wordpress.android.ui.deeplinks.buildUri
12+
13+ @RunWith(MockitoJUnitRunner ::class )
14+ class HomeLinkHandlerTest {
15+ @Mock lateinit var site: SiteModel
16+ private lateinit var homeLinkHandler: HomeLinkHandler
17+
18+ @Before
19+ fun setUp () {
20+ homeLinkHandler = HomeLinkHandler ()
21+ }
22+
23+ @Test
24+ fun `opens home screen from app link` () {
25+ val uri = buildUri(host = " home" )
26+
27+ val navigateAction = homeLinkHandler.buildNavigateAction(uri)
28+
29+ assertThat(navigateAction).isEqualTo(NavigateAction .OpenHome )
30+ }
31+ }
You can’t perform that action at this time.
0 commit comments