Skip to content

Commit

Permalink
refactor(capture-sdk): Apply PR requests
Browse files Browse the repository at this point in the history
PP-596
  • Loading branch information
abolfazlimahdi committed Jul 11, 2024
1 parent c68dfbe commit 588f65f
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 66 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.gini.android.capture.internal.provider

import android.content.Context
import java.util.UUID

internal class UniqueIdProvider(context: Context) {

companion object {
private const val SP_NAME = "InstallationIdPref"
}

private val sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE)

fun getUniqueId(key: String): String = sp.getString(
key, null
) ?: UUID.randomUUID().toString().also { setUniqueId(it, key) }


private fun setUniqueId(installationId: String, key: String) {
sp.edit().putString(key, installationId).apply()
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package net.gini.android.capture.tracking.useranalytics

import android.content.Context
import net.gini.android.capture.internal.network.NetworkRequestsManager
import net.gini.android.capture.internal.provider.InstallationIdProvider
import net.gini.android.capture.internal.provider.UniqueIdProvider
import net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsEventProperty
import net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsEventSuperProperty
import net.gini.android.capture.tracking.useranalytics.properties.UserAnalyticsUserProperty
Expand All @@ -14,7 +14,7 @@ import java.util.Queue

internal class BufferedUserAnalyticsEventTracker(
val context: Context,
private val installationIdProvider: InstallationIdProvider = InstallationIdProvider(context),
private val uniqueIdProvider: UniqueIdProvider = UniqueIdProvider(context),
) : UserAnalyticsEventTracker {

private val LOG = LoggerFactory.getLogger(BufferedUserAnalyticsEventTracker::class.java)
Expand Down Expand Up @@ -42,7 +42,7 @@ internal class BufferedUserAnalyticsEventTracker(
context = context,
apiKey = token,
networkRequestsManager = networkRequestsManager,
installationIdProvider = installationIdProvider
uniqueIdProvider = uniqueIdProvider
)
amplitude.startRepeatingJob()
eventTrackers.add(amplitude)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import net.gini.android.capture.internal.network.AmplitudeEventModel
import net.gini.android.capture.internal.network.AmplitudeRoot
import net.gini.android.capture.internal.network.NetworkRequestsManager
import net.gini.android.capture.internal.provider.InstallationIdProvider
import net.gini.android.capture.internal.provider.UserIdProvider
import net.gini.android.capture.internal.provider.UniqueIdProvider
import net.gini.android.capture.tracking.useranalytics.UserAnalytics
import net.gini.android.capture.tracking.useranalytics.UserAnalyticsEvent
import net.gini.android.capture.tracking.useranalytics.UserAnalyticsEventTracker
Expand All @@ -27,12 +27,16 @@ internal class AmplitudeUserAnalyticsEventTracker(
val context: Context,
val apiKey: AmplitudeAnalyticsApiKey,
val networkRequestsManager: NetworkRequestsManager,
val installationIdProvider: InstallationIdProvider = InstallationIdProvider(context),
val userIdProvider: UserIdProvider = UserIdProvider(context)
val uniqueIdProvider: UniqueIdProvider = UniqueIdProvider(context)
) : UserAnalyticsEventTracker {

private val LOG = LoggerFactory.getLogger(AmplitudeUserAnalyticsEventTracker::class.java)

companion object {
private const val KEY_USER_ID = "user_id"
private const val KEY_INSTALLATION_ID = "installation_id"
}

private val superProperties = mutableSetOf<UserAnalyticsEventSuperProperty>()
private lateinit var userProperties: Map<String, Any>

Expand Down Expand Up @@ -73,8 +77,8 @@ internal class AmplitudeUserAnalyticsEventTracker(

events.add(
AmplitudeEventModel(
userId = userIdProvider.getUserId(),
deviceId = installationIdProvider.getInstallationId(),
userId = uniqueIdProvider.getUniqueId(KEY_USER_ID),
deviceId = uniqueIdProvider.getUniqueId(KEY_INSTALLATION_ID),
eventType = eventName.eventName,
time = c.timeInMillis,
platform = contextProvider.osName,
Expand All @@ -101,24 +105,24 @@ internal class AmplitudeUserAnalyticsEventTracker(

fun startRepeatingJob(): Job {
return CoroutineScope(Dispatchers.IO).launch {
while (true) {
if (events.isNotEmpty()) {
val reqBody = AmplitudeRoot(apiKey = apiKey.key, events.toList())
networkRequestsManager.sendEvents(reqBody, UUID.randomUUID())
events.clear()
}
while (isActive) {
sendEventsToAmplitudeApi()
delay(5000)
}
}
}

override fun flushEvents() {
CoroutineScope(Dispatchers.IO).launch {
if (events.isNotEmpty()) {
val reqBody = AmplitudeRoot(apiKey = apiKey.key, events.toList())
networkRequestsManager.sendEvents(reqBody, UUID.randomUUID())
events.clear()
}
sendEventsToAmplitudeApi()
}
}

private fun sendEventsToAmplitudeApi() {
if (events.isNotEmpty()) {
val reqBody = AmplitudeRoot(apiKey = apiKey.key, events.toList())
networkRequestsManager.sendEvents(reqBody, UUID.randomUUID())
events.clear()
}
}

Expand Down

0 comments on commit 588f65f

Please sign in to comment.