Skip to content

Commit 7270c61

Browse files
authored
CMM-1052 support bar deeplinks in addition to mbar (#22406)
* Supporting the /bar/ path and other general URLs * Adding tests * Fix loading comments section * lint * Removing duplicates
1 parent 97c8adf commit 7270c61

File tree

4 files changed

+111
-7
lines changed

4 files changed

+111
-7
lines changed

WordPress/src/main/AndroidManifest.xml

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,10 @@
474474
android:host="public-api.wordpress.com"
475475
android:pathPattern="/mbar/.*"
476476
android:scheme="https" />
477+
<data
478+
android:host="public-api.wordpress.com"
479+
android:pathPattern="/bar/.*"
480+
android:scheme="https" />
477481
</intent-filter>
478482
</activity>
479483

@@ -757,14 +761,72 @@
757761

758762
<data
759763
android:host="wordpress.com"
760-
android:pathPattern="/reader/feeds/.*/posts/.*"
761-
android:scheme="https" >
764+
android:pathPattern="/reader/blogs/.*/posts/.*"
765+
android:scheme="https"
766+
tools:ignore="IntentFilterUniqueDataAttributes" >
762767
</data>
763768

764769
<data
765770
android:host="wordpress.com"
771+
android:pathPattern="/reader/blogs/.*/posts/.*"
772+
android:scheme="http"
773+
tools:ignore="IntentFilterUniqueDataAttributes" >
774+
</data>
775+
776+
<data
777+
android:host="www.wordpress.com"
778+
android:pathPattern="/read/feeds/.*/posts/.*"
779+
android:scheme="https"
780+
tools:ignore="IntentFilterUniqueDataAttributes" >
781+
</data>
782+
783+
<data
784+
android:host="www.wordpress.com"
785+
android:pathPattern="/read/feeds/.*/posts/.*"
786+
android:scheme="http"
787+
tools:ignore="IntentFilterUniqueDataAttributes" >
788+
</data>
789+
790+
<data
791+
android:host="www.wordpress.com"
792+
android:pathPattern="/read/blogs/.*/posts/.*"
793+
android:scheme="https"
794+
tools:ignore="IntentFilterUniqueDataAttributes" >
795+
</data>
796+
797+
<data
798+
android:host="www.wordpress.com"
799+
android:pathPattern="/read/blogs/.*/posts/.*"
800+
android:scheme="http"
801+
tools:ignore="IntentFilterUniqueDataAttributes" >
802+
</data>
803+
804+
<data
805+
android:host="www.wordpress.com"
806+
android:pathPattern="/reader/feeds/.*/posts/.*"
807+
android:scheme="https"
808+
tools:ignore="IntentFilterUniqueDataAttributes" >
809+
</data>
810+
811+
<data
812+
android:host="www.wordpress.com"
766813
android:pathPattern="/reader/feeds/.*/posts/.*"
767-
android:scheme="http" >
814+
android:scheme="http"
815+
tools:ignore="IntentFilterUniqueDataAttributes" >
816+
</data>
817+
818+
<data
819+
android:host="www.wordpress.com"
820+
android:pathPattern="/reader/blogs/.*/posts/.*"
821+
android:scheme="https"
822+
tools:ignore="IntentFilterUniqueDataAttributes" >
823+
</data>
824+
825+
<data
826+
android:host="www.wordpress.com"
827+
android:pathPattern="/reader/blogs/.*/posts/.*"
828+
android:scheme="http"
829+
tools:ignore="IntentFilterUniqueDataAttributes" >
768830
</data>
769831

770832
<action android:name="org.wordpress.android.action.VIEW_POST" />

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ class DeepLinkUriUtils
3434
}
3535

3636
/**
37-
* Tracking URIs like `public-api.wordpress.com/mbar/...` come from emails and should be handled here
37+
* Tracking URIs like `public-api.wordpress.com/mbar/...` or `public-api.wordpress.com/bar/...`
38+
* come from emails and should be handled here
3839
*/
3940
fun isTrackingUrl(uri: UriWrapper): Boolean {
40-
// https://public-api.wordpress.com/mbar/
41+
// https://public-api.wordpress.com/mbar/ or https://public-api.wordpress.com/bar/
42+
val path = uri.pathSegments.firstOrNull()
4143
return uri.host == HOST_API_WORDPRESS_COM &&
42-
uri.pathSegments.firstOrNull() == MOBILE_TRACKING_PATH
44+
(path == MOBILE_TRACKING_PATH || path == REGULAR_TRACKING_PATH)
4345
}
4446

4547
fun isWpLoginUrl(uri: UriWrapper): Boolean {
@@ -51,6 +53,7 @@ class DeepLinkUriUtils
5153
companion object {
5254
private const val HOST_API_WORDPRESS_COM = "public-api.wordpress.com"
5355
private const val MOBILE_TRACKING_PATH = "mbar"
56+
private const val REGULAR_TRACKING_PATH = "bar"
5457
private const val WP_LOGIN = "wp-login.php"
5558
private const val REDIRECT_TO_PARAM = "redirect_to"
5659
}

WordPress/src/main/java/org/wordpress/android/ui/reader/viewmodels/ReaderPostDetailViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,9 @@ class ReaderPostDetailViewModel @Inject constructor(
654654
readerTracker.trackPost(Stat.READER_ARTICLE_RENDERED, it)
655655
_navigationEvents.postValue(Event(ShowPostInWebView(it)))
656656
_uiState.value = convertPostToUiState(it)
657+
if (commentsSnippetFeatureConfig.isEnabled()) {
658+
onRefreshCommentsData(it.blogId, it.postId)
659+
}
657660
}
658661
}
659662

WordPress/src/test/java/org/wordpress/android/ui/deeplinks/DeepLinkUriUtilsTest.kt

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.wordpress.android.fluxc.model.SiteModel
1111
import org.wordpress.android.fluxc.store.SiteStore
1212
import org.wordpress.android.util.UriUtilsWrapper
1313

14-
@RunWith(MockitoJUnitRunner::class)
14+
@RunWith(MockitoJUnitRunner.Silent::class)
1515
class DeepLinkUriUtilsTest {
1616
@Mock
1717
lateinit var siteStore: SiteStore
@@ -30,6 +30,42 @@ class DeepLinkUriUtilsTest {
3030
whenever(uriUtilsWrapper.parse(host)).thenReturn(buildUri)
3131
}
3232

33+
@Test
34+
fun `isTrackingUrl returns true for mbar path`() {
35+
val uri = buildUri("public-api.wordpress.com", "mbar")
36+
37+
val result = deepLinkUriUtils.isTrackingUrl(uri)
38+
39+
assertThat(result).isTrue()
40+
}
41+
42+
@Test
43+
fun `isTrackingUrl returns true for bar path`() {
44+
val uri = buildUri("public-api.wordpress.com", "bar")
45+
46+
val result = deepLinkUriUtils.isTrackingUrl(uri)
47+
48+
assertThat(result).isTrue()
49+
}
50+
51+
@Test
52+
fun `isTrackingUrl returns false for other paths`() {
53+
val uri = buildUri("public-api.wordpress.com", "other")
54+
55+
val result = deepLinkUriUtils.isTrackingUrl(uri)
56+
57+
assertThat(result).isFalse()
58+
}
59+
60+
@Test
61+
fun `isTrackingUrl returns false for different host`() {
62+
val uri = buildUri("wordpress.com", "mbar")
63+
64+
val result = deepLinkUriUtils.isTrackingUrl(uri)
65+
66+
assertThat(result).isFalse()
67+
}
68+
3369
@Test
3470
fun `converts host to site when site exists and host matches URL`() {
3571
site.url = host

0 commit comments

Comments
 (0)