fix(calls): only cancel-push unanswered calls; add native-call telemetry
- Re-ring on disconnect: sendCallCancel now only fires for UNANSWERED calls. An answered call ends via the WS event on both (awake) sides; a cancel push was re-ringing the device that just hung up. - Native-call telemetry (temporary): the plugin fires callConnected/callError on its LiveKit connection; the WebView reports nc-answer/nc-connected/nc-error/nc-end/ nc-outgoing to /api/push-debug so we can see from server logs whether the native room actually connects (no device console available). Served — no rebuild needed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+4
-2
@@ -145,8 +145,10 @@ async function endDmCallByRoom(room, silent) {
|
||||
call.users.forEach((uid) => { try { CHAT.pushToUser(uid, { type: 'chat-message', message: dto }); } catch (_) {} });
|
||||
} catch (_) {}
|
||||
call.users.forEach((uid, i) => { try { CHAT.pushToUser(uid, { type: 'dm-call', active: false, uuid: call.uuid, with: call.users[1 - i], room }); } catch (_) {} });
|
||||
// Stop any CallKit ring on a killed/backgrounded device (no WS to receive the dm-call above).
|
||||
try { for (const uid of call.users) PUSH.sendCallCancel(uid, call.uuid); } catch (_) {}
|
||||
// Stop the CallKit ring on a device that's still RINGING (unanswered) — a killed/asleep callee has no WS
|
||||
// to receive the dm-call above. For an ANSWERED call both sides are awake (the WS event ends it), and a
|
||||
// cancel push would re-ring the device that just hung up — so only cancel when it was NOT answered.
|
||||
if (!call.answered) { try { for (const uid of call.users) PUSH.sendCallCancel(uid, call.uuid); } catch (_) {} }
|
||||
// Missed-call banner to the callee (a plain notification, like a phone's missed call) when the call ended
|
||||
// UNANSWERED — timeout or the caller hung up before pickup. Skipped on decline (silent): they chose to.
|
||||
if (!silent && !call.answered) {
|
||||
|
||||
Reference in New Issue
Block a user