Stop call timer chronometer when call is closed

This commit is contained in:
Juha Heinanen
2025-06-02 08:37:00 +03:00
parent ba4140196b
commit 06f68ad603
@@ -1193,20 +1193,36 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
} }
if (showCallTimer.value) { if (showCallTimer.value) {
val textColor = LocalCustomColors.current.itemText.toArgb() val textColor = LocalCustomColors.current.itemText.toArgb()
var chronometerInstance: Chronometer? = null
AndroidView( AndroidView(
factory = { context -> factory = { context ->
val chronometer = Chronometer(context).apply { Chronometer(context).apply {
textSize = 16F textSize = 16F
setTextColor(textColor) setTextColor(textColor)
base = SystemClock.elapsedRealtime() - (callDuration * 1000L) base = SystemClock.elapsedRealtime() - (callDuration * 1000L)
start() chronometerInstance = this
} }
chronometer },
update = { chronometerView ->
val newBase = SystemClock.elapsedRealtime() - (callDuration * 1000L)
if (chronometerView.base != newBase) {
chronometerView.base = newBase
}
chronometerView.start()
Log.d(TAG, "Update: Chronometer started/updated")
}, },
modifier = Modifier.padding(start = 6.dp, modifier = Modifier.padding(start = 6.dp,
top = 4.dp, top = 4.dp,
end = if (securityIcon.intValue != -1) 6.dp else 0.dp), end = if (securityIcon.intValue != -1) 6.dp else 0.dp),
) )
DisposableEffect(Unit) {
onDispose {
chronometerInstance?.let {
it.stop()
Log.d(TAG, "DisposableEffect: Chronometer stopped in onDispose")
}
}
}
} }
if (securityIcon.intValue != -1) { if (securityIcon.intValue != -1) {
Icon( Icon(