@ethora/chat-component-rn 26.10.4 → 26.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/VideoCalls/ActiveCallBar.js +61 -16
- package/lib/commonjs/components/VideoCalls/ActiveCallBar.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/CallIcons.js +41 -16
- package/lib/commonjs/components/VideoCalls/CallIcons.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +183 -9
- package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +40 -15
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/callSessionController.js +49 -26
- package/lib/commonjs/components/VideoCalls/callSessionController.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/callUiStore.js +33 -4
- package/lib/commonjs/components/VideoCalls/callUiStore.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/livekitRuntime.js +9 -1
- package/lib/commonjs/components/VideoCalls/livekitRuntime.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/useCallKeep.js +197 -28
- package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js +88 -0
- package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js.map +1 -0
- package/lib/commonjs/components/VideoCalls/usePipTile.js +232 -0
- package/lib/commonjs/components/VideoCalls/usePipTile.js.map +1 -0
- package/lib/commonjs/helpers/updateMessagesTillLast.js +3 -1
- package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +48 -0
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/components/VideoCalls/ActiveCallBar.js +63 -18
- package/lib/module/components/VideoCalls/ActiveCallBar.js.map +1 -1
- package/lib/module/components/VideoCalls/CallIcons.js +38 -15
- package/lib/module/components/VideoCalls/CallIcons.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallOverlay.js +185 -11
- package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +41 -16
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/VideoCalls/callSessionController.js +46 -24
- package/lib/module/components/VideoCalls/callSessionController.js.map +1 -1
- package/lib/module/components/VideoCalls/callUiStore.js +30 -3
- package/lib/module/components/VideoCalls/callUiStore.js.map +1 -1
- package/lib/module/components/VideoCalls/livekitRuntime.js +9 -1
- package/lib/module/components/VideoCalls/livekitRuntime.js.map +1 -1
- package/lib/module/components/VideoCalls/useCallKeep.js +198 -29
- package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -1
- package/lib/module/components/VideoCalls/useOngoingCallNotification.js +84 -0
- package/lib/module/components/VideoCalls/useOngoingCallNotification.js.map +1 -0
- package/lib/module/components/VideoCalls/usePipTile.js +228 -0
- package/lib/module/components/VideoCalls/usePipTile.js.map +1 -0
- package/lib/module/helpers/updateMessagesTillLast.js +3 -1
- package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
- package/lib/module/i18n/strings.js +48 -0
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/components/VideoCalls/ActiveCallBar.d.ts +9 -3
- package/lib/typescript/components/VideoCalls/ActiveCallBar.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/CallIcons.d.ts +9 -0
- package/lib/typescript/components/VideoCalls/CallIcons.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/callSessionController.d.ts +7 -0
- package/lib/typescript/components/VideoCalls/callSessionController.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/callUiStore.d.ts +13 -0
- package/lib/typescript/components/VideoCalls/callUiStore.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts +5 -0
- package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/useCallKeep.d.ts +12 -0
- package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/useOngoingCallNotification.d.ts +10 -0
- package/lib/typescript/components/VideoCalls/useOngoingCallNotification.d.ts.map +1 -0
- package/lib/typescript/components/VideoCalls/usePipTile.d.ts +46 -0
- package/lib/typescript/components/VideoCalls/usePipTile.d.ts.map +1 -0
- package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +1 -1
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +40 -0
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/VideoCalls/ActiveCallBar.tsx +56 -10
- package/src/components/VideoCalls/CallIcons.tsx +36 -12
- package/src/components/VideoCalls/VideoCallOverlay.tsx +205 -8
- package/src/components/VideoCalls/VideoCallSession.tsx +45 -13
- package/src/components/VideoCalls/callSessionController.ts +51 -20
- package/src/components/VideoCalls/callUiStore.ts +33 -3
- package/src/components/VideoCalls/livekitRuntime.ts +13 -0
- package/src/components/VideoCalls/useCallKeep.ts +204 -33
- package/src/components/VideoCalls/useOngoingCallNotification.ts +113 -0
- package/src/components/VideoCalls/usePipTile.ts +214 -0
- package/src/helpers/updateMessagesTillLast.tsx +2 -1
- package/src/i18n/strings.ts +48 -0
- package/src/main.ts +3 -0
- package/src/types/types.ts +48 -0
- package/src/version.ts +1 -1
- package/lib/commonjs/components/VideoCalls/useDraggable.js +0 -59
- package/lib/commonjs/components/VideoCalls/useDraggable.js.map +0 -1
- package/lib/module/components/VideoCalls/useDraggable.js +0 -55
- package/lib/module/components/VideoCalls/useDraggable.js.map +0 -1
- package/lib/typescript/components/VideoCalls/useDraggable.d.ts +0 -19
- package/lib/typescript/components/VideoCalls/useDraggable.d.ts.map +0 -1
- package/src/components/VideoCalls/useDraggable.ts +0 -46
|
@@ -32,6 +32,7 @@ const IDLE = {
|
|
|
32
32
|
cameraOn: false,
|
|
33
33
|
speakerOn: false,
|
|
34
34
|
facingMode: 'user',
|
|
35
|
+
localVideoEpoch: 0,
|
|
35
36
|
remoteVideo: null,
|
|
36
37
|
localVideo: null,
|
|
37
38
|
remoteName: null,
|
|
@@ -272,7 +273,14 @@ export const startCallSession = ({
|
|
|
272
273
|
// Claims audio focus and sets the right native audio mode. Must
|
|
273
274
|
// start BEFORE connecting or the first seconds route to the earpiece
|
|
274
275
|
// on Android even for a video call.
|
|
275
|
-
|
|
276
|
+
try {
|
|
277
|
+
await AudioSession.startAudioSession();
|
|
278
|
+
} catch {
|
|
279
|
+
// A call answered from the CallKit banner: CallKit owns the iOS
|
|
280
|
+
// audio session and activates it itself (useCallKeep forwards that
|
|
281
|
+
// to WebRTC), so our own activation is refused. Not a reason to
|
|
282
|
+
// fail the call.
|
|
283
|
+
}
|
|
276
284
|
await room.connect(livekitUrl, token);
|
|
277
285
|
} catch (error) {
|
|
278
286
|
if (current.disposed) {
|
|
@@ -331,12 +339,14 @@ export const startCallSession = ({
|
|
|
331
339
|
|
|
332
340
|
// ---- controls -----------------------------------------------------------
|
|
333
341
|
|
|
334
|
-
export const toggleCallMic =
|
|
342
|
+
export const toggleCallMic = () => setCallMicEnabled(!snapshot.micOn);
|
|
343
|
+
|
|
344
|
+
/** Set the mic to a given state (system call UI reports absolute values). */
|
|
345
|
+
export const setCallMicEnabled = async next => {
|
|
335
346
|
const current = session;
|
|
336
|
-
if (!current) {
|
|
347
|
+
if (!current || snapshot.micOn === next) {
|
|
337
348
|
return;
|
|
338
349
|
}
|
|
339
|
-
const next = !snapshot.micOn;
|
|
340
350
|
emit({
|
|
341
351
|
micOn: next
|
|
342
352
|
});
|
|
@@ -372,40 +382,52 @@ export const toggleCallCamera = async () => {
|
|
|
372
382
|
}
|
|
373
383
|
}
|
|
374
384
|
};
|
|
385
|
+
let switchingCamera = false;
|
|
375
386
|
export const switchCallCamera = async () => {
|
|
376
387
|
const current = session;
|
|
377
388
|
const runtime = loadLiveKit();
|
|
378
|
-
if (!current || !runtime) {
|
|
389
|
+
if (!current || !runtime || switchingCamera) {
|
|
379
390
|
return;
|
|
380
391
|
}
|
|
381
|
-
const
|
|
382
|
-
if (!
|
|
392
|
+
const track = current.room.localParticipant.getTrackPublication?.(runtime.Track.Source.Camera)?.track;
|
|
393
|
+
if (!track?.restartTrack) {
|
|
383
394
|
return;
|
|
384
395
|
}
|
|
385
396
|
const next = snapshot.facingMode === 'user' ? 'environment' : 'user';
|
|
397
|
+
switchingCamera = true;
|
|
386
398
|
try {
|
|
387
|
-
//
|
|
388
|
-
//
|
|
389
|
-
//
|
|
390
|
-
//
|
|
391
|
-
//
|
|
392
|
-
//
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
399
|
+
// A real device change needs a new capture: react-native-webrtc's
|
|
400
|
+
// native applyConstraints only applies width/height/frameRate and
|
|
401
|
+
// ignores facingMode on both platforms, so the old approach kept the
|
|
402
|
+
// front camera and merely flipped our mirror flag (the picture looked
|
|
403
|
+
// swapped left to right). restartTrack re-acquires the camera with
|
|
404
|
+
// the new facing mode and swaps it into the published sender; the
|
|
405
|
+
// <VideoTrack /> view follows it through TrackEvent.Restarted.
|
|
406
|
+
await track.restartTrack({
|
|
407
|
+
facingMode: next,
|
|
408
|
+
...(runtime.VideoPresets ? {
|
|
409
|
+
resolution: runtime.VideoPresets.h720.resolution
|
|
410
|
+
} : {})
|
|
411
|
+
});
|
|
412
|
+
if (current.disposed) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
// Trust what the camera reports: a device with a single camera stays
|
|
416
|
+
// on it, and the mirror must follow the real camera, not the request.
|
|
417
|
+
const actual = track.mediaStreamTrack?.getSettings?.()?.facingMode;
|
|
418
|
+
emit({
|
|
419
|
+
facingMode: actual === 'user' || actual === 'environment' ? actual : next,
|
|
420
|
+
localVideoEpoch: snapshot.localVideoEpoch + 1
|
|
400
421
|
});
|
|
422
|
+
resync();
|
|
423
|
+
} catch (error) {
|
|
401
424
|
if (!current.disposed) {
|
|
402
425
|
emit({
|
|
403
|
-
|
|
426
|
+
deviceError: humanizeDeviceError(error)
|
|
404
427
|
});
|
|
405
428
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
// Single camera, or the switch is still in flight.
|
|
429
|
+
} finally {
|
|
430
|
+
switchingCamera = false;
|
|
409
431
|
}
|
|
410
432
|
};
|
|
411
433
|
export const toggleCallSpeaker = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSyncExternalStore","Platform","store","setCallError","setCallPhase","ensureLiveKitGlobals","loadLiveKit","terminateActiveCall","translateCallString","IDLE","active","connected","deviceError","micOn","cameraOn","speakerOn","facingMode","remoteVideo","localVideo","remoteName","remoteJoined","remoteMicMuted","anchorAt","session","snapshot","listeners","Set","storeUnsubscribe","emit","patch","forEach","listener","subscribe","add","delete","getSnapshot","useCallSession","sessionKey","livekitUrl","token","humanizeDeviceError","error","name","text","String","message","toLowerCase","includes","liveVideoRef","participant","Track","publication","getTrackPublication","Source","Camera","track","isMuted","source","joinedAtMs","value","joinedAt","ms","Date","getTime","Number","isFinite","resync","current","runtime","disposed","room","remote","Array","from","remoteParticipants","values","everJoined","remoteMic","Microphone","localJoined","localParticipant","remoteJoinedAt","identity","Math","max","now","stopCallSession","removeAllListeners","disconnect","AudioSession","stopAudioSession","ensureStoreWatcher","call","getState","live","phase","key","endsWith","startCallSession","kind","startWithMicOn","startWithCameraOn","dispatch","Room","RoomEvent","VideoPresets","adaptiveStream","pixelDensity","dynacast","publishDefaults","videoSimulcastLayers","h540","h216","videoCaptureDefaults","resolution","h720","onChange","on","TrackSubscribed","TrackUnsubscribed","TrackPublished","TrackUnpublished","LocalTrackPublished","LocalTrackUnpublished","TrackMuted","TrackUnmuted","ParticipantConnected","MediaDevicesError","ParticipantDisconnected","size","Disconnected","startAudioSession","connect","setMicrophoneEnabled","setCameraEnabled","setAppleAudioConfiguration","audioCategory","audioCategoryOptions","audioMode","toggleCallMic","next","toggleCallCamera","switchCallCamera","mediaTrack","mediaStreamTrack","applyConstraints","constraints","getSettings","deviceId","toggleCallSpeaker","OS","selectAudioOutput","dismissCallDeviceError","__resetCallSessionForTests"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/callSessionController.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useSyncExternalStore","Platform","store","setCallError","setCallPhase","ensureLiveKitGlobals","loadLiveKit","terminateActiveCall","translateCallString","IDLE","active","connected","deviceError","micOn","cameraOn","speakerOn","facingMode","localVideoEpoch","remoteVideo","localVideo","remoteName","remoteJoined","remoteMicMuted","anchorAt","session","snapshot","listeners","Set","storeUnsubscribe","emit","patch","forEach","listener","subscribe","add","delete","getSnapshot","useCallSession","sessionKey","livekitUrl","token","humanizeDeviceError","error","name","text","String","message","toLowerCase","includes","liveVideoRef","participant","Track","publication","getTrackPublication","Source","Camera","track","isMuted","source","joinedAtMs","value","joinedAt","ms","Date","getTime","Number","isFinite","resync","current","runtime","disposed","room","remote","Array","from","remoteParticipants","values","everJoined","remoteMic","Microphone","localJoined","localParticipant","remoteJoinedAt","identity","Math","max","now","stopCallSession","removeAllListeners","disconnect","AudioSession","stopAudioSession","ensureStoreWatcher","call","getState","live","phase","key","endsWith","startCallSession","kind","startWithMicOn","startWithCameraOn","dispatch","Room","RoomEvent","VideoPresets","adaptiveStream","pixelDensity","dynacast","publishDefaults","videoSimulcastLayers","h540","h216","videoCaptureDefaults","resolution","h720","onChange","on","TrackSubscribed","TrackUnsubscribed","TrackPublished","TrackUnpublished","LocalTrackPublished","LocalTrackUnpublished","TrackMuted","TrackUnmuted","ParticipantConnected","MediaDevicesError","ParticipantDisconnected","size","Disconnected","startAudioSession","connect","setMicrophoneEnabled","setCameraEnabled","setAppleAudioConfiguration","audioCategory","audioCategoryOptions","audioMode","toggleCallMic","setCallMicEnabled","next","toggleCallCamera","switchingCamera","switchCallCamera","restartTrack","actual","mediaStreamTrack","getSettings","toggleCallSpeaker","OS","selectAudioOutput","dismissCallDeviceError","__resetCallSessionForTests"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/callSessionController.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,7 +18,9 @@ import { store } from '../../roomStore';
|
|
|
18
18
|
|
|
19
19
|
let state = {
|
|
20
20
|
minimized: false,
|
|
21
|
-
|
|
21
|
+
systemRinging: false,
|
|
22
|
+
barHost: null,
|
|
23
|
+
barAnchorY: null
|
|
22
24
|
};
|
|
23
25
|
const hosts = [];
|
|
24
26
|
let nextHostId = 1;
|
|
@@ -38,11 +40,17 @@ const ensureStoreWatcher = () => {
|
|
|
38
40
|
return;
|
|
39
41
|
}
|
|
40
42
|
storeUnsubscribe = store.subscribe(() => {
|
|
41
|
-
|
|
43
|
+
const phase = store.getState().call.phase;
|
|
44
|
+
if (state.minimized && phase === 'idle') {
|
|
42
45
|
emit({
|
|
43
46
|
minimized: false
|
|
44
47
|
});
|
|
45
48
|
}
|
|
49
|
+
if (state.systemRinging && phase !== 'ringing-incoming') {
|
|
50
|
+
emit({
|
|
51
|
+
systemRinging: false
|
|
52
|
+
});
|
|
53
|
+
}
|
|
46
54
|
});
|
|
47
55
|
};
|
|
48
56
|
const subscribe = listener => {
|
|
@@ -64,6 +72,13 @@ export const setCallMinimized = minimized => {
|
|
|
64
72
|
});
|
|
65
73
|
}
|
|
66
74
|
};
|
|
75
|
+
export const setCallSystemRinging = systemRinging => {
|
|
76
|
+
if (state.systemRinging !== systemRinging) {
|
|
77
|
+
emit({
|
|
78
|
+
systemRinging
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
};
|
|
67
82
|
export const registerCallBarHost = onId => {
|
|
68
83
|
const id = nextHostId++;
|
|
69
84
|
hosts.push(id);
|
|
@@ -76,9 +91,21 @@ export const registerCallBarHost = onId => {
|
|
|
76
91
|
if (index >= 0) {
|
|
77
92
|
hosts.splice(index, 1);
|
|
78
93
|
}
|
|
94
|
+
const next = hosts.length ? hosts[hosts.length - 1] : null;
|
|
79
95
|
emit({
|
|
80
|
-
barHost:
|
|
96
|
+
barHost: next,
|
|
97
|
+
barAnchorY: next === null ? null : state.barAnchorY
|
|
81
98
|
});
|
|
82
99
|
};
|
|
83
100
|
};
|
|
101
|
+
|
|
102
|
+
/** The hosting header reports where its strip slot is on screen. */
|
|
103
|
+
export const setCallBarAnchor = (hostId, y) => {
|
|
104
|
+
if (state.barHost !== hostId || state.barAnchorY === y) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
emit({
|
|
108
|
+
barAnchorY: y
|
|
109
|
+
});
|
|
110
|
+
};
|
|
84
111
|
//# sourceMappingURL=callUiStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSyncExternalStore","store","state","minimized","barHost","hosts","nextHostId","listeners","Set","storeUnsubscribe","emit","patch","forEach","listener","ensureStoreWatcher","subscribe","
|
|
1
|
+
{"version":3,"names":["useSyncExternalStore","store","state","minimized","systemRinging","barHost","barAnchorY","hosts","nextHostId","listeners","Set","storeUnsubscribe","emit","patch","forEach","listener","ensureStoreWatcher","subscribe","phase","getState","call","add","delete","getSnapshot","getCallUiState","useCallUi","setCallMinimized","setCallSystemRinging","registerCallBarHost","onId","id","push","index","indexOf","splice","next","length","setCallBarAnchor","hostId","y"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/callUiStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,6 +40,13 @@ export const loadLiveKit = () => {
|
|
|
40
40
|
// moving subset across versions, the core package does not.
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
42
42
|
const core = require('livekit-client');
|
|
43
|
+
let webrtc = null;
|
|
44
|
+
try {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
46
|
+
webrtc = require('@livekit/react-native-webrtc');
|
|
47
|
+
} catch {
|
|
48
|
+
// Only needed for CallKit; calls work without it.
|
|
49
|
+
}
|
|
43
50
|
cached = {
|
|
44
51
|
Room: core.Room,
|
|
45
52
|
RoomEvent: core.RoomEvent,
|
|
@@ -48,7 +55,8 @@ export const loadLiveKit = () => {
|
|
|
48
55
|
VideoPresets: core.VideoPresets,
|
|
49
56
|
VideoTrack: rn.VideoTrack,
|
|
50
57
|
AudioSession: rn.AudioSession,
|
|
51
|
-
registerGlobals: rn.registerGlobals
|
|
58
|
+
registerGlobals: rn.registerGlobals,
|
|
59
|
+
RTCAudioSession: webrtc?.RTCAudioSession ?? null
|
|
52
60
|
};
|
|
53
61
|
} catch {
|
|
54
62
|
cached = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["cached","isLiveKitAvailable","loadLiveKit","undefined","rn","require","core","Room","RoomEvent","Track","ConnectionState","VideoPresets","VideoTrack","AudioSession","registerGlobals","globalsRegistered","ensureLiveKitGlobals","runtime","__resetLiveKitRuntimeForTests"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/livekitRuntime.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["cached","isLiveKitAvailable","loadLiveKit","undefined","rn","require","core","webrtc","Room","RoomEvent","Track","ConnectionState","VideoPresets","VideoTrack","AudioSession","registerGlobals","RTCAudioSession","globalsRegistered","ensureLiveKitGlobals","runtime","__resetLiveKitRuntimeForTests"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/livekitRuntime.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA0BA,IAAIA,MAAyC;AAE7C,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAeC,WAAW,CAAC,CAAC,KAAK,IAAI;;AAEvE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,GAAGA,CAAA,KAA6B;EACtD,IAAIF,MAAM,KAAKG,SAAS,EAAE;IACxB,OAAOH,MAAM;EACf;EAEA,IAAI;IACF;IACA,MAAMI,EAAE,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAC3C;IACA;IACA;IACA;IACA;IACA,MAAMC,IAAI,GAAGD,OAAO,CAAC,gBAAgB,CAAC;IACtC,IAAIE,MAAW,GAAG,IAAI;IACtB,IAAI;MACF;MACAA,MAAM,GAAGF,OAAO,CAAC,8BAA8B,CAAC;IAClD,CAAC,CAAC,MAAM;MACN;IAAA;IAGFL,MAAM,GAAG;MACPQ,IAAI,EAAEF,IAAI,CAACE,IAAI;MACfC,SAAS,EAAEH,IAAI,CAACG,SAAS;MACzBC,KAAK,EAAEJ,IAAI,CAACI,KAAK;MACjBC,eAAe,EAAEL,IAAI,CAACK,eAAe;MACrCC,YAAY,EAAEN,IAAI,CAACM,YAAY;MAC/BC,UAAU,EAAET,EAAE,CAACS,UAAU;MACzBC,YAAY,EAAEV,EAAE,CAACU,YAAY;MAC7BC,eAAe,EAAEX,EAAE,CAACW,eAAe;MACnCC,eAAe,EAAET,MAAM,EAAES,eAAe,IAAI;IAC9C,CAAC;EACH,CAAC,CAAC,MAAM;IACNhB,MAAM,GAAG,IAAI;EACf;EAEA,OAAOA,MAAM;AACf,CAAC;AAED,IAAIiB,iBAAiB,GAAG,KAAK;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAIC,OAAuB,IAAW;EACrE,IAAIF,iBAAiB,EAAE;IAAC;EAAO;EAC/B,IAAI;IACFE,OAAO,CAACJ,eAAe,GAAG,CAAC;EAC7B,CAAC,CAAC,MAAM;IACN;EAAA;EAEFE,iBAAiB,GAAG,IAAI;AAC1B,CAAC;;AAED;AACA,OAAO,MAAMG,6BAA6B,GAAGA,CAAA,KAAY;EACvDpB,MAAM,GAAGG,SAAS;EAClBc,iBAAiB,GAAG,KAAK;AAC3B,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Platform } from 'react-native';
|
|
5
5
|
import { useDispatch, useSelector } from 'react-redux';
|
|
6
6
|
import { store } from '../../roomStore';
|
|
7
7
|
import { acceptIncomingCall, declineIncomingCall } from '../../roomStore/callSlice';
|
|
8
8
|
import { sendCallStateSignal } from '../../networking/callTokenStanza';
|
|
9
|
+
import { terminateActiveCall } from './callActions';
|
|
10
|
+
import { setCallMicEnabled, useCallSession } from './callSessionController';
|
|
11
|
+
import { loadLiveKit } from './livekitRuntime';
|
|
12
|
+
import { setCallSystemRinging } from './callUiStore';
|
|
9
13
|
|
|
10
14
|
/**
|
|
11
15
|
* Native incoming-call UI (Android ConnectionService / iOS CallKit) via
|
|
@@ -16,6 +20,12 @@ import { sendCallStateSignal } from '../../networking/callTokenStanza';
|
|
|
16
20
|
* loaded lazily exactly like the LiveKit packages, so hosts that don't
|
|
17
21
|
* install it get the plain in-app ring screen and nothing breaks.
|
|
18
22
|
*
|
|
23
|
+
* On iOS every call, incoming or outgoing, is also reported to CallKit for
|
|
24
|
+
* as long as it lasts. That is what puts it in the Dynamic Island / the
|
|
25
|
+
* green status-bar pill when the app is in the background, with the
|
|
26
|
+
* system's own mute and end buttons, and what keeps the call's audio
|
|
27
|
+
* running in the background.
|
|
28
|
+
*
|
|
19
29
|
* Platform reality, stated plainly:
|
|
20
30
|
* - Android: full value. A ConnectionService call shows the system
|
|
21
31
|
* incoming-call screen over the lock screen.
|
|
@@ -74,16 +84,31 @@ const toUuid = seed => {
|
|
|
74
84
|
const hex = bytes.map(b => b.toString(16).padStart(2, '0')).join('');
|
|
75
85
|
return [hex.slice(0, 8), hex.slice(8, 12), '4' + hex.slice(13, 16), (parseInt(hex[16], 16) & 0x3 | 0x8).toString(16) + hex.slice(17, 20), hex.slice(20, 32)].join('-');
|
|
76
86
|
};
|
|
87
|
+
const trace = (...args) => {
|
|
88
|
+
if (__DEV__) {
|
|
89
|
+
console.log('[calls] CallKit:', ...args);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
77
92
|
export const useCallKeep = () => {
|
|
78
93
|
const dispatch = useDispatch();
|
|
79
94
|
const call = useSelector(state => state.call);
|
|
95
|
+
const session = useCallSession();
|
|
80
96
|
const callKeep = useMemo(() => loadCallKeep(), []);
|
|
97
|
+
const [ready, setReady] = useState(false);
|
|
81
98
|
const activeUuidRef = useRef(null);
|
|
82
|
-
|
|
99
|
+
// The CallKit call has been answered (from the system screen or in-app).
|
|
100
|
+
const answeredRef = useRef(false);
|
|
101
|
+
const outgoingReportedRef = useRef('none');
|
|
102
|
+
const isIOS = Platform.OS === 'ios';
|
|
83
103
|
|
|
84
104
|
// One-time native setup.
|
|
85
105
|
useEffect(() => {
|
|
86
106
|
if (!callKeep) {
|
|
107
|
+
if (isIOS) {
|
|
108
|
+
// The usual reason for "no Dynamic Island": the JS package is there
|
|
109
|
+
// but the binary was built without the RNCallKeep pod.
|
|
110
|
+
trace('unavailable (react-native-callkeep is not linked in this build)');
|
|
111
|
+
}
|
|
87
112
|
return;
|
|
88
113
|
}
|
|
89
114
|
let cancelled = false;
|
|
@@ -92,7 +117,12 @@ export const useCallKeep = () => {
|
|
|
92
117
|
await callKeep.setup({
|
|
93
118
|
ios: {
|
|
94
119
|
appName: 'Ethora',
|
|
95
|
-
supportsVideo: true
|
|
120
|
+
supportsVideo: true,
|
|
121
|
+
maximumCallGroups: '1',
|
|
122
|
+
maximumCallsPerCallGroup: '1',
|
|
123
|
+
// Our calls are not phone calls: keep them out of the Phone
|
|
124
|
+
// app's Recents, whose entries would dial back into nowhere.
|
|
125
|
+
includesCallsInRecents: false
|
|
96
126
|
},
|
|
97
127
|
android: {
|
|
98
128
|
alertTitle: 'Permissions required',
|
|
@@ -111,28 +141,35 @@ export const useCallKeep = () => {
|
|
|
111
141
|
return;
|
|
112
142
|
}
|
|
113
143
|
callKeep.setAvailable?.(true);
|
|
114
|
-
|
|
115
|
-
|
|
144
|
+
trace('ready');
|
|
145
|
+
setReady(true);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
trace('setup failed', error);
|
|
116
148
|
// Host didn't grant phone-account permission, or the module isn't
|
|
117
149
|
// linked. The in-app ring screen still works, so stay quiet.
|
|
118
|
-
|
|
150
|
+
setReady(false);
|
|
119
151
|
}
|
|
120
152
|
})();
|
|
121
153
|
return () => {
|
|
122
154
|
cancelled = true;
|
|
123
155
|
};
|
|
124
|
-
}, [callKeep]);
|
|
156
|
+
}, [callKeep, isIOS]);
|
|
125
157
|
|
|
126
|
-
// Bridge native
|
|
158
|
+
// Bridge native actions back into the call.
|
|
127
159
|
useEffect(() => {
|
|
128
160
|
if (!callKeep) {
|
|
129
161
|
return;
|
|
130
162
|
}
|
|
131
163
|
const onAnswer = () => {
|
|
164
|
+
answeredRef.current = true;
|
|
132
165
|
// The user answered from the system screen, which on Android may
|
|
133
166
|
// mean the app was not even in the foreground.
|
|
134
167
|
callKeep.backToForeground?.();
|
|
135
|
-
|
|
168
|
+
// Only from the ring: CallKit also reports the answer we make on its
|
|
169
|
+
// behalf after an in-app accept, and re-accepting then would drop an
|
|
170
|
+
// in-progress call back to 'connecting'.
|
|
171
|
+
const current = store.getState().call;
|
|
172
|
+
if (current.direction === 'incoming' && current.phase === 'ringing-incoming') {
|
|
136
173
|
dispatch(acceptIncomingCall());
|
|
137
174
|
}
|
|
138
175
|
};
|
|
@@ -144,54 +181,190 @@ export const useCallKeep = () => {
|
|
|
144
181
|
if (snapshot.direction === 'incoming' && snapshot.phase === 'ringing-incoming') {
|
|
145
182
|
sendCallStateSignal('declined');
|
|
146
183
|
dispatch(declineIncomingCall());
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Ended from the Dynamic Island, the lock screen or a headset.
|
|
187
|
+
if (snapshot.phase === 'error') {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
terminateActiveCall(snapshot.phase === 'requesting' ? 'cancelled' : 'ended');
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// The system mute button (Dynamic Island, lock screen, CarPlay).
|
|
194
|
+
const onMuted = ({
|
|
195
|
+
muted
|
|
196
|
+
}) => {
|
|
197
|
+
void setCallMicEnabled(!muted);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// Another call (e.g. a phone call) put ours on hold: stop sending audio.
|
|
201
|
+
const onHold = ({
|
|
202
|
+
hold
|
|
203
|
+
}) => {
|
|
204
|
+
if (hold) {
|
|
205
|
+
void setCallMicEnabled(false);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
// CallKit owns the iOS audio session: WebRTC may only start its audio
|
|
210
|
+
// unit once CallKit has activated the session.
|
|
211
|
+
const onAudioActivated = () => {
|
|
212
|
+
try {
|
|
213
|
+
loadLiveKit()?.RTCAudioSession?.audioSessionDidActivate?.();
|
|
214
|
+
} catch {
|
|
215
|
+
// Older webrtc builds manage the session on their own.
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
const onAudioDeactivated = () => {
|
|
219
|
+
try {
|
|
220
|
+
loadLiveKit()?.RTCAudioSession?.audioSessionDidDeactivate?.();
|
|
221
|
+
} catch {
|
|
222
|
+
// noop
|
|
147
223
|
}
|
|
148
224
|
};
|
|
149
225
|
callKeep.addEventListener('answerCall', onAnswer);
|
|
150
226
|
callKeep.addEventListener('endCall', onEnd);
|
|
227
|
+
callKeep.addEventListener('didPerformSetMutedCallAction', onMuted);
|
|
228
|
+
callKeep.addEventListener('didToggleHoldCallAction', onHold);
|
|
229
|
+
callKeep.addEventListener('didActivateAudioSession', onAudioActivated);
|
|
230
|
+
// CallKit rejected or dropped our calls (e.g. a build without the voip
|
|
231
|
+
// background mode): there is nothing to end any more.
|
|
232
|
+
const onReset = () => {
|
|
233
|
+
trace('provider reset');
|
|
234
|
+
};
|
|
235
|
+
callKeep.addEventListener('didResetProvider', onReset);
|
|
236
|
+
// The system's verdict on displayIncomingCall ("Unentitled" means the
|
|
237
|
+
// app lacks the voip background mode).
|
|
238
|
+
const onDisplayed = ({
|
|
239
|
+
error,
|
|
240
|
+
errorCode
|
|
241
|
+
}) => {
|
|
242
|
+
trace('incoming call shown', error ? `failed: ${errorCode || ''} ${error}` : 'ok');
|
|
243
|
+
// CallKit refused it (Do Not Disturb, unentitled...): bring the
|
|
244
|
+
// in-app ring card back so the call can still be answered.
|
|
245
|
+
if (error) {
|
|
246
|
+
setCallSystemRinging(false);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
callKeep.addEventListener('didDisplayIncomingCall', onDisplayed);
|
|
250
|
+
callKeep.addEventListener('didDeactivateAudioSession', onAudioDeactivated);
|
|
151
251
|
return () => {
|
|
152
252
|
callKeep.removeEventListener('answerCall');
|
|
153
253
|
callKeep.removeEventListener('endCall');
|
|
254
|
+
callKeep.removeEventListener('didPerformSetMutedCallAction');
|
|
255
|
+
callKeep.removeEventListener('didToggleHoldCallAction');
|
|
256
|
+
callKeep.removeEventListener('didActivateAudioSession');
|
|
257
|
+
callKeep.removeEventListener('didDeactivateAudioSession');
|
|
258
|
+
callKeep.removeEventListener('didResetProvider');
|
|
259
|
+
callKeep.removeEventListener('didDisplayIncomingCall');
|
|
154
260
|
};
|
|
155
261
|
}, [callKeep, dispatch]);
|
|
262
|
+
const displayName = call.roomName || 'Ethora';
|
|
263
|
+
const isRinging = call.direction === 'incoming' && call.phase === 'ringing-incoming';
|
|
264
|
+
const isLive = call.phase === 'connecting' || call.phase === 'in-call';
|
|
265
|
+
const isOutgoing = call.direction === 'outgoing';
|
|
266
|
+
const peerConnected = session.anchorAt !== null;
|
|
156
267
|
|
|
157
|
-
//
|
|
268
|
+
// Report the call to the system as its state changes.
|
|
158
269
|
useEffect(() => {
|
|
159
|
-
if (!callKeep || !
|
|
270
|
+
if (!callKeep || !ready) {
|
|
160
271
|
return;
|
|
161
272
|
}
|
|
162
|
-
const
|
|
163
|
-
|
|
273
|
+
const release = () => {
|
|
274
|
+
if (!activeUuidRef.current) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
callKeep.endCall(activeUuidRef.current);
|
|
279
|
+
} catch {
|
|
280
|
+
// Screen already gone.
|
|
281
|
+
}
|
|
282
|
+
activeUuidRef.current = null;
|
|
283
|
+
answeredRef.current = false;
|
|
284
|
+
outgoingReportedRef.current = 'none';
|
|
285
|
+
};
|
|
286
|
+
if (call.phase === 'idle' || call.phase === 'error') {
|
|
287
|
+
release();
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
if (isRinging) {
|
|
291
|
+
if (activeUuidRef.current) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
164
294
|
const uuid = toUuid(call.callId || call.roomJid || String(Date.now()));
|
|
165
295
|
activeUuidRef.current = uuid;
|
|
296
|
+
answeredRef.current = false;
|
|
297
|
+
// iOS: the system banner is the ring UI (Telegram-style); the in-app
|
|
298
|
+
// card would only cover the screen under it.
|
|
299
|
+
if (isIOS) {
|
|
300
|
+
setCallSystemRinging(true);
|
|
301
|
+
}
|
|
166
302
|
try {
|
|
167
|
-
callKeep.displayIncomingCall(uuid,
|
|
303
|
+
callKeep.displayIncomingCall(uuid, displayName, displayName, 'generic', call.kind === 'video');
|
|
168
304
|
} catch {
|
|
169
305
|
activeUuidRef.current = null;
|
|
306
|
+
setCallSystemRinging(false);
|
|
170
307
|
}
|
|
171
308
|
return;
|
|
172
309
|
}
|
|
173
310
|
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
if (
|
|
311
|
+
// iOS: an outgoing call is a CallKit call from the first ring, so it
|
|
312
|
+
// shows in the Dynamic Island even before the peer answers.
|
|
313
|
+
if (isIOS && isOutgoing && !activeUuidRef.current && callKeep.startCall) {
|
|
314
|
+
// Unique per call: CallKit refuses a UUID it has seen before, and
|
|
315
|
+
// the callId only arrives with the token.
|
|
316
|
+
const uuid = toUuid(`${call.roomJid || ''}|${call.startedAt || Date.now()}`);
|
|
317
|
+
activeUuidRef.current = uuid;
|
|
318
|
+
outgoingReportedRef.current = 'none';
|
|
319
|
+
trace('startCall', uuid);
|
|
177
320
|
try {
|
|
178
|
-
callKeep.
|
|
321
|
+
callKeep.startCall(uuid, displayName, displayName, 'generic', call.kind === 'video');
|
|
179
322
|
} catch {
|
|
180
|
-
|
|
323
|
+
activeUuidRef.current = null;
|
|
181
324
|
}
|
|
182
|
-
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const uuid = activeUuidRef.current;
|
|
328
|
+
if (!uuid) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
if (isIOS && isOutgoing) {
|
|
332
|
+
if (peerConnected && outgoingReportedRef.current !== 'connected') {
|
|
333
|
+
outgoingReportedRef.current = 'connected';
|
|
334
|
+
callKeep.reportConnectedOutgoingCallWithUUID?.(uuid);
|
|
335
|
+
} else if (isLive && !peerConnected && outgoingReportedRef.current === 'none') {
|
|
336
|
+
outgoingReportedRef.current = 'connecting';
|
|
337
|
+
callKeep.reportConnectingOutgoingCallWithUUID?.(uuid);
|
|
338
|
+
}
|
|
339
|
+
return;
|
|
183
340
|
}
|
|
184
|
-
|
|
341
|
+
|
|
342
|
+
// Incoming, accepted with the in-app button: tell CallKit, or its
|
|
343
|
+
// screen keeps ringing on top of the call.
|
|
344
|
+
if (isIOS && isLive && !answeredRef.current) {
|
|
345
|
+
answeredRef.current = true;
|
|
185
346
|
try {
|
|
186
|
-
callKeep.
|
|
347
|
+
callKeep.answerIncomingCall?.(uuid);
|
|
187
348
|
} catch {
|
|
188
349
|
// noop
|
|
189
350
|
}
|
|
190
|
-
activeUuidRef.current = null;
|
|
191
351
|
}
|
|
192
|
-
}, [callKeep,
|
|
352
|
+
}, [callKeep, ready, isIOS, isRinging, isLive, isOutgoing, peerConnected, displayName, call.phase, call.callId, call.roomJid, call.startedAt, call.kind]);
|
|
193
353
|
|
|
194
|
-
//
|
|
354
|
+
// Keep the system mute button in step with ours.
|
|
355
|
+
useEffect(() => {
|
|
356
|
+
const uuid = activeUuidRef.current;
|
|
357
|
+
if (!callKeep || !ready || !isIOS || !uuid || !isLive) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
try {
|
|
361
|
+
callKeep.setMutedCall?.(uuid, !session.micOn);
|
|
362
|
+
} catch {
|
|
363
|
+
// noop
|
|
364
|
+
}
|
|
365
|
+
}, [callKeep, ready, isIOS, isLive, session.micOn]);
|
|
366
|
+
|
|
367
|
+
// Nothing to clean up on unmount beyond the active call: this hook
|
|
195
368
|
// lives for the lifetime of the provider.
|
|
196
369
|
useEffect(() => () => {
|
|
197
370
|
if (callKeep && activeUuidRef.current) {
|
|
@@ -202,9 +375,5 @@ export const useCallKeep = () => {
|
|
|
202
375
|
}
|
|
203
376
|
}
|
|
204
377
|
}, [callKeep]);
|
|
205
|
-
|
|
206
|
-
// iOS-only note kept as a runtime no-op so the import isn't unused when
|
|
207
|
-
// the platform check is tree-shaken in release builds.
|
|
208
|
-
void Platform.OS;
|
|
209
378
|
};
|
|
210
379
|
//# sourceMappingURL=useCallKeep.js.map
|