Skip to content

Commit 7ae9435

Browse files
committed
refactor: uri parameter extraction into its own function.
1 parent 186a791 commit 7ae9435

File tree

1 file changed

+25
-3
lines changed
  • android/src/main/java/com/segment/analytics/kotlin/android/utilities

1 file changed

+25
-3
lines changed

android/src/main/java/com/segment/analytics/kotlin/android/utilities/DeepLinkUtils.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.segment.analytics.kotlin.android.utilities
22

33
import android.content.Intent
4+
import android.net.Uri
45
import com.segment.analytics.kotlin.core.Analytics
6+
import kotlinx.serialization.json.JsonObject
57
import kotlinx.serialization.json.buildJsonObject
68
import kotlinx.serialization.json.put
79

@@ -13,13 +15,32 @@ class DeepLinkUtils(val analytics: Analytics) {
1315
return
1416
}
1517

16-
val properties = buildJsonObject {
18+
val properties = extractLinkProperties(referrer, intent.data)
19+
analytics.track("Deep Link Opened", properties)
20+
}
1721

22+
/**
23+
* Builds a JsonObject with the parameters of a given Uri.
24+
*
25+
* Note: The Uri must be hierarchical (myUri.isHierarchical == true) for parameters to be
26+
* extracted.
27+
*
28+
* Example hierarchical Uri: http://example.com/
29+
* Example non-hierarchical Uri: mailto:[email protected]
30+
*
31+
* Note: we return the given Uri as a property named: "url" since this is what is expected
32+
* upstream.
33+
*/
34+
fun extractLinkProperties(
35+
referrer: String?,
36+
uri: Uri?
37+
): JsonObject {
38+
val properties = buildJsonObject {
1839
referrer?.let {
1940
put("referrer", it)
2041
}
2142

22-
intent.data?.let { uri ->
43+
if (uri != null) {
2344
if (uri.isHierarchical) {
2445
for (parameter in uri.queryParameterNames) {
2546
val value = uri.getQueryParameter(parameter)
@@ -31,6 +52,7 @@ class DeepLinkUtils(val analytics: Analytics) {
3152
put("url", uri.toString())
3253
}
3354
}
34-
analytics.track("Deep Link Opened", properties)
55+
56+
return properties
3557
}
3658
}

0 commit comments

Comments
 (0)