fix(calls): no duplicate native tile; drop Ringing placeholder; name+DP from roster

Caller saw the native callee TWICE — the outgoing 'Ringing…' placeholder (never cleared,
since a native callee doesn't send the mesh 'answered') plus a separate id-labelled tile.
Now when a native LiveKit participant joins: remove the __waiting placeholder, stop
ringback, and label the tile from CONTACTS (name + DP) instead of the raw user id.

Also (plugin, needs build): connectRoom disconnects any previous LiveKit connection
before joining, so repeated calls never leave duplicate/stale participants in the room.

WebView fix deploys now (no rebuild); the connectRoom fix rides the next build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 17:51:46 +05:30
parent 3d35a9ece7
commit 82c6c9ce0e
2 changed files with 11 additions and 3 deletions
@@ -59,9 +59,11 @@ public class NativeCallPlugin: CAPPlugin, CAPBridgedPlugin, PKPushRegistryDelega
private func connectRoom(url: String, token: String) {
guard !url.isEmpty, !token.isEmpty else { return }
let old = room
let r = Room()
room = r
Task { [weak self] in
await old?.disconnect() // drop any previous/stale connection so we never leave DUPLICATE participants
do {
try await r.connect(url: url, token: token)
try await r.localParticipant.setMicrophone(enabled: true)