@ethora/chat-component-rn 26.10.7 → 26.10.9

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +3 -3
  3. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  4. package/lib/commonjs/components/MessageBubble/Message.js +16 -6
  5. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  6. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +16 -2
  7. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  8. package/lib/commonjs/components/VideoCalls/callActions.js +32 -2
  9. package/lib/commonjs/components/VideoCalls/callActions.js.map +1 -1
  10. package/lib/commonjs/components/VideoCalls/systemCall.js +83 -0
  11. package/lib/commonjs/components/VideoCalls/systemCall.js.map +1 -0
  12. package/lib/commonjs/components/VideoCalls/useCallKeep.js +84 -69
  13. package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -1
  14. package/lib/commonjs/helpers/incomingCallFromPush.js +95 -21
  15. package/lib/commonjs/helpers/incomingCallFromPush.js.map +1 -1
  16. package/lib/commonjs/main.js +33 -0
  17. package/lib/commonjs/main.js.map +1 -1
  18. package/lib/commonjs/networking/callTokenStanza.js +19 -1
  19. package/lib/commonjs/networking/callTokenStanza.js.map +1 -1
  20. package/lib/commonjs/networking/xmpp/sendMessageReaction.xmpp.js +22 -6
  21. package/lib/commonjs/networking/xmpp/sendMessageReaction.xmpp.js.map +1 -1
  22. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  23. package/lib/commonjs/push/sealedPush.js +13 -2
  24. package/lib/commonjs/push/sealedPush.js.map +1 -1
  25. package/lib/commonjs/push/sealedPushTask.js +63 -18
  26. package/lib/commonjs/push/sealedPushTask.js.map +1 -1
  27. package/lib/commonjs/version.js +1 -1
  28. package/lib/module/components/Menu/HeaderRoomListMenu.js +3 -3
  29. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  30. package/lib/module/components/MessageBubble/Message.js +16 -6
  31. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  32. package/lib/module/components/VideoCalls/VideoCallOverlay.js +17 -3
  33. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  34. package/lib/module/components/VideoCalls/callActions.js +29 -0
  35. package/lib/module/components/VideoCalls/callActions.js.map +1 -1
  36. package/lib/module/components/VideoCalls/systemCall.js +73 -0
  37. package/lib/module/components/VideoCalls/systemCall.js.map +1 -0
  38. package/lib/module/components/VideoCalls/useCallKeep.js +79 -68
  39. package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -1
  40. package/lib/module/helpers/incomingCallFromPush.js +92 -22
  41. package/lib/module/helpers/incomingCallFromPush.js.map +1 -1
  42. package/lib/module/main.js +3 -0
  43. package/lib/module/main.js.map +1 -1
  44. package/lib/module/networking/callTokenStanza.js +19 -1
  45. package/lib/module/networking/callTokenStanza.js.map +1 -1
  46. package/lib/module/networking/xmpp/sendMessageReaction.xmpp.js +21 -6
  47. package/lib/module/networking/xmpp/sendMessageReaction.xmpp.js.map +1 -1
  48. package/lib/module/networking/xmppClient.js.map +1 -1
  49. package/lib/module/push/sealedPush.js +11 -1
  50. package/lib/module/push/sealedPush.js.map +1 -1
  51. package/lib/module/push/sealedPushTask.js +62 -18
  52. package/lib/module/push/sealedPushTask.js.map +1 -1
  53. package/lib/module/version.js +1 -1
  54. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  55. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  56. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -1
  57. package/lib/typescript/components/VideoCalls/callActions.d.ts +6 -0
  58. package/lib/typescript/components/VideoCalls/callActions.d.ts.map +1 -1
  59. package/lib/typescript/components/VideoCalls/systemCall.d.ts +25 -0
  60. package/lib/typescript/components/VideoCalls/systemCall.d.ts.map +1 -0
  61. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts +8 -23
  62. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -1
  63. package/lib/typescript/helpers/incomingCallFromPush.d.ts +5 -13
  64. package/lib/typescript/helpers/incomingCallFromPush.d.ts.map +1 -1
  65. package/lib/typescript/main.d.ts +6 -1
  66. package/lib/typescript/main.d.ts.map +1 -1
  67. package/lib/typescript/networking/callTokenStanza.d.ts.map +1 -1
  68. package/lib/typescript/networking/xmpp/sendMessageReaction.xmpp.d.ts +13 -1
  69. package/lib/typescript/networking/xmpp/sendMessageReaction.xmpp.d.ts.map +1 -1
  70. package/lib/typescript/networking/xmppClient.d.ts +2 -4
  71. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  72. package/lib/typescript/push/sealedPush.d.ts +6 -0
  73. package/lib/typescript/push/sealedPush.d.ts.map +1 -1
  74. package/lib/typescript/push/sealedPushTask.d.ts +31 -7
  75. package/lib/typescript/push/sealedPushTask.d.ts.map +1 -1
  76. package/lib/typescript/types/models/xmpp.model.d.ts +2 -4
  77. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  78. package/lib/typescript/version.d.ts +1 -1
  79. package/package.json +1 -1
  80. package/plugins/notification-service/NotificationService.swift +105 -19
  81. package/plugins/withNotificationServiceExtension.js +44 -4
  82. package/src/components/Menu/HeaderRoomListMenu.tsx +13 -8
  83. package/src/components/MessageBubble/Message.tsx +16 -5
  84. package/src/components/VideoCalls/VideoCallOverlay.tsx +18 -2
  85. package/src/components/VideoCalls/callActions.ts +28 -0
  86. package/src/components/VideoCalls/systemCall.ts +109 -0
  87. package/src/components/VideoCalls/useCallKeep.ts +91 -101
  88. package/src/helpers/incomingCallFromPush.ts +97 -26
  89. package/src/main.ts +9 -1
  90. package/src/networking/callTokenStanza.ts +20 -1
  91. package/src/networking/xmpp/sendMessageReaction.xmpp.ts +38 -6
  92. package/src/networking/xmppClient.ts +2 -2
  93. package/src/push/sealedPush.ts +11 -0
  94. package/src/push/sealedPushTask.ts +95 -16
  95. package/src/types/models/xmpp.model.ts +2 -1
  96. package/src/version.ts +1 -1
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.takeSystemCallAction = exports.rememberSystemCallAction = exports.loadCallKeep = exports.endSystemIncomingCall = exports.callKitUuid = exports.__resetSystemCallForTests = void 0;
7
+ var _reactNative = require("react-native");
8
+ let cachedCallKeep;
9
+ const loadCallKeep = () => {
10
+ if (cachedCallKeep !== undefined) {
11
+ return cachedCallKeep;
12
+ }
13
+ try {
14
+ const {
15
+ NativeModules
16
+ } = require('react-native');
17
+ if (!NativeModules?.RNCallKeep) {
18
+ cachedCallKeep = null;
19
+ return cachedCallKeep;
20
+ }
21
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
22
+ const mod = require('react-native-callkeep');
23
+ cachedCallKeep = mod?.default || mod;
24
+ } catch {
25
+ cachedCallKeep = null;
26
+ }
27
+ return cachedCallKeep;
28
+ };
29
+ exports.loadCallKeep = loadCallKeep;
30
+ const callKitUuid = seed => {
31
+ let hash = 0x811c9dc5;
32
+ const bytes = [];
33
+ for (let i = 0; i < 32; i++) {
34
+ const ch = seed.charCodeAt(i % Math.max(1, seed.length)) + i;
35
+ hash ^= ch;
36
+ hash = Math.imul(hash, 0x01000193) >>> 0;
37
+ bytes.push(hash & 0xff);
38
+ }
39
+ const hex = bytes.map(b => b.toString(16).padStart(2, '0')).join('');
40
+ 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('-');
41
+ };
42
+ exports.callKitUuid = callKitUuid;
43
+ const SYSTEM_ACTION_TTL_MS = 2 * 60 * 1000;
44
+ const pendingActions = new Map();
45
+ const key = uuid => uuid.trim().toLowerCase();
46
+ const rememberSystemCallAction = (uuid, action) => {
47
+ if (!uuid) {
48
+ return;
49
+ }
50
+ pendingActions.set(key(uuid), {
51
+ action,
52
+ at: Date.now()
53
+ });
54
+ };
55
+ exports.rememberSystemCallAction = rememberSystemCallAction;
56
+ const takeSystemCallAction = uuid => {
57
+ const entry = pendingActions.get(key(uuid));
58
+ pendingActions.delete(key(uuid));
59
+ if (!entry || Date.now() - entry.at > SYSTEM_ACTION_TTL_MS) {
60
+ return null;
61
+ }
62
+ return entry.action;
63
+ };
64
+ exports.takeSystemCallAction = takeSystemCallAction;
65
+ const endSystemIncomingCall = callId => {
66
+ if (_reactNative.Platform.OS !== 'ios' || !callId) {
67
+ return;
68
+ }
69
+ const callKeep = loadCallKeep();
70
+ if (!callKeep?.reportEndCallWithUUID) {
71
+ return;
72
+ }
73
+ try {
74
+ callKeep.reportEndCallWithUUID(callKitUuid(callId), 3);
75
+ } catch {}
76
+ };
77
+ exports.endSystemIncomingCall = endSystemIncomingCall;
78
+ const __resetSystemCallForTests = () => {
79
+ pendingActions.clear();
80
+ cachedCallKeep = undefined;
81
+ };
82
+ exports.__resetSystemCallForTests = __resetSystemCallForTests;
83
+ //# sourceMappingURL=systemCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","cachedCallKeep","loadCallKeep","undefined","NativeModules","RNCallKeep","mod","default","exports","callKitUuid","seed","hash","bytes","i","ch","charCodeAt","Math","max","length","imul","push","hex","map","b","toString","padStart","join","slice","parseInt","SYSTEM_ACTION_TTL_MS","pendingActions","Map","key","uuid","trim","toLowerCase","rememberSystemCallAction","action","set","at","Date","now","takeSystemCallAction","entry","get","delete","endSystemIncomingCall","callId","Platform","OS","callKeep","reportEndCallWithUUID","__resetSystemCallForTests","clear"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/systemCall.ts"],"mappings":"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","ignoreList":[]}
@@ -3,17 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useCallKeep = exports.loadCallKeep = void 0;
6
+ Object.defineProperty(exports, "loadCallKeep", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _systemCall.loadCallKeep;
10
+ }
11
+ });
12
+ exports.useCallKeep = void 0;
7
13
  var _react = require("react");
8
14
  var _reactNative = require("react-native");
9
15
  var _reactRedux = require("react-redux");
10
16
  var _roomStore = require("../../roomStore");
11
17
  var _callSlice = require("../../roomStore/callSlice");
12
- var _callTokenStanza = require("../../networking/callTokenStanza");
13
18
  var _callActions = require("./callActions");
14
19
  var _callSessionController = require("./callSessionController");
15
20
  var _livekitRuntime = require("./livekitRuntime");
16
21
  var _callUiStore = require("./callUiStore");
22
+ var _systemCall = require("./systemCall");
17
23
  /**
18
24
  * Native incoming-call UI (Android ConnectionService / iOS CallKit) via
19
25
  * the optional `react-native-callkeep` package.
@@ -32,62 +38,14 @@ var _callUiStore = require("./callUiStore");
32
38
  * Platform reality, stated plainly:
33
39
  * - Android: full value. A ConnectionService call shows the system
34
40
  * incoming-call screen over the lock screen.
35
- * - iOS: this only fires while the app is running. A CallKit screen from
36
- * a killed app requires a VoIP push over PushKit, which needs a
37
- * separate Apple VoIP certificate and a separate send path on the
38
- * backend (not FCM). Until that exists, iOS falls back to the regular
39
- * data push and the in-app ring screen.
41
+ * - iOS: this hook only runs while `<Chat>` is mounted. A CallKit screen
42
+ * from a killed app comes from the host: its PushKit handler reports
43
+ * the VoIP push to CallKit natively under `callKitUuid(callId)` and
44
+ * hands the payload to `handlePushPayload`. This hook then adopts that
45
+ * call (same UUID, CallKit answers "CallUUIDAlreadyExists" to our own
46
+ * report) and replays what the user did on it before JS was up.
40
47
  */
41
48
 
42
- let cachedCallKeep;
43
- const loadCallKeep = () => {
44
- if (cachedCallKeep !== undefined) {
45
- return cachedCallKeep;
46
- }
47
- try {
48
- // The JS package being installed does NOT mean the native side is
49
- // linked: a host can `npm i react-native-callkeep` and skip
50
- // `pod install`, or (very common in this repo) node_modules can carry
51
- // it over from another branch whose build did link it. In that state
52
- // requiring the package builds a `new NativeEventEmitter(null)` at
53
- // module scope, which throws an invariant that RN surfaces as an
54
- // uncaught redbox on every render of the call overlay — the whole app
55
- // becomes unusable over a feature the host never switched on.
56
- // Probing NativeModules first keeps the optional dependency genuinely
57
- // optional: no native module => behave exactly as if it isn't installed.
58
- // eslint-disable-next-line @typescript-eslint/no-require-imports
59
- const {
60
- NativeModules
61
- } = require('react-native');
62
- if (!NativeModules?.RNCallKeep) {
63
- cachedCallKeep = null;
64
- return cachedCallKeep;
65
- }
66
- // eslint-disable-next-line @typescript-eslint/no-require-imports
67
- const mod = require('react-native-callkeep');
68
- cachedCallKeep = mod?.default || mod;
69
- } catch {
70
- cachedCallKeep = null;
71
- }
72
- return cachedCallKeep;
73
- };
74
-
75
- // CallKeep identifies calls by UUID. Our callIds aren't UUIDs, so derive a
76
- // stable v4-shaped string from the callId: same call always maps to the
77
- // same UUID, which is what endCall() needs to dismiss the right screen.
78
- exports.loadCallKeep = loadCallKeep;
79
- const toUuid = seed => {
80
- let hash = 0x811c9dc5;
81
- const bytes = [];
82
- for (let i = 0; i < 32; i++) {
83
- const ch = seed.charCodeAt(i % Math.max(1, seed.length)) + i;
84
- hash ^= ch;
85
- hash = Math.imul(hash, 0x01000193) >>> 0;
86
- bytes.push(hash & 0xff);
87
- }
88
- const hex = bytes.map(b => b.toString(16).padStart(2, '0')).join('');
89
- 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('-');
90
- };
91
49
  const trace = (...args) => {
92
50
  if (__DEV__) {
93
51
  console.log('[calls] CallKit:', ...args);
@@ -97,7 +55,7 @@ const useCallKeep = () => {
97
55
  const dispatch = (0, _reactRedux.useDispatch)();
98
56
  const call = (0, _reactRedux.useSelector)(state => state.call);
99
57
  const session = (0, _callSessionController.useCallSession)();
100
- const callKeep = (0, _react.useMemo)(() => loadCallKeep(), []);
58
+ const callKeep = (0, _react.useMemo)(() => (0, _systemCall.loadCallKeep)(), []);
101
59
  const [ready, setReady] = (0, _react.useState)(false);
102
60
  const activeUuidRef = (0, _react.useRef)(null);
103
61
  // The CallKit call has been answered (from the system screen or in-app).
@@ -164,7 +122,25 @@ const useCallKeep = () => {
164
122
  if (!callKeep) {
165
123
  return;
166
124
  }
167
- const onAnswer = () => {
125
+ const isOtherCall = payload => {
126
+ const uuid = String(payload?.callUUID || '').toLowerCase();
127
+ if (!uuid) {
128
+ return false;
129
+ }
130
+ const active = activeUuidRef.current?.toLowerCase() || null;
131
+ if (active === uuid) {
132
+ return false;
133
+ }
134
+ const current = _roomStore.store.getState().call;
135
+ const ringingUuid = current.direction === 'incoming' && current.callId ? (0, _systemCall.callKitUuid)(current.callId) : null;
136
+ return ringingUuid !== uuid;
137
+ };
138
+ const onAnswer = payload => {
139
+ if (isOtherCall(payload)) {
140
+ trace('answer before the call arrived', payload?.callUUID);
141
+ (0, _systemCall.rememberSystemCallAction)(String(payload.callUUID), 'answer');
142
+ return;
143
+ }
168
144
  answeredRef.current = true;
169
145
  // The user answered from the system screen, which on Android may
170
146
  // mean the app was not even in the foreground.
@@ -177,14 +153,18 @@ const useCallKeep = () => {
177
153
  dispatch((0, _callSlice.acceptIncomingCall)());
178
154
  }
179
155
  };
180
- const onEnd = () => {
156
+ const onEnd = payload => {
157
+ if (isOtherCall(payload)) {
158
+ trace('declined before the call arrived', payload?.callUUID);
159
+ (0, _systemCall.rememberSystemCallAction)(String(payload.callUUID), 'end');
160
+ return;
161
+ }
181
162
  const snapshot = _roomStore.store.getState().call;
182
163
  if (snapshot.phase === 'idle') {
183
164
  return;
184
165
  }
185
166
  if (snapshot.direction === 'incoming' && snapshot.phase === 'ringing-incoming') {
186
- (0, _callTokenStanza.sendCallStateSignal)('declined');
187
- dispatch((0, _callSlice.declineIncomingCall)());
167
+ (0, _callActions.declineActiveCallWhenOnline)();
188
168
  return;
189
169
  }
190
170
  // Ended from the Dynamic Island, the lock screen or a headset.
@@ -241,18 +221,41 @@ const useCallKeep = () => {
241
221
  // app lacks the voip background mode).
242
222
  const onDisplayed = ({
243
223
  error,
244
- errorCode
224
+ errorCode,
225
+ fromPushKit
245
226
  }) => {
246
- trace('incoming call shown', error ? `failed: ${errorCode || ''} ${error}` : 'ok');
227
+ trace(`incoming call shown${fromPushKit === '1' ? ' (PushKit)' : ''}`, error ? `failed: ${errorCode || ''} ${error}` : 'ok');
228
+ if (errorCode === 'CallUUIDAlreadyExists') {
229
+ return;
230
+ }
247
231
  // CallKit refused it (Do Not Disturb, unentitled...): bring the
248
- // in-app ring card back so the call can still be answered.
249
- if (error) {
232
+ if (error && fromPushKit !== '1') {
250
233
  (0, _callUiStore.setCallSystemRinging)(false);
251
234
  }
252
235
  };
253
236
  callKeep.addEventListener('didDisplayIncomingCall', onDisplayed);
254
237
  callKeep.addEventListener('didDeactivateAudioSession', onAudioDeactivated);
238
+ const replay = {
239
+ RNCallKeepPerformAnswerCallAction: onAnswer,
240
+ RNCallKeepPerformEndCallAction: onEnd,
241
+ RNCallKeepDidDisplayIncomingCall: onDisplayed,
242
+ RNCallKeepDidActivateAudioSession: onAudioActivated,
243
+ RNCallKeepDidDeactivateAudioSession: onAudioDeactivated,
244
+ RNCallKeepDidPerformSetMutedCallAction: onMuted
245
+ };
246
+ const onLoadWithEvents = events => {
247
+ if (!Array.isArray(events) || events.length === 0) {
248
+ return;
249
+ }
250
+ trace('replaying', events.map(e => e.name).join(', '));
251
+ callKeep.clearInitialEvents?.();
252
+ for (const event of events) {
253
+ replay[event.name]?.(event.data);
254
+ }
255
+ };
256
+ callKeep.addEventListener('didLoadWithEvents', onLoadWithEvents);
255
257
  return () => {
258
+ callKeep.removeEventListener('didLoadWithEvents');
256
259
  callKeep.removeEventListener('answerCall');
257
260
  callKeep.removeEventListener('endCall');
258
261
  callKeep.removeEventListener('didPerformSetMutedCallAction');
@@ -295,11 +298,23 @@ const useCallKeep = () => {
295
298
  if (activeUuidRef.current) {
296
299
  return;
297
300
  }
298
- const uuid = toUuid(call.callId || call.roomJid || String(Date.now()));
301
+ const uuid = (0, _systemCall.callKitUuid)(call.callId || call.roomJid || String(Date.now()));
299
302
  activeUuidRef.current = uuid;
300
303
  answeredRef.current = false;
304
+ const earlier = (0, _systemCall.takeSystemCallAction)(uuid);
305
+ if (earlier === 'answer') {
306
+ trace('answered earlier on the system screen', uuid);
307
+ answeredRef.current = true;
308
+ dispatch((0, _callSlice.acceptIncomingCall)());
309
+ return;
310
+ }
311
+ if (earlier === 'end') {
312
+ trace('declined earlier on the system screen', uuid);
313
+ activeUuidRef.current = null;
314
+ (0, _callActions.declineActiveCallWhenOnline)();
315
+ return;
316
+ }
301
317
  // iOS: the system banner is the ring UI (Telegram-style); the in-app
302
- // card would only cover the screen under it.
303
318
  if (isIOS) {
304
319
  (0, _callUiStore.setCallSystemRinging)(true);
305
320
  }
@@ -317,7 +332,7 @@ const useCallKeep = () => {
317
332
  if (isIOS && isOutgoing && !activeUuidRef.current && callKeep.startCall) {
318
333
  // Unique per call: CallKit refuses a UUID it has seen before, and
319
334
  // the callId only arrives with the token.
320
- const uuid = toUuid(`${call.roomJid || ''}|${call.startedAt || Date.now()}`);
335
+ const uuid = (0, _systemCall.callKitUuid)(`${call.roomJid || ''}|${call.startedAt || Date.now()}`);
321
336
  activeUuidRef.current = uuid;
322
337
  outgoingReportedRef.current = 'none';
323
338
  trace('startCall', uuid);
@@ -353,7 +368,7 @@ const useCallKeep = () => {
353
368
  // noop
354
369
  }
355
370
  }
356
- }, [callKeep, ready, isIOS, isRinging, isLive, isOutgoing, peerConnected, displayName, call.phase, call.callId, call.roomJid, call.startedAt, call.kind]);
371
+ }, [callKeep, ready, dispatch, isIOS, isRinging, isLive, isOutgoing, peerConnected, displayName, call.phase, call.callId, call.roomJid, call.startedAt, call.kind]);
357
372
 
358
373
  // Keep the system mute button in step with ours.
359
374
  (0, _react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactRedux","_roomStore","_callSlice","_callTokenStanza","_callActions","_callSessionController","_livekitRuntime","_callUiStore","cachedCallKeep","loadCallKeep","undefined","NativeModules","RNCallKeep","mod","default","exports","toUuid","seed","hash","bytes","i","ch","charCodeAt","Math","max","length","imul","push","hex","map","b","toString","padStart","join","slice","parseInt","trace","args","__DEV__","console","log","useCallKeep","dispatch","useDispatch","call","useSelector","state","session","useCallSession","callKeep","useMemo","ready","setReady","useState","activeUuidRef","useRef","answeredRef","outgoingReportedRef","isIOS","Platform","OS","useEffect","cancelled","setup","ios","appName","supportsVideo","maximumCallGroups","maximumCallsPerCallGroup","includesCallsInRecents","android","alertTitle","alertDescription","cancelButton","okButton","additionalPermissions","foregroundService","channelId","channelName","notificationTitle","setAvailable","error","onAnswer","current","backToForeground","store","getState","direction","phase","acceptIncomingCall","onEnd","snapshot","sendCallStateSignal","declineIncomingCall","terminateActiveCall","onMuted","muted","setCallMicEnabled","onHold","hold","onAudioActivated","loadLiveKit","RTCAudioSession","audioSessionDidActivate","onAudioDeactivated","audioSessionDidDeactivate","addEventListener","onReset","onDisplayed","errorCode","setCallSystemRinging","removeEventListener","displayName","roomName","isRinging","isLive","isOutgoing","peerConnected","anchorAt","release","endCall","uuid","callId","roomJid","String","Date","now","displayIncomingCall","kind","startCall","startedAt","reportConnectedOutgoingCallWithUUID","reportConnectingOutgoingCallWithUUID","answerIncomingCall","setMutedCall","micOn"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/useCallKeep.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,sBAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AACA,IAAAS,YAAA,GAAAT,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA+BA,IAAIU,cAAiD;AAE9C,MAAMC,YAAY,GAAGA,CAAA,KAA6B;EACvD,IAAID,cAAc,KAAKE,SAAS,EAAE;IAChC,OAAOF,cAAc;EACvB;EACA,IAAI;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM;MAAEG;IAAc,CAAC,GAAGb,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,CAACa,aAAa,EAAEC,UAAU,EAAE;MAC9BJ,cAAc,GAAG,IAAI;MACrB,OAAOA,cAAc;IACvB;IACA;IACA,MAAMK,GAAG,GAAGf,OAAO,CAAC,uBAAuB,CAAC;IAC5CU,cAAc,GAAIK,GAAG,EAAEC,OAAO,IAAID,GAAsB;EAC1D,CAAC,CAAC,MAAM;IACNL,cAAc,GAAG,IAAI;EACvB;EACA,OAAOA,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AAAAO,OAAA,CAAAN,YAAA,GAAAA,YAAA;AACA,MAAMO,MAAM,GAAIC,IAAY,IAAa;EACvC,IAAIC,IAAI,GAAG,UAAU;EACrB,MAAMC,KAAe,GAAG,EAAE;EAC1B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,MAAMC,EAAE,GAAGJ,IAAI,CAACK,UAAU,CAACF,CAAC,GAAGG,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEP,IAAI,CAACQ,MAAM,CAAC,CAAC,GAAGL,CAAC;IAC5DF,IAAI,IAAIG,EAAE;IACVH,IAAI,GAAGK,IAAI,CAACG,IAAI,CAACR,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;IACxCC,KAAK,CAACQ,IAAI,CAACT,IAAI,GAAG,IAAI,CAAC;EACzB;EACA,MAAMU,GAAG,GAAGT,KAAK,CAACU,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EACtE,OAAO,CACLL,GAAG,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACfN,GAAG,CAACM,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,GAAG,GAAGN,GAAG,CAACM,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACvB,CAAEC,QAAQ,CAACP,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAI,GAAG,EAAEG,QAAQ,CAAC,EAAE,CAAC,GAAGH,GAAG,CAACM,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACtEN,GAAG,CAACM,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAClB,CAACD,IAAI,CAAC,GAAG,CAAC;AACb,CAAC;AAED,MAAMG,KAAK,GAAGA,CAAC,GAAGC,IAAe,KAAK;EACpC,IAAIC,OAAO,EAAE;IAACC,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAE,GAAGH,IAAI,CAAC;EAAC;AACzD,CAAC;AAEM,MAAMI,WAAW,GAAGA,CAAA,KAAY;EACrC,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAMC,IAAI,GAAG,IAAAC,uBAAW,EAAEC,KAAgB,IAAKA,KAAK,CAACF,IAAI,CAAC;EAC1D,MAAMG,OAAO,GAAG,IAAAC,qCAAc,EAAC,CAAC;EAChC,MAAMC,QAAQ,GAAG,IAAAC,cAAO,EAAC,MAAMzC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;EAClD,MAAM,CAAC0C,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACzC,MAAMC,aAAa,GAAG,IAAAC,aAAM,EAAgB,IAAI,CAAC;EACjD;EACA,MAAMC,WAAW,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EACjC,MAAME,mBAAmB,GAAG,IAAAF,aAAM,EAAsC,MAAM,CAAC;EAC/E,MAAMG,KAAK,GAAGC,qBAAQ,CAACC,EAAE,KAAK,KAAK;;EAEnC;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,QAAQ,EAAE;MACb,IAAIS,KAAK,EAAE;QACT;QACA;QACAtB,KAAK,CAAC,iEAAiE,CAAC;MAC1E;MACA;IACF;IACA,IAAI0B,SAAS,GAAG,KAAK;IAErB,CAAC,YAAY;MACX,IAAI;QACF,MAAMb,QAAQ,CAACc,KAAK,CAAC;UACnBC,GAAG,EAAE;YACHC,OAAO,EAAE,QAAQ;YACjBC,aAAa,EAAE,IAAI;YACnBC,iBAAiB,EAAE,GAAG;YACtBC,wBAAwB,EAAE,GAAG;YAC7B;YACA;YACAC,sBAAsB,EAAE;UAC1B,CAAC;UACDC,OAAO,EAAE;YACPC,UAAU,EAAE,sBAAsB;YAClCC,gBAAgB,EACd,6EAA6E;YAC/EC,YAAY,EAAE,QAAQ;YACtBC,QAAQ,EAAE,IAAI;YACdC,qBAAqB,EAAE,EAAE;YACzBC,iBAAiB,EAAE;cACjBC,SAAS,EAAE,uBAAuB;cAClCC,WAAW,EAAE,gBAAgB;cAC7BC,iBAAiB,EAAE;YACrB;UACF;QACF,CAAC,CAAC;QACF,IAAIjB,SAAS,EAAE;UAAC;QAAO;QACvBb,QAAQ,CAAC+B,YAAY,GAAG,IAAI,CAAC;QAC7B5C,KAAK,CAAC,OAAO,CAAC;QACdgB,QAAQ,CAAC,IAAI,CAAC;MAChB,CAAC,CAAC,OAAO6B,KAAK,EAAE;QACd7C,KAAK,CAAC,cAAc,EAAE6C,KAAK,CAAC;QAC5B;QACA;QACA7B,QAAQ,CAAC,KAAK,CAAC;MACjB;IACF,CAAC,EAAE,CAAC;IAEJ,OAAO,MAAM;MACXU,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACb,QAAQ,EAAES,KAAK,CAAC,CAAC;;EAErB;EACA,IAAAG,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,QAAQ,EAAE;MAAC;IAAO;IAEvB,MAAMiC,QAAQ,GAAGA,CAAA,KAAM;MACrB1B,WAAW,CAAC2B,OAAO,GAAG,IAAI;MAC1B;MACA;MACAlC,QAAQ,CAACmC,gBAAgB,GAAG,CAAC;MAC7B;MACA;MACA;MACA,MAAMD,OAAO,GAAGE,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAAC1C,IAAI;MACrC,IAAIuC,OAAO,CAACI,SAAS,KAAK,UAAU,IAAIJ,OAAO,CAACK,KAAK,KAAK,kBAAkB,EAAE;QAC5E9C,QAAQ,CAAC,IAAA+C,6BAAkB,EAAC,CAAC,CAAC;MAChC;IACF,CAAC;IAED,MAAMC,KAAK,GAAGA,CAAA,KAAM;MAClB,MAAMC,QAAQ,GAAGN,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAAC1C,IAAI;MACtC,IAAI+C,QAAQ,CAACH,KAAK,KAAK,MAAM,EAAE;QAAC;MAAO;MACvC,IACEG,QAAQ,CAACJ,SAAS,KAAK,UAAU,IACjCI,QAAQ,CAACH,KAAK,KAAK,kBAAkB,EACrC;QACA,IAAAI,oCAAmB,EAAC,UAAU,CAAC;QAC/BlD,QAAQ,CAAC,IAAAmD,8BAAmB,EAAC,CAAC,CAAC;QAC/B;MACF;MACA;MACA,IAAIF,QAAQ,CAACH,KAAK,KAAK,OAAO,EAAE;QAAC;MAAO;MACxC,IAAAM,gCAAmB,EAACH,QAAQ,CAACH,KAAK,KAAK,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;IAC9E,CAAC;;IAED;IACA,MAAMO,OAAO,GAAGA,CAAC;MAAEC;IAA0B,CAAC,KAAK;MACjD,KAAK,IAAAC,wCAAiB,EAAC,CAACD,KAAK,CAAC;IAChC,CAAC;;IAED;IACA,MAAME,MAAM,GAAGA,CAAC;MAAEC;IAAwB,CAAC,KAAK;MAC9C,IAAIA,IAAI,EAAE;QAAC,KAAK,IAAAF,wCAAiB,EAAC,KAAK,CAAC;MAAC;IAC3C,CAAC;;IAED;IACA;IACA,MAAMG,gBAAgB,GAAGA,CAAA,KAAM;MAC7B,IAAI;QACF,IAAAC,2BAAW,EAAC,CAAC,EAAEC,eAAe,EAAEC,uBAAuB,GAAG,CAAC;MAC7D,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ,CAAC;IACD,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;MAC/B,IAAI;QACF,IAAAH,2BAAW,EAAC,CAAC,EAAEC,eAAe,EAAEG,yBAAyB,GAAG,CAAC;MAC/D,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ,CAAC;IAEDxD,QAAQ,CAACyD,gBAAgB,CAAC,YAAY,EAAExB,QAAQ,CAAC;IACjDjC,QAAQ,CAACyD,gBAAgB,CAAC,SAAS,EAAEhB,KAAK,CAAC;IAC3CzC,QAAQ,CAACyD,gBAAgB,CAAC,8BAA8B,EAAEX,OAAO,CAAC;IAClE9C,QAAQ,CAACyD,gBAAgB,CAAC,yBAAyB,EAAER,MAAM,CAAC;IAC5DjD,QAAQ,CAACyD,gBAAgB,CAAC,yBAAyB,EAAEN,gBAAgB,CAAC;IACtE;IACA;IACA,MAAMO,OAAO,GAAGA,CAAA,KAAM;MACpBvE,KAAK,CAAC,gBAAgB,CAAC;IACzB,CAAC;IACDa,QAAQ,CAACyD,gBAAgB,CAAC,kBAAkB,EAAEC,OAAO,CAAC;IACtD;IACA;IACA,MAAMC,WAAW,GAAGA,CAAC;MAAE3B,KAAK;MAAE4B;IAAkD,CAAC,KAAK;MACpFzE,KAAK,CAAC,qBAAqB,EAAE6C,KAAK,GAAG,WAAW4B,SAAS,IAAI,EAAE,IAAI5B,KAAK,EAAE,GAAG,IAAI,CAAC;MAClF;MACA;MACA,IAAIA,KAAK,EAAE;QAAC,IAAA6B,iCAAoB,EAAC,KAAK,CAAC;MAAC;IAC1C,CAAC;IACD7D,QAAQ,CAACyD,gBAAgB,CAAC,wBAAwB,EAAEE,WAAW,CAAC;IAChE3D,QAAQ,CAACyD,gBAAgB,CAAC,2BAA2B,EAAEF,kBAAkB,CAAC;IAE1E,OAAO,MAAM;MACXvD,QAAQ,CAAC8D,mBAAmB,CAAC,YAAY,CAAC;MAC1C9D,QAAQ,CAAC8D,mBAAmB,CAAC,SAAS,CAAC;MACvC9D,QAAQ,CAAC8D,mBAAmB,CAAC,8BAA8B,CAAC;MAC5D9D,QAAQ,CAAC8D,mBAAmB,CAAC,yBAAyB,CAAC;MACvD9D,QAAQ,CAAC8D,mBAAmB,CAAC,yBAAyB,CAAC;MACvD9D,QAAQ,CAAC8D,mBAAmB,CAAC,2BAA2B,CAAC;MACzD9D,QAAQ,CAAC8D,mBAAmB,CAAC,kBAAkB,CAAC;MAChD9D,QAAQ,CAAC8D,mBAAmB,CAAC,wBAAwB,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAAC9D,QAAQ,EAAEP,QAAQ,CAAC,CAAC;EAExB,MAAMsE,WAAW,GAAGpE,IAAI,CAACqE,QAAQ,IAAI,QAAQ;EAC7C,MAAMC,SAAS,GACbtE,IAAI,CAAC2C,SAAS,KAAK,UAAU,IAAI3C,IAAI,CAAC4C,KAAK,KAAK,kBAAkB;EACpE,MAAM2B,MAAM,GAAGvE,IAAI,CAAC4C,KAAK,KAAK,YAAY,IAAI5C,IAAI,CAAC4C,KAAK,KAAK,SAAS;EACtE,MAAM4B,UAAU,GAAGxE,IAAI,CAAC2C,SAAS,KAAK,UAAU;EAChD,MAAM8B,aAAa,GAAGtE,OAAO,CAACuE,QAAQ,KAAK,IAAI;;EAE/C;EACA,IAAAzD,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,QAAQ,IAAI,CAACE,KAAK,EAAE;MAAC;IAAO;IAEjC,MAAMoE,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAACjE,aAAa,CAAC6B,OAAO,EAAE;QAAC;MAAO;MACpC,IAAI;QACFlC,QAAQ,CAACuE,OAAO,CAAClE,aAAa,CAAC6B,OAAO,CAAC;MACzC,CAAC,CAAC,MAAM;QACN;MAAA;MAEF7B,aAAa,CAAC6B,OAAO,GAAG,IAAI;MAC5B3B,WAAW,CAAC2B,OAAO,GAAG,KAAK;MAC3B1B,mBAAmB,CAAC0B,OAAO,GAAG,MAAM;IACtC,CAAC;IAED,IAAIvC,IAAI,CAAC4C,KAAK,KAAK,MAAM,IAAI5C,IAAI,CAAC4C,KAAK,KAAK,OAAO,EAAE;MACnD+B,OAAO,CAAC,CAAC;MACT;IACF;IAEA,IAAIL,SAAS,EAAE;MACb,IAAI5D,aAAa,CAAC6B,OAAO,EAAE;QAAC;MAAO;MACnC,MAAMsC,IAAI,GAAGzG,MAAM,CAAC4B,IAAI,CAAC8E,MAAM,IAAI9E,IAAI,CAAC+E,OAAO,IAAIC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtExE,aAAa,CAAC6B,OAAO,GAAGsC,IAAI;MAC5BjE,WAAW,CAAC2B,OAAO,GAAG,KAAK;MAC3B;MACA;MACA,IAAIzB,KAAK,EAAE;QAAC,IAAAoD,iCAAoB,EAAC,IAAI,CAAC;MAAC;MACvC,IAAI;QACF7D,QAAQ,CAAC8E,mBAAmB,CAC1BN,IAAI,EACJT,WAAW,EACXA,WAAW,EACX,SAAS,EACTpE,IAAI,CAACoF,IAAI,KAAK,OAChB,CAAC;MACH,CAAC,CAAC,MAAM;QACN1E,aAAa,CAAC6B,OAAO,GAAG,IAAI;QAC5B,IAAA2B,iCAAoB,EAAC,KAAK,CAAC;MAC7B;MACA;IACF;;IAEA;IACA;IACA,IAAIpD,KAAK,IAAI0D,UAAU,IAAI,CAAC9D,aAAa,CAAC6B,OAAO,IAAIlC,QAAQ,CAACgF,SAAS,EAAE;MACvE;MACA;MACA,MAAMR,IAAI,GAAGzG,MAAM,CAAC,GAAG4B,IAAI,CAAC+E,OAAO,IAAI,EAAE,IAAI/E,IAAI,CAACsF,SAAS,IAAIL,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC;MAC5ExE,aAAa,CAAC6B,OAAO,GAAGsC,IAAI;MAC5BhE,mBAAmB,CAAC0B,OAAO,GAAG,MAAM;MACpC/C,KAAK,CAAC,WAAW,EAAEqF,IAAI,CAAC;MACxB,IAAI;QACFxE,QAAQ,CAACgF,SAAS,CAACR,IAAI,EAAET,WAAW,EAAEA,WAAW,EAAE,SAAS,EAAEpE,IAAI,CAACoF,IAAI,KAAK,OAAO,CAAC;MACtF,CAAC,CAAC,MAAM;QACN1E,aAAa,CAAC6B,OAAO,GAAG,IAAI;MAC9B;MACA;IACF;IAEA,MAAMsC,IAAI,GAAGnE,aAAa,CAAC6B,OAAO;IAClC,IAAI,CAACsC,IAAI,EAAE;MAAC;IAAO;IAEnB,IAAI/D,KAAK,IAAI0D,UAAU,EAAE;MACvB,IAAIC,aAAa,IAAI5D,mBAAmB,CAAC0B,OAAO,KAAK,WAAW,EAAE;QAChE1B,mBAAmB,CAAC0B,OAAO,GAAG,WAAW;QACzClC,QAAQ,CAACkF,mCAAmC,GAAGV,IAAI,CAAC;MACtD,CAAC,MAAM,IACLN,MAAM,IACN,CAACE,aAAa,IACd5D,mBAAmB,CAAC0B,OAAO,KAAK,MAAM,EACtC;QACA1B,mBAAmB,CAAC0B,OAAO,GAAG,YAAY;QAC1ClC,QAAQ,CAACmF,oCAAoC,GAAGX,IAAI,CAAC;MACvD;MACA;IACF;;IAEA;IACA;IACA,IAAI/D,KAAK,IAAIyD,MAAM,IAAI,CAAC3D,WAAW,CAAC2B,OAAO,EAAE;MAC3C3B,WAAW,CAAC2B,OAAO,GAAG,IAAI;MAC1B,IAAI;QACFlC,QAAQ,CAACoF,kBAAkB,GAAGZ,IAAI,CAAC;MACrC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC,EAAE,CACDxE,QAAQ,EACRE,KAAK,EACLO,KAAK,EACLwD,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,aAAa,EACbL,WAAW,EACXpE,IAAI,CAAC4C,KAAK,EACV5C,IAAI,CAAC8E,MAAM,EACX9E,IAAI,CAAC+E,OAAO,EACZ/E,IAAI,CAACsF,SAAS,EACdtF,IAAI,CAACoF,IAAI,CACV,CAAC;;EAEF;EACA,IAAAnE,gBAAS,EAAC,MAAM;IACd,MAAM4D,IAAI,GAAGnE,aAAa,CAAC6B,OAAO;IAClC,IAAI,CAAClC,QAAQ,IAAI,CAACE,KAAK,IAAI,CAACO,KAAK,IAAI,CAAC+D,IAAI,IAAI,CAACN,MAAM,EAAE;MAAC;IAAO;IAC/D,IAAI;MACFlE,QAAQ,CAACqF,YAAY,GAAGb,IAAI,EAAE,CAAC1E,OAAO,CAACwF,KAAK,CAAC;IAC/C,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ,CAAC,EAAE,CAACtF,QAAQ,EAAEE,KAAK,EAAEO,KAAK,EAAEyD,MAAM,EAAEpE,OAAO,CAACwF,KAAK,CAAC,CAAC;;EAEnD;EACA;EACA,IAAA1E,gBAAS,EACP,MAAM,MAAM;IACV,IAAIZ,QAAQ,IAAIK,aAAa,CAAC6B,OAAO,EAAE;MACrC,IAAI;QACFlC,QAAQ,CAACuE,OAAO,CAAClE,aAAa,CAAC6B,OAAO,CAAC;MACzC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC,EACD,CAAClC,QAAQ,CACX,CAAC;AACH,CAAC;AAAClC,OAAA,CAAA0B,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactRedux","_roomStore","_callSlice","_callActions","_callSessionController","_livekitRuntime","_callUiStore","_systemCall","trace","args","__DEV__","console","log","useCallKeep","dispatch","useDispatch","call","useSelector","state","session","useCallSession","callKeep","useMemo","loadCallKeep","ready","setReady","useState","activeUuidRef","useRef","answeredRef","outgoingReportedRef","isIOS","Platform","OS","useEffect","cancelled","setup","ios","appName","supportsVideo","maximumCallGroups","maximumCallsPerCallGroup","includesCallsInRecents","android","alertTitle","alertDescription","cancelButton","okButton","additionalPermissions","foregroundService","channelId","channelName","notificationTitle","setAvailable","error","isOtherCall","payload","uuid","String","callUUID","toLowerCase","active","current","store","getState","ringingUuid","direction","callId","callKitUuid","onAnswer","rememberSystemCallAction","backToForeground","phase","acceptIncomingCall","onEnd","snapshot","declineActiveCallWhenOnline","terminateActiveCall","onMuted","muted","setCallMicEnabled","onHold","hold","onAudioActivated","loadLiveKit","RTCAudioSession","audioSessionDidActivate","onAudioDeactivated","audioSessionDidDeactivate","addEventListener","onReset","onDisplayed","errorCode","fromPushKit","setCallSystemRinging","replay","RNCallKeepPerformAnswerCallAction","RNCallKeepPerformEndCallAction","RNCallKeepDidDisplayIncomingCall","RNCallKeepDidActivateAudioSession","RNCallKeepDidDeactivateAudioSession","RNCallKeepDidPerformSetMutedCallAction","onLoadWithEvents","events","Array","isArray","length","map","e","name","join","clearInitialEvents","event","data","removeEventListener","displayName","roomName","isRinging","isLive","isOutgoing","peerConnected","anchorAt","release","endCall","roomJid","Date","now","earlier","takeSystemCallAction","displayIncomingCall","kind","startCall","startedAt","reportConnectedOutgoingCallWithUUID","reportConnectingOutgoingCallWithUUID","answerIncomingCall","setMutedCall","micOn","exports"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/useCallKeep.ts"],"mappings":"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","ignoreList":[]}
@@ -3,33 +3,72 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.handleCallPush = void 0;
6
+ exports.handleCallPush = exports.declineCallFromPush = exports.answerCallFromPush = exports.__resetCallPushForTests = void 0;
7
7
  var _roomStore = require("../roomStore");
8
8
  var _callSlice = require("../roomStore/callSlice");
9
+ var _systemCall = require("../components/VideoCalls/systemCall");
10
+ var _callActions = require("../components/VideoCalls/callActions");
9
11
  var _callPush = require("./callPush");
10
- /**
11
- * Turn an incoming-call push into a ringing call.
12
- *
13
- * On mobile the XMPP socket dies whenever the OS backgrounds or kills the
14
- * app, and the `call-token` stanza that normally opens the ring screen is
15
- * lost with it. The backend also delivers the call as a data push, so this
16
- * is the path every call takes when the app was not in the foreground.
17
- *
18
- * Returns true when the payload WAS a call push (whether or not it could
19
- * be rung), so the caller knows to stop and not also show it as a chat
20
- * notification. A user should never get a "new message: call-state" toast.
21
- */
22
- const handleCallPush = data => {
23
- if (!(0, _callPush.isCallPush)(data)) {
24
- return false;
12
+ var _normalizeRoomJid = require("./normalizeRoomJid");
13
+ const PENDING_CALL_PUSH_TTL_MS = 60_000;
14
+ let pendingPush = null;
15
+ let unwatch = null;
16
+ const trace = (...args) => {
17
+ if (__DEV__) {
18
+ console.log('[calls] push:', ...args);
19
+ }
20
+ };
21
+ const callsConfigured = () => _roomStore.store.getState().chatSettingStore.config?.videoCalls !== undefined;
22
+ const holdUntilConfigured = (data, intent) => {
23
+ pendingPush = {
24
+ data,
25
+ intent,
26
+ at: Date.now()
27
+ };
28
+ if (unwatch) {
29
+ return;
30
+ }
31
+ unwatch = _roomStore.store.subscribe(() => {
32
+ if (!callsConfigured()) {
33
+ return;
34
+ }
35
+ unwatch?.();
36
+ unwatch = null;
37
+ const held = pendingPush;
38
+ pendingPush = null;
39
+ if (!held) {
40
+ return;
41
+ }
42
+ if (Date.now() - held.at > PENDING_CALL_PUSH_TTL_MS) {
43
+ trace('held call push expired');
44
+ (0, _systemCall.endSystemIncomingCall)((0, _callPush.parseCallPush)(held.data).callId);
45
+ return;
46
+ }
47
+ ringFromPush(held.data, held.intent);
48
+ });
49
+ };
50
+ const applyIntent = intent => {
51
+ const call = _roomStore.store.getState().call;
52
+ if (call.direction !== 'incoming' || call.phase !== 'ringing-incoming') {
53
+ return;
54
+ }
55
+ if (intent === 'answer') {
56
+ _roomStore.store.dispatch((0, _callSlice.acceptIncomingCall)());
57
+ }
58
+ if (intent === 'decline') {
59
+ (0, _callActions.declineActiveCallWhenOnline)();
25
60
  }
61
+ };
62
+ const ringFromPush = (data, intent) => {
26
63
  const parsed = (0, _callPush.parseCallPush)(data);
27
64
  const state = _roomStore.store.getState();
28
65
 
29
66
  // Calls off in this deployment: swallow the push rather than ringing a
30
67
  // screen the host never opted into.
31
68
  if (state.chatSettingStore.config?.videoCalls?.enabled !== true) {
32
- return true;
69
+ trace('calls are off, dropping', parsed.callId);
70
+ (0, _systemCall.endSystemIncomingCall)(parsed.callId);
71
+ return false;
33
72
  }
34
73
 
35
74
  // Already ringing or in this exact call (the push raced the stanza, or
@@ -38,9 +77,15 @@ const handleCallPush = data => {
38
77
  const current = state.call;
39
78
  if (current.phase !== 'idle') {
40
79
  const sameCall = !!parsed.callId && parsed.callId === current.callId || !!parsed.roomBareName && parsed.roomBareName === current.roomBareName;
41
- if (sameCall || current.phase === 'in-call') {
80
+ if (sameCall) {
81
+ applyIntent(intent);
42
82
  return true;
43
83
  }
84
+ if (current.phase === 'in-call') {
85
+ // Busy with another call: no second ring.
86
+ (0, _systemCall.endSystemIncomingCall)(parsed.callId);
87
+ return false;
88
+ }
44
89
  }
45
90
 
46
91
  // Without a LiveKit token there is nothing to accept: the push is only
@@ -48,16 +93,21 @@ const handleCallPush = data => {
48
93
  // cannot work, so treat it as handled and let the stanza (once the
49
94
  // socket is back up) open the real ring screen.
50
95
  if (!parsed.token) {
51
- return true;
96
+ (0, _systemCall.endSystemIncomingCall)(parsed.callId);
97
+ return false;
52
98
  }
53
99
 
54
100
  // Resolve the full room JID from the local room map. The push carries
55
101
  // the bare name; callSlice and the hangup signal both want the JID.
56
102
  const rooms = state.rooms.rooms || {};
57
103
  const resolved = Object.values(rooms).find(room => (room?.jid || '').split('@')[0] === parsed.roomBareName || room?.jid === parsed.roomRef);
58
- const roomJid = resolved?.jid || (parsed.roomRef && parsed.roomRef.includes('@') ? parsed.roomRef : '');
104
+ const conference = state.chatSettingStore.config?.xmppSettings?.conference || '';
105
+ const fromRef = parsed.roomRef ? (0, _normalizeRoomJid.normalizeRoomJid)(parsed.roomRef, conference) : '';
106
+ const roomJid = resolved?.jid || (fromRef.includes('@') ? fromRef : '');
59
107
  if (!roomJid) {
60
- return true;
108
+ trace('no room for call push', parsed.roomRef);
109
+ (0, _systemCall.endSystemIncomingCall)(parsed.callId);
110
+ return false;
61
111
  }
62
112
  _roomStore.store.dispatch((0, _callSlice.setIncomingCallToken)({
63
113
  roomJid,
@@ -68,7 +118,31 @@ const handleCallPush = data => {
68
118
  callId: parsed.callId,
69
119
  peerXmppUsername: parsed.callerXmppUsername
70
120
  }));
121
+ trace('ringing', parsed.callId, intent);
122
+ applyIntent(intent);
123
+ return true;
124
+ };
125
+ const handleCallPush = (data, intent = 'ring') => {
126
+ if (!(0, _callPush.isCallPush)(data)) {
127
+ return false;
128
+ }
129
+ if (!callsConfigured()) {
130
+ trace('holding call push until the chat is configured');
131
+ holdUntilConfigured(data, intent);
132
+ return true;
133
+ }
134
+ ringFromPush(data, intent);
71
135
  return true;
72
136
  };
73
137
  exports.handleCallPush = handleCallPush;
138
+ const answerCallFromPush = data => handleCallPush(data, 'answer');
139
+ exports.answerCallFromPush = answerCallFromPush;
140
+ const declineCallFromPush = data => handleCallPush(data, 'decline');
141
+ exports.declineCallFromPush = declineCallFromPush;
142
+ const __resetCallPushForTests = () => {
143
+ unwatch?.();
144
+ unwatch = null;
145
+ pendingPush = null;
146
+ };
147
+ exports.__resetCallPushForTests = __resetCallPushForTests;
74
148
  //# sourceMappingURL=incomingCallFromPush.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_roomStore","require","_callSlice","_callPush","handleCallPush","data","isCallPush","parsed","parseCallPush","state","store","getState","chatSettingStore","config","videoCalls","enabled","current","call","phase","sameCall","callId","roomBareName","token","rooms","resolved","Object","values","find","room","jid","split","roomRef","roomJid","includes","dispatch","setIncomingCallToken","roomName","callerName","title","name","kind","peerXmppUsername","callerXmppUsername","exports"],"sourceRoot":"../../../src","sources":["helpers/incomingCallFromPush.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,cAAc,GACzBC,IAA4C,IAChC;EACZ,IAAI,CAAC,IAAAC,oBAAU,EAACD,IAAI,CAAC,EAAE;IACrB,OAAO,KAAK;EACd;EAEA,MAAME,MAAM,GAAG,IAAAC,uBAAa,EAACH,IAAI,CAAC;EAClC,MAAMI,KAAK,GAAGC,gBAAK,CAACC,QAAQ,CAAC,CAAC;;EAE9B;EACA;EACA,IAAIF,KAAK,CAACG,gBAAgB,CAACC,MAAM,EAAEC,UAAU,EAAEC,OAAO,KAAK,IAAI,EAAE;IAC/D,OAAO,IAAI;EACb;;EAEA;EACA;EACA;EACA,MAAMC,OAAO,GAAGP,KAAK,CAACQ,IAAI;EAC1B,IAAID,OAAO,CAACE,KAAK,KAAK,MAAM,EAAE;IAC5B,MAAMC,QAAQ,GACX,CAAC,CAACZ,MAAM,CAACa,MAAM,IAAIb,MAAM,CAACa,MAAM,KAAKJ,OAAO,CAACI,MAAM,IACnD,CAAC,CAACb,MAAM,CAACc,YAAY,IAAId,MAAM,CAACc,YAAY,KAAKL,OAAO,CAACK,YAAa;IACzE,IAAIF,QAAQ,IAAIH,OAAO,CAACE,KAAK,KAAK,SAAS,EAAE;MAC3C,OAAO,IAAI;IACb;EACF;;EAEA;EACA;EACA;EACA;EACA,IAAI,CAACX,MAAM,CAACe,KAAK,EAAE;IACjB,OAAO,IAAI;EACb;;EAEA;EACA;EACA,MAAMC,KAAK,GAAGd,KAAK,CAACc,KAAK,CAACA,KAAK,IAAI,CAAC,CAAC;EACrC,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAACH,KAAK,CAAC,CAACI,IAAI,CACvCC,IAAS,IACR,CAACA,IAAI,EAAEC,GAAG,IAAI,EAAE,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAKvB,MAAM,CAACc,YAAY,IACvDO,IAAI,EAAEC,GAAG,KAAKtB,MAAM,CAACwB,OACzB,CAAgE;EAEhE,MAAMC,OAAO,GACXR,QAAQ,EAAEK,GAAG,KACZtB,MAAM,CAACwB,OAAO,IAAIxB,MAAM,CAACwB,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,GAAG1B,MAAM,CAACwB,OAAO,GAAG,EAAE,CAAC;EACxE,IAAI,CAACC,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEAtB,gBAAK,CAACwB,QAAQ,CACZ,IAAAC,+BAAoB,EAAC;IACnBH,OAAO;IACPI,QAAQ,EAAE7B,MAAM,CAAC8B,UAAU,IAAIb,QAAQ,EAAEc,KAAK,IAAId,QAAQ,EAAEe,IAAI,IAAI,IAAI;IACxElB,YAAY,EAAEd,MAAM,CAACc,YAAY;IACjCC,KAAK,EAAEf,MAAM,CAACe,KAAK;IACnBkB,IAAI,EAAEjC,MAAM,CAACiC,IAAI;IACjBpB,MAAM,EAAEb,MAAM,CAACa,MAAM;IACrBqB,gBAAgB,EAAElC,MAAM,CAACmC;EAC3B,CAAC,CACH,CAAC;EAED,OAAO,IAAI;AACb,CAAC;AAACC,OAAA,CAAAvC,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_roomStore","require","_callSlice","_systemCall","_callActions","_callPush","_normalizeRoomJid","PENDING_CALL_PUSH_TTL_MS","pendingPush","unwatch","trace","args","__DEV__","console","log","callsConfigured","store","getState","chatSettingStore","config","videoCalls","undefined","holdUntilConfigured","data","intent","at","Date","now","subscribe","held","endSystemIncomingCall","parseCallPush","callId","ringFromPush","applyIntent","call","direction","phase","dispatch","acceptIncomingCall","declineActiveCallWhenOnline","parsed","state","enabled","current","sameCall","roomBareName","token","rooms","resolved","Object","values","find","room","jid","split","roomRef","conference","xmppSettings","fromRef","normalizeRoomJid","roomJid","includes","setIncomingCallToken","roomName","callerName","title","name","kind","peerXmppUsername","callerXmppUsername","handleCallPush","isCallPush","exports","answerCallFromPush","declineCallFromPush","__resetCallPushForTests"],"sourceRoot":"../../../src","sources":["helpers/incomingCallFromPush.ts"],"mappings":"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","ignoreList":[]}
@@ -75,12 +75,30 @@ Object.defineProperty(exports, "XmppProvider", {
75
75
  return _xmppProvider.XmppProvider;
76
76
  }
77
77
  });
78
+ Object.defineProperty(exports, "answerCallFromPush", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _incomingCallFromPush.answerCallFromPush;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "callKitUuid", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _systemCall.callKitUuid;
88
+ }
89
+ });
78
90
  Object.defineProperty(exports, "clearPushKeyPair", {
79
91
  enumerable: true,
80
92
  get: function () {
81
93
  return _pushKeyStore.clearPushKeyPair;
82
94
  }
83
95
  });
96
+ Object.defineProperty(exports, "declineCallFromPush", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _incomingCallFromPush.declineCallFromPush;
100
+ }
101
+ });
84
102
  Object.defineProperty(exports, "detectPushTokenType", {
85
103
  enumerable: true,
86
104
  get: function () {
@@ -123,6 +141,12 @@ Object.defineProperty(exports, "handleQRChatId", {
123
141
  return _useQRCodeChatHandler.handleQRChatId;
124
142
  }
125
143
  });
144
+ Object.defineProperty(exports, "isCallPush", {
145
+ enumerable: true,
146
+ get: function () {
147
+ return _callPush.isCallPush;
148
+ }
149
+ });
126
150
  Object.defineProperty(exports, "isDarkTheme", {
127
151
  enumerable: true,
128
152
  get: function () {
@@ -177,6 +201,12 @@ Object.defineProperty(exports, "openSealedPush", {
177
201
  return _sealedPush.openSealedPush;
178
202
  }
179
203
  });
204
+ Object.defineProperty(exports, "parseCallPush", {
205
+ enumerable: true,
206
+ get: function () {
207
+ return _callPush.parseCallPush;
208
+ }
209
+ });
180
210
  Object.defineProperty(exports, "presentSealedPush", {
181
211
  enumerable: true,
182
212
  get: function () {
@@ -320,6 +350,9 @@ var _ReduxWrapper = require("./components/MainComponents/ReduxWrapper");
320
350
  var _xmppProvider = require("./context/xmppProvider");
321
351
  var _useUnreadMessagesCounter = require("./hooks/useUnreadMessagesCounter");
322
352
  var _pushPayload = require("./helpers/pushPayload");
353
+ var _systemCall = require("./components/VideoCalls/systemCall");
354
+ var _incomingCallFromPush = require("./helpers/incomingCallFromPush");
355
+ var _callPush = require("./helpers/callPush");
323
356
  var _pushRegistration = require("./services/pushRegistration");
324
357
  var _push = require("./networking/api-requests/push.api");
325
358
  var _pushKeyStore = require("./push/pushKeyStore");