fix: add event dedup, back button handling, and wake lock for calls

- Deduplicate signaling events via processedEventIds set in
  CallManager to prevent duplicate processing from multiple relays
- BackHandler on CallScreen calls hangup() before navigating back
- KeepScreenOn composable adds FLAG_KEEP_SCREEN_ON during calls
  and clears it on dispose

https://claude.ai/code/session_017hZm7yu7CzmcQgZGSaqSXS
This commit is contained in:
Claude
2026-04-02 00:46:44 +00:00
parent 8114739166
commit 3f0d1aa60f
2 changed files with 26 additions and 1 deletions
@@ -56,6 +56,7 @@ class CallManager(
private var timeoutJob: Job? = null
private var resetJob: Job? = null
private val processedEventIds = mutableSetOf<String>()
companion object {
const val CALL_TIMEOUT_MS = 60_000L // 60 seconds ringing timeout
@@ -198,6 +199,7 @@ class CallManager(
fun onSignalingEvent(event: Event) {
if (isEventTooOld(event)) return
if (!processedEventIds.add(event.id)) return
when (event) {
is CallOfferEvent -> onIncomingCallEvent(event)
@@ -234,6 +236,7 @@ class CallManager(
cancelTimeout()
resetJob?.cancel()
resetJob = null
processedEventIds.clear()
}
private fun transitionToEnded(