mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-03-29 03:03:05 -04:00
feat(deps): add Datadog session replay libraries (#2665)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
@@ -39,6 +39,9 @@ import com.datadog.android.rum.GlobalRumMonitor
|
||||
import com.datadog.android.rum.Rum
|
||||
import com.datadog.android.rum.RumConfiguration
|
||||
import com.datadog.android.rum.tracking.AcceptAllNavDestinations
|
||||
import com.datadog.android.sessionreplay.SessionReplay
|
||||
import com.datadog.android.sessionreplay.SessionReplayConfiguration
|
||||
import com.datadog.android.sessionreplay.compose.ComposeExtensionSupport
|
||||
import com.datadog.android.timber.DatadogTree
|
||||
import com.datadog.android.trace.AndroidTracer
|
||||
import com.datadog.android.trace.Trace
|
||||
@@ -188,12 +191,20 @@ open class GeeksvilleApplication :
|
||||
val tracer = AndroidTracer.Builder().build()
|
||||
GlobalTracer.registerIfAbsent(tracer)
|
||||
|
||||
val sessionReplayConfig =
|
||||
SessionReplayConfiguration.Builder(sampleRate = 20.0f)
|
||||
// in case you need Jetpack Compose support
|
||||
.addExtensionSupport(ComposeExtensionSupport())
|
||||
.build()
|
||||
|
||||
SessionReplay.enable(sessionReplayConfig)
|
||||
|
||||
Timber.plant(Timber.DebugTree(), DatadogTree(logger))
|
||||
}
|
||||
}
|
||||
|
||||
fun setAttributes(firmwareVersion: String, deviceHardware: DeviceHardware) {
|
||||
GlobalRumMonitor.get().addAttribute("firmware_version", firmwareVersion)
|
||||
GlobalRumMonitor.get().addAttribute("firmware_version", firmwareVersion.extractSemanticVersion())
|
||||
GlobalRumMonitor.get().addAttribute("device_hardware", deviceHardware.hwModelSlug)
|
||||
}
|
||||
|
||||
@@ -212,3 +223,11 @@ fun AddNavigationTracking(navController: NavHostController) {
|
||||
destinationPredicate = AcceptAllNavDestinations(),
|
||||
)
|
||||
}
|
||||
|
||||
fun String.extractSemanticVersion(): String {
|
||||
// Regex to capture up to three numeric parts separated by dots
|
||||
val regex = """^(\d+)(?:\.(\d+))?(?:\.(\d+))?""".toRegex()
|
||||
val matchResult = regex.find(this)
|
||||
return matchResult?.groupValues?.drop(1)?.filter { it.isNotEmpty() }?.joinToString(".")
|
||||
?: this // Fallback to original if no match
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user