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:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user