Skip to content

Commit afa2847

Browse files
committed
feat: Segment analytics initialization added
Signed-off-by: Gaurav Goel <[email protected]>
1 parent d997507 commit afa2847

File tree

4 files changed

+71
-1
lines changed

4 files changed

+71
-1
lines changed

core/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ dependencies {
8080

8181
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
8282

83+
//analytics library
84+
implementation "com.segment.analytics.android:analytics:4.11.3"
85+
8386
api 'org.torusresearch:torus-utils-java:4.0.3'
8487
api 'org.torusresearch:fetch-node-details-java:5.0.0'
8588
implementation 'com.auth0.android:jwtdecode:2.0.2'

core/src/main/java/com/web3auth/core/Web3Auth.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.auth0.android.jwt.JWT
1010
import com.google.gson.GsonBuilder
1111
import com.google.gson.JsonArray
1212
import com.google.gson.JsonObject
13+
import com.web3auth.core.analytics.AnalyticsManager
1314
import com.web3auth.core.api.ApiHelper
1415
import com.web3auth.core.api.ApiService
1516
import com.web3auth.core.keystore.IS_SFA
@@ -79,12 +80,23 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
7980
torusUtils = TorusUtils(torusOptions)
8081
SharedPrefsHelper.init(context.applicationContext)
8182
val isSFAValue = SharedPrefsHelper.getBoolean(IS_SFA)
83+
84+
//Session Manager initialization
8285
sessionManager = SessionManager(
8386
context,
8487
web3AuthOptions.sessionTime,
8588
web3AuthOptions.redirectUrl,
8689
sessionNamespace = if (isSFAValue) "sfa" else ""
8790
)
91+
92+
//Segment Analytics initialization
93+
AnalyticsManager.initialize(context.applicationContext)
94+
/*AnalyticsManager.trackEvent(
95+
"Web3AuthEvents", mapOf(
96+
"clientId" to web3AuthOptions.clientId,
97+
"isSFA" to isSFAValue
98+
)
99+
)*/
88100
}
89101

90102
/**
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.web3auth.core.analytics
2+
3+
import android.content.Context
4+
import com.segment.analytics.Analytics
5+
import com.segment.analytics.Properties
6+
import com.segment.analytics.Traits
7+
8+
internal object AnalyticsManager {
9+
10+
private const val SEGMENT_WRITE_KEY = "YOUR_SECRET_WRITE_KEY"
11+
private var analytics: Analytics? = null
12+
private var isInitialized = false
13+
14+
fun initialize(context: Context) {
15+
if (isInitialized) return
16+
17+
analytics = Analytics.Builder(context.applicationContext, SEGMENT_WRITE_KEY)
18+
.trackApplicationLifecycleEvents()
19+
.recordScreenViews()
20+
.build()
21+
22+
Analytics.setSingletonInstance(analytics)
23+
isInitialized = true
24+
}
25+
26+
fun trackEvent(eventName: String, properties: Map<String, Any>? = null) {
27+
if (!isInitialized) return
28+
29+
val props = properties?.let {
30+
Properties().apply {
31+
it.forEach { (k, v) -> putValue(k, v) }
32+
}
33+
}
34+
35+
analytics?.track(eventName, props)
36+
}
37+
38+
fun identifyUser(userId: String, traits: Map<String, Any>? = null) {
39+
if (!isInitialized) return
40+
41+
val traitsObj = traits?.let {
42+
Traits().apply {
43+
it.forEach { (k, v) -> putValue(k, v) }
44+
}
45+
}
46+
47+
analytics?.identify(userId, traitsObj, null)
48+
}
49+
50+
fun reset() {
51+
analytics?.reset()
52+
isInitialized = false
53+
}
54+
}

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ android.useAndroidX=true
1818
# Automatically convert third-party libraries to use AndroidX
1919
android.enableJetifier=true
2020
# Kotlin code style for this project: "official" or "obsolete":
21-
kotlin.code.style=official
21+
kotlin.code.style=official
22+
org.gradle.unsafe.configuration-cache=true

0 commit comments

Comments
 (0)