feat(deps): add Datadog session replay libraries (#2665)

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
James Rich
2025-08-08 17:14:01 -05:00
committed by GitHub
parent 4a7e3e35e0
commit 8491f8a60e
2 changed files with 23 additions and 2 deletions

View File

@@ -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
}