Skip to content

Commit a10b434

Browse files
committed
refactor: Address lint warnings
1 parent 0b9e1bd commit a10b434

File tree

1 file changed

+28
-17
lines changed

1 file changed

+28
-17
lines changed

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

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,29 @@ class ReaderLinkHandler
6767
*/
6868
private fun buildReadNavigateAction(uri: UriWrapper): NavigateAction {
6969
val segments = uri.pathSegments
70-
// Check for path: /blogs/{blogId}/posts/{postId} or /feeds/{feedId}/posts/{feedItemId}
71-
if (segments.size >= 4 &&
72-
(segments[0] == BLOGS_PATH || segments[0] == FEEDS_PATH) &&
73-
segments[2] == POSTS_PATH
74-
) {
75-
val blogId = segments[1].toLongOrNull()
76-
val postId = segments[3].toLongOrNull()
77-
val isFeed = segments[0] == FEEDS_PATH
78-
if (blogId != null && postId != null) {
79-
analyticsUtilsWrapper.trackWithBlogPostDetails(READER_VIEWPOST_INTERCEPTED, blogId, postId)
80-
return ViewPostInReader(blogId, postId, isFeed, uri)
81-
}
70+
if (!isValidReadPath(segments)) {
71+
return OpenReader
72+
}
73+
val blogId = segments[BLOG_ID_PATH_POSITION].toLongOrNull()
74+
val postId = segments[POST_ID_PATH_POSITION].toLongOrNull()
75+
val isFeed = segments[0] == FEEDS_PATH
76+
return if (blogId != null && postId != null) {
77+
analyticsUtilsWrapper.trackWithBlogPostDetails(READER_VIEWPOST_INTERCEPTED, blogId, postId)
78+
ViewPostInReader(blogId, postId, isFeed, uri)
79+
} else {
80+
OpenReader
8281
}
83-
return OpenReader
82+
}
83+
84+
/**
85+
* Checks if the path segments represent a valid read path.
86+
* Valid paths: /blogs/{blogId}/posts/{postId} or /feeds/{feedId}/posts/{feedItemId}
87+
*/
88+
private fun isValidReadPath(segments: List<String>): Boolean {
89+
if (segments.size < MIN_READ_PATH_SEGMENTS) return false
90+
val isBlogsOrFeeds = segments[0] == BLOGS_PATH || segments[0] == FEEDS_PATH
91+
val hasPostsSegment = segments[POSTS_SEGMENT_POSITION] == POSTS_PATH
92+
return isBlogsOrFeeds && hasPostsSegment
8493
}
8594

8695
/**
@@ -91,10 +100,7 @@ class ReaderLinkHandler
91100
val segments = uri.pathSegments
92101
return buildString {
93102
append("$APPLINK_SCHEME$DEEP_LINK_HOST_READ")
94-
if (segments.size >= 4 &&
95-
(segments[0] == BLOGS_PATH || segments[0] == FEEDS_PATH) &&
96-
segments[2] == POSTS_PATH
97-
) {
103+
if (isValidReadPath(segments)) {
98104
append("/${segments[0]}/$BLOG_ID/$POSTS_PATH/$POST_ID")
99105
}
100106
}
@@ -191,5 +197,10 @@ class ReaderLinkHandler
191197
private const val BLOGS_FEEDS_PATH_POSITION = 1
192198
private const val POSTS_PATH_POSITION = 3
193199
private const val DATE_URL_SEGMENTS = 3
200+
// Path segment positions for read deep links: /blogs/{blogId}/posts/{postId}
201+
private const val MIN_READ_PATH_SEGMENTS = 4
202+
private const val BLOG_ID_PATH_POSITION = 1
203+
private const val POSTS_SEGMENT_POSITION = 2
204+
private const val POST_ID_PATH_POSITION = 3
194205
}
195206
}

0 commit comments

Comments
 (0)