@ethora/chat-component-rn 26.10.3 → 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.
Files changed (113) hide show
  1. package/lib/commonjs/components/Header/HeaderRoomList.js +72 -69
  2. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  3. package/lib/commonjs/components/MainComponents/ChatHeader.js +2 -1
  4. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  5. package/lib/commonjs/components/VideoCalls/ActiveCallBar.js +248 -0
  6. package/lib/commonjs/components/VideoCalls/ActiveCallBar.js.map +1 -0
  7. package/lib/commonjs/components/VideoCalls/CallIcons.js +41 -16
  8. package/lib/commonjs/components/VideoCalls/CallIcons.js.map +1 -1
  9. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +193 -37
  10. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  11. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +71 -109
  12. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  13. package/lib/commonjs/components/VideoCalls/callSessionController.js +74 -21
  14. package/lib/commonjs/components/VideoCalls/callSessionController.js.map +1 -1
  15. package/lib/commonjs/components/VideoCalls/callUiStore.js +120 -0
  16. package/lib/commonjs/components/VideoCalls/callUiStore.js.map +1 -0
  17. package/lib/commonjs/components/VideoCalls/livekitRuntime.js +10 -1
  18. package/lib/commonjs/components/VideoCalls/livekitRuntime.js.map +1 -1
  19. package/lib/commonjs/components/VideoCalls/useCallKeep.js +197 -28
  20. package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -1
  21. package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js +88 -0
  22. package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js.map +1 -0
  23. package/lib/commonjs/components/VideoCalls/usePipTile.js +232 -0
  24. package/lib/commonjs/components/VideoCalls/usePipTile.js.map +1 -0
  25. package/lib/commonjs/helpers/updateMessagesTillLast.js +3 -1
  26. package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
  27. package/lib/commonjs/i18n/strings.js +54 -0
  28. package/lib/commonjs/i18n/strings.js.map +1 -1
  29. package/lib/commonjs/main.js.map +1 -1
  30. package/lib/commonjs/version.js +1 -1
  31. package/lib/module/components/Header/HeaderRoomList.js +73 -70
  32. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  33. package/lib/module/components/MainComponents/ChatHeader.js +2 -1
  34. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  35. package/lib/module/components/VideoCalls/ActiveCallBar.js +240 -0
  36. package/lib/module/components/VideoCalls/ActiveCallBar.js.map +1 -0
  37. package/lib/module/components/VideoCalls/CallIcons.js +38 -15
  38. package/lib/module/components/VideoCalls/CallIcons.js.map +1 -1
  39. package/lib/module/components/VideoCalls/VideoCallOverlay.js +195 -39
  40. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  41. package/lib/module/components/VideoCalls/VideoCallSession.js +72 -111
  42. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  43. package/lib/module/components/VideoCalls/callSessionController.js +71 -19
  44. package/lib/module/components/VideoCalls/callSessionController.js.map +1 -1
  45. package/lib/module/components/VideoCalls/callUiStore.js +111 -0
  46. package/lib/module/components/VideoCalls/callUiStore.js.map +1 -0
  47. package/lib/module/components/VideoCalls/livekitRuntime.js +10 -1
  48. package/lib/module/components/VideoCalls/livekitRuntime.js.map +1 -1
  49. package/lib/module/components/VideoCalls/useCallKeep.js +198 -29
  50. package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -1
  51. package/lib/module/components/VideoCalls/useOngoingCallNotification.js +84 -0
  52. package/lib/module/components/VideoCalls/useOngoingCallNotification.js.map +1 -0
  53. package/lib/module/components/VideoCalls/usePipTile.js +228 -0
  54. package/lib/module/components/VideoCalls/usePipTile.js.map +1 -0
  55. package/lib/module/helpers/updateMessagesTillLast.js +3 -1
  56. package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
  57. package/lib/module/i18n/strings.js +54 -0
  58. package/lib/module/i18n/strings.js.map +1 -1
  59. package/lib/module/main.js.map +1 -1
  60. package/lib/module/version.js +1 -1
  61. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  62. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  63. package/lib/typescript/components/VideoCalls/ActiveCallBar.d.ts +27 -0
  64. package/lib/typescript/components/VideoCalls/ActiveCallBar.d.ts.map +1 -0
  65. package/lib/typescript/components/VideoCalls/CallIcons.d.ts +9 -0
  66. package/lib/typescript/components/VideoCalls/CallIcons.d.ts.map +1 -1
  67. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -1
  68. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts +7 -3
  69. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  70. package/lib/typescript/components/VideoCalls/callSessionController.d.ts +9 -0
  71. package/lib/typescript/components/VideoCalls/callSessionController.d.ts.map +1 -1
  72. package/lib/typescript/components/VideoCalls/callUiStore.d.ts +37 -0
  73. package/lib/typescript/components/VideoCalls/callUiStore.d.ts.map +1 -0
  74. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts +7 -0
  75. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts.map +1 -1
  76. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts +12 -0
  77. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -1
  78. package/lib/typescript/components/VideoCalls/useOngoingCallNotification.d.ts +10 -0
  79. package/lib/typescript/components/VideoCalls/useOngoingCallNotification.d.ts.map +1 -0
  80. package/lib/typescript/components/VideoCalls/usePipTile.d.ts +46 -0
  81. package/lib/typescript/components/VideoCalls/usePipTile.d.ts.map +1 -0
  82. package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
  83. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  84. package/lib/typescript/main.d.ts +1 -1
  85. package/lib/typescript/main.d.ts.map +1 -1
  86. package/lib/typescript/types/types.d.ts +40 -0
  87. package/lib/typescript/types/types.d.ts.map +1 -1
  88. package/lib/typescript/version.d.ts +1 -1
  89. package/package.json +1 -1
  90. package/src/components/Header/HeaderRoomList.tsx +66 -61
  91. package/src/components/MainComponents/ChatHeader.tsx +3 -0
  92. package/src/components/VideoCalls/ActiveCallBar.tsx +222 -0
  93. package/src/components/VideoCalls/CallIcons.tsx +36 -12
  94. package/src/components/VideoCalls/VideoCallOverlay.tsx +211 -37
  95. package/src/components/VideoCalls/VideoCallSession.tsx +84 -93
  96. package/src/components/VideoCalls/callSessionController.ts +73 -24
  97. package/src/components/VideoCalls/callUiStore.ts +106 -0
  98. package/src/components/VideoCalls/livekitRuntime.ts +16 -0
  99. package/src/components/VideoCalls/useCallKeep.ts +204 -33
  100. package/src/components/VideoCalls/useOngoingCallNotification.ts +113 -0
  101. package/src/components/VideoCalls/usePipTile.ts +214 -0
  102. package/src/helpers/updateMessagesTillLast.tsx +2 -1
  103. package/src/i18n/strings.ts +54 -0
  104. package/src/main.ts +3 -0
  105. package/src/types/types.ts +48 -0
  106. package/src/version.ts +1 -1
  107. package/lib/commonjs/components/VideoCalls/useDraggable.js +0 -59
  108. package/lib/commonjs/components/VideoCalls/useDraggable.js.map +0 -1
  109. package/lib/module/components/VideoCalls/useDraggable.js +0 -55
  110. package/lib/module/components/VideoCalls/useDraggable.js.map +0 -1
  111. package/lib/typescript/components/VideoCalls/useDraggable.d.ts +0 -19
  112. package/lib/typescript/components/VideoCalls/useDraggable.d.ts.map +0 -1
  113. package/src/components/VideoCalls/useDraggable.ts +0 -46
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCallUi = exports.setCallSystemRinging = exports.setCallMinimized = exports.setCallBarAnchor = exports.registerCallBarHost = exports.getCallUiState = void 0;
7
+ var _react = require("react");
8
+ var _roomStore = require("../../roomStore");
9
+ /**
10
+ * UI state of the call shared between the overlay and the header bar:
11
+ * whether the call is minimized, and which header (if any) currently hosts
12
+ * the minimized bar.
13
+ *
14
+ * Minimized, the call is a strip under the visible header (ChatHeader or
15
+ * HeaderRoomList), Telegram-style, instead of a floating panel. Each header
16
+ * registers itself while mounted; the most recently mounted one shows the
17
+ * strip (on an iPad split view both are mounted, and only one strip should
18
+ * appear). With no header mounted (the user is on a host-app screen) the
19
+ * overlay docks the same strip to the top of the screen.
20
+ */
21
+
22
+ let state = {
23
+ minimized: false,
24
+ systemRinging: false,
25
+ barHost: null,
26
+ barAnchorY: null
27
+ };
28
+ const hosts = [];
29
+ let nextHostId = 1;
30
+ const listeners = new Set();
31
+ let storeUnsubscribe = null;
32
+ const emit = patch => {
33
+ state = {
34
+ ...state,
35
+ ...patch
36
+ };
37
+ listeners.forEach(listener => listener());
38
+ };
39
+
40
+ // The next call always opens full-screen.
41
+ const ensureStoreWatcher = () => {
42
+ if (storeUnsubscribe) {
43
+ return;
44
+ }
45
+ storeUnsubscribe = _roomStore.store.subscribe(() => {
46
+ const phase = _roomStore.store.getState().call.phase;
47
+ if (state.minimized && phase === 'idle') {
48
+ emit({
49
+ minimized: false
50
+ });
51
+ }
52
+ if (state.systemRinging && phase !== 'ringing-incoming') {
53
+ emit({
54
+ systemRinging: false
55
+ });
56
+ }
57
+ });
58
+ };
59
+ const subscribe = listener => {
60
+ ensureStoreWatcher();
61
+ listeners.add(listener);
62
+ return () => {
63
+ listeners.delete(listener);
64
+ };
65
+ };
66
+ const getSnapshot = () => state;
67
+
68
+ /** Current state, for non-React code and tests. */
69
+ const getCallUiState = () => state;
70
+ exports.getCallUiState = getCallUiState;
71
+ const useCallUi = () => (0, _react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
72
+ exports.useCallUi = useCallUi;
73
+ const setCallMinimized = minimized => {
74
+ if (state.minimized !== minimized) {
75
+ emit({
76
+ minimized
77
+ });
78
+ }
79
+ };
80
+ exports.setCallMinimized = setCallMinimized;
81
+ const setCallSystemRinging = systemRinging => {
82
+ if (state.systemRinging !== systemRinging) {
83
+ emit({
84
+ systemRinging
85
+ });
86
+ }
87
+ };
88
+ exports.setCallSystemRinging = setCallSystemRinging;
89
+ const registerCallBarHost = onId => {
90
+ const id = nextHostId++;
91
+ hosts.push(id);
92
+ onId?.(id);
93
+ emit({
94
+ barHost: id
95
+ });
96
+ return () => {
97
+ const index = hosts.indexOf(id);
98
+ if (index >= 0) {
99
+ hosts.splice(index, 1);
100
+ }
101
+ const next = hosts.length ? hosts[hosts.length - 1] : null;
102
+ emit({
103
+ barHost: next,
104
+ barAnchorY: next === null ? null : state.barAnchorY
105
+ });
106
+ };
107
+ };
108
+
109
+ /** The hosting header reports where its strip slot is on screen. */
110
+ exports.registerCallBarHost = registerCallBarHost;
111
+ const setCallBarAnchor = (hostId, y) => {
112
+ if (state.barHost !== hostId || state.barAnchorY === y) {
113
+ return;
114
+ }
115
+ emit({
116
+ barAnchorY: y
117
+ });
118
+ };
119
+ exports.setCallBarAnchor = setCallBarAnchor;
120
+ //# sourceMappingURL=callUiStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_roomStore","state","minimized","systemRinging","barHost","barAnchorY","hosts","nextHostId","listeners","Set","storeUnsubscribe","emit","patch","forEach","listener","ensureStoreWatcher","store","subscribe","phase","getState","call","add","delete","getSnapshot","getCallUiState","exports","useCallUi","useSyncExternalStore","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":[]}
@@ -45,14 +45,23 @@ const loadLiveKit = () => {
45
45
  // moving subset across versions, the core package does not.
46
46
  // eslint-disable-next-line @typescript-eslint/no-require-imports
47
47
  const core = require('livekit-client');
48
+ let webrtc = null;
49
+ try {
50
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
51
+ webrtc = require('@livekit/react-native-webrtc');
52
+ } catch {
53
+ // Only needed for CallKit; calls work without it.
54
+ }
48
55
  cached = {
49
56
  Room: core.Room,
50
57
  RoomEvent: core.RoomEvent,
51
58
  Track: core.Track,
52
59
  ConnectionState: core.ConnectionState,
60
+ VideoPresets: core.VideoPresets,
53
61
  VideoTrack: rn.VideoTrack,
54
62
  AudioSession: rn.AudioSession,
55
- registerGlobals: rn.registerGlobals
63
+ registerGlobals: rn.registerGlobals,
64
+ RTCAudioSession: webrtc?.RTCAudioSession ?? null
56
65
  };
57
66
  } catch {
58
67
  cached = null;
@@ -1 +1 @@
1
- {"version":3,"names":["cached","isLiveKitAvailable","loadLiveKit","exports","undefined","rn","require","core","Room","RoomEvent","Track","ConnectionState","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;;AAmBA,IAAIA,MAAyC;AAEtC,MAAMC,kBAAkB,GAAGA,CAAA,KAAeC,WAAW,CAAC,CAAC,KAAK,IAAI;;AAEvE;AACA;AACA;AACA;AACA;AAJAC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAKO,MAAMC,WAAW,GAAGA,CAAA,KAA6B;EACtD,IAAIF,MAAM,KAAKI,SAAS,EAAE;IACxB,OAAOJ,MAAM;EACf;EAEA,IAAI;IACF;IACA,MAAMK,EAAE,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAC3C;IACA;IACA;IACA;IACA;IACA,MAAMC,IAAI,GAAGD,OAAO,CAAC,gBAAgB,CAAC;IAEtCN,MAAM,GAAG;MACPQ,IAAI,EAAED,IAAI,CAACC,IAAI;MACfC,SAAS,EAAEF,IAAI,CAACE,SAAS;MACzBC,KAAK,EAAEH,IAAI,CAACG,KAAK;MACjBC,eAAe,EAAEJ,IAAI,CAACI,eAAe;MACrCC,UAAU,EAAEP,EAAE,CAACO,UAAU;MACzBC,YAAY,EAAER,EAAE,CAACQ,YAAY;MAC7BC,eAAe,EAAET,EAAE,CAACS;IACtB,CAAC;EACH,CAAC,CAAC,MAAM;IACNd,MAAM,GAAG,IAAI;EACf;EAEA,OAAOA,MAAM;AACf,CAAC;AAACG,OAAA,CAAAD,WAAA,GAAAA,WAAA;AAEF,IAAIa,iBAAiB,GAAG,KAAK;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAIC,OAAuB,IAAW;EACrE,IAAIF,iBAAiB,EAAE;IAAC;EAAO;EAC/B,IAAI;IACFE,OAAO,CAACH,eAAe,GAAG,CAAC;EAC7B,CAAC,CAAC,MAAM;IACN;EAAA;EAEFC,iBAAiB,GAAG,IAAI;AAC1B,CAAC;;AAED;AAAAZ,OAAA,CAAAa,oBAAA,GAAAA,oBAAA;AACO,MAAME,6BAA6B,GAAGA,CAAA,KAAY;EACvDlB,MAAM,GAAGI,SAAS;EAClBW,iBAAiB,GAAG,KAAK;AAC3B,CAAC;AAACZ,OAAA,CAAAe,6BAAA,GAAAA,6BAAA","ignoreList":[]}
1
+ {"version":3,"names":["cached","isLiveKitAvailable","loadLiveKit","exports","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;AAEtC,MAAMC,kBAAkB,GAAGA,CAAA,KAAeC,WAAW,CAAC,CAAC,KAAK,IAAI;;AAEvE;AACA;AACA;AACA;AACA;AAJAC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAKO,MAAMC,WAAW,GAAGA,CAAA,KAA6B;EACtD,IAAIF,MAAM,KAAKI,SAAS,EAAE;IACxB,OAAOJ,MAAM;EACf;EAEA,IAAI;IACF;IACA,MAAMK,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;IAGFN,MAAM,GAAG;MACPS,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;IACNjB,MAAM,GAAG,IAAI;EACf;EAEA,OAAOA,MAAM;AACf,CAAC;AAACG,OAAA,CAAAD,WAAA,GAAAA,WAAA;AAEF,IAAIgB,iBAAiB,GAAG,KAAK;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,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;AAAAf,OAAA,CAAAgB,oBAAA,GAAAA,oBAAA;AACO,MAAME,6BAA6B,GAAGA,CAAA,KAAY;EACvDrB,MAAM,GAAGI,SAAS;EAClBc,iBAAiB,GAAG,KAAK;AAC3B,CAAC;AAACf,OAAA,CAAAkB,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -10,6 +10,10 @@ var _reactRedux = require("react-redux");
10
10
  var _roomStore = require("../../roomStore");
11
11
  var _callSlice = require("../../roomStore/callSlice");
12
12
  var _callTokenStanza = require("../../networking/callTokenStanza");
13
+ var _callActions = require("./callActions");
14
+ var _callSessionController = require("./callSessionController");
15
+ var _livekitRuntime = require("./livekitRuntime");
16
+ var _callUiStore = require("./callUiStore");
13
17
  /**
14
18
  * Native incoming-call UI (Android ConnectionService / iOS CallKit) via
15
19
  * the optional `react-native-callkeep` package.
@@ -19,6 +23,12 @@ var _callTokenStanza = require("../../networking/callTokenStanza");
19
23
  * loaded lazily exactly like the LiveKit packages, so hosts that don't
20
24
  * install it get the plain in-app ring screen and nothing breaks.
21
25
  *
26
+ * On iOS every call, incoming or outgoing, is also reported to CallKit for
27
+ * as long as it lasts. That is what puts it in the Dynamic Island / the
28
+ * green status-bar pill when the app is in the background, with the
29
+ * system's own mute and end buttons, and what keeps the call's audio
30
+ * running in the background.
31
+ *
22
32
  * Platform reality, stated plainly:
23
33
  * - Android: full value. A ConnectionService call shows the system
24
34
  * incoming-call screen over the lock screen.
@@ -78,16 +88,31 @@ const toUuid = seed => {
78
88
  const hex = bytes.map(b => b.toString(16).padStart(2, '0')).join('');
79
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('-');
80
90
  };
91
+ const trace = (...args) => {
92
+ if (__DEV__) {
93
+ console.log('[calls] CallKit:', ...args);
94
+ }
95
+ };
81
96
  const useCallKeep = () => {
82
97
  const dispatch = (0, _reactRedux.useDispatch)();
83
98
  const call = (0, _reactRedux.useSelector)(state => state.call);
99
+ const session = (0, _callSessionController.useCallSession)();
84
100
  const callKeep = (0, _react.useMemo)(() => loadCallKeep(), []);
101
+ const [ready, setReady] = (0, _react.useState)(false);
85
102
  const activeUuidRef = (0, _react.useRef)(null);
86
- const readyRef = (0, _react.useRef)(false);
103
+ // The CallKit call has been answered (from the system screen or in-app).
104
+ const answeredRef = (0, _react.useRef)(false);
105
+ const outgoingReportedRef = (0, _react.useRef)('none');
106
+ const isIOS = _reactNative.Platform.OS === 'ios';
87
107
 
88
108
  // One-time native setup.
89
109
  (0, _react.useEffect)(() => {
90
110
  if (!callKeep) {
111
+ if (isIOS) {
112
+ // The usual reason for "no Dynamic Island": the JS package is there
113
+ // but the binary was built without the RNCallKeep pod.
114
+ trace('unavailable (react-native-callkeep is not linked in this build)');
115
+ }
91
116
  return;
92
117
  }
93
118
  let cancelled = false;
@@ -96,7 +121,12 @@ const useCallKeep = () => {
96
121
  await callKeep.setup({
97
122
  ios: {
98
123
  appName: 'Ethora',
99
- supportsVideo: true
124
+ supportsVideo: true,
125
+ maximumCallGroups: '1',
126
+ maximumCallsPerCallGroup: '1',
127
+ // Our calls are not phone calls: keep them out of the Phone
128
+ // app's Recents, whose entries would dial back into nowhere.
129
+ includesCallsInRecents: false
100
130
  },
101
131
  android: {
102
132
  alertTitle: 'Permissions required',
@@ -115,28 +145,35 @@ const useCallKeep = () => {
115
145
  return;
116
146
  }
117
147
  callKeep.setAvailable?.(true);
118
- readyRef.current = true;
119
- } catch {
148
+ trace('ready');
149
+ setReady(true);
150
+ } catch (error) {
151
+ trace('setup failed', error);
120
152
  // Host didn't grant phone-account permission, or the module isn't
121
153
  // linked. The in-app ring screen still works, so stay quiet.
122
- readyRef.current = false;
154
+ setReady(false);
123
155
  }
124
156
  })();
125
157
  return () => {
126
158
  cancelled = true;
127
159
  };
128
- }, [callKeep]);
160
+ }, [callKeep, isIOS]);
129
161
 
130
- // Bridge native answer/end actions back into Redux.
162
+ // Bridge native actions back into the call.
131
163
  (0, _react.useEffect)(() => {
132
164
  if (!callKeep) {
133
165
  return;
134
166
  }
135
167
  const onAnswer = () => {
168
+ answeredRef.current = true;
136
169
  // The user answered from the system screen, which on Android may
137
170
  // mean the app was not even in the foreground.
138
171
  callKeep.backToForeground?.();
139
- if (_roomStore.store.getState().call.direction === 'incoming') {
172
+ // Only from the ring: CallKit also reports the answer we make on its
173
+ // behalf after an in-app accept, and re-accepting then would drop an
174
+ // in-progress call back to 'connecting'.
175
+ const current = _roomStore.store.getState().call;
176
+ if (current.direction === 'incoming' && current.phase === 'ringing-incoming') {
140
177
  dispatch((0, _callSlice.acceptIncomingCall)());
141
178
  }
142
179
  };
@@ -148,54 +185,190 @@ const useCallKeep = () => {
148
185
  if (snapshot.direction === 'incoming' && snapshot.phase === 'ringing-incoming') {
149
186
  (0, _callTokenStanza.sendCallStateSignal)('declined');
150
187
  dispatch((0, _callSlice.declineIncomingCall)());
188
+ return;
189
+ }
190
+ // Ended from the Dynamic Island, the lock screen or a headset.
191
+ if (snapshot.phase === 'error') {
192
+ return;
193
+ }
194
+ (0, _callActions.terminateActiveCall)(snapshot.phase === 'requesting' ? 'cancelled' : 'ended');
195
+ };
196
+
197
+ // The system mute button (Dynamic Island, lock screen, CarPlay).
198
+ const onMuted = ({
199
+ muted
200
+ }) => {
201
+ void (0, _callSessionController.setCallMicEnabled)(!muted);
202
+ };
203
+
204
+ // Another call (e.g. a phone call) put ours on hold: stop sending audio.
205
+ const onHold = ({
206
+ hold
207
+ }) => {
208
+ if (hold) {
209
+ void (0, _callSessionController.setCallMicEnabled)(false);
210
+ }
211
+ };
212
+
213
+ // CallKit owns the iOS audio session: WebRTC may only start its audio
214
+ // unit once CallKit has activated the session.
215
+ const onAudioActivated = () => {
216
+ try {
217
+ (0, _livekitRuntime.loadLiveKit)()?.RTCAudioSession?.audioSessionDidActivate?.();
218
+ } catch {
219
+ // Older webrtc builds manage the session on their own.
220
+ }
221
+ };
222
+ const onAudioDeactivated = () => {
223
+ try {
224
+ (0, _livekitRuntime.loadLiveKit)()?.RTCAudioSession?.audioSessionDidDeactivate?.();
225
+ } catch {
226
+ // noop
151
227
  }
152
228
  };
153
229
  callKeep.addEventListener('answerCall', onAnswer);
154
230
  callKeep.addEventListener('endCall', onEnd);
231
+ callKeep.addEventListener('didPerformSetMutedCallAction', onMuted);
232
+ callKeep.addEventListener('didToggleHoldCallAction', onHold);
233
+ callKeep.addEventListener('didActivateAudioSession', onAudioActivated);
234
+ // CallKit rejected or dropped our calls (e.g. a build without the voip
235
+ // background mode): there is nothing to end any more.
236
+ const onReset = () => {
237
+ trace('provider reset');
238
+ };
239
+ callKeep.addEventListener('didResetProvider', onReset);
240
+ // The system's verdict on displayIncomingCall ("Unentitled" means the
241
+ // app lacks the voip background mode).
242
+ const onDisplayed = ({
243
+ error,
244
+ errorCode
245
+ }) => {
246
+ trace('incoming call shown', error ? `failed: ${errorCode || ''} ${error}` : 'ok');
247
+ // 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) {
250
+ (0, _callUiStore.setCallSystemRinging)(false);
251
+ }
252
+ };
253
+ callKeep.addEventListener('didDisplayIncomingCall', onDisplayed);
254
+ callKeep.addEventListener('didDeactivateAudioSession', onAudioDeactivated);
155
255
  return () => {
156
256
  callKeep.removeEventListener('answerCall');
157
257
  callKeep.removeEventListener('endCall');
258
+ callKeep.removeEventListener('didPerformSetMutedCallAction');
259
+ callKeep.removeEventListener('didToggleHoldCallAction');
260
+ callKeep.removeEventListener('didActivateAudioSession');
261
+ callKeep.removeEventListener('didDeactivateAudioSession');
262
+ callKeep.removeEventListener('didResetProvider');
263
+ callKeep.removeEventListener('didDisplayIncomingCall');
158
264
  };
159
265
  }, [callKeep, dispatch]);
266
+ const displayName = call.roomName || 'Ethora';
267
+ const isRinging = call.direction === 'incoming' && call.phase === 'ringing-incoming';
268
+ const isLive = call.phase === 'connecting' || call.phase === 'in-call';
269
+ const isOutgoing = call.direction === 'outgoing';
270
+ const peerConnected = session.anchorAt !== null;
160
271
 
161
- // Show / dismiss the native screen as the call state changes.
272
+ // Report the call to the system as its state changes.
162
273
  (0, _react.useEffect)(() => {
163
- if (!callKeep || !readyRef.current) {
274
+ if (!callKeep || !ready) {
164
275
  return;
165
276
  }
166
- const isRinging = call.direction === 'incoming' && call.phase === 'ringing-incoming';
167
- if (isRinging && !activeUuidRef.current) {
277
+ const release = () => {
278
+ if (!activeUuidRef.current) {
279
+ return;
280
+ }
281
+ try {
282
+ callKeep.endCall(activeUuidRef.current);
283
+ } catch {
284
+ // Screen already gone.
285
+ }
286
+ activeUuidRef.current = null;
287
+ answeredRef.current = false;
288
+ outgoingReportedRef.current = 'none';
289
+ };
290
+ if (call.phase === 'idle' || call.phase === 'error') {
291
+ release();
292
+ return;
293
+ }
294
+ if (isRinging) {
295
+ if (activeUuidRef.current) {
296
+ return;
297
+ }
168
298
  const uuid = toUuid(call.callId || call.roomJid || String(Date.now()));
169
299
  activeUuidRef.current = uuid;
300
+ answeredRef.current = false;
301
+ // iOS: the system banner is the ring UI (Telegram-style); the in-app
302
+ // card would only cover the screen under it.
303
+ if (isIOS) {
304
+ (0, _callUiStore.setCallSystemRinging)(true);
305
+ }
170
306
  try {
171
- callKeep.displayIncomingCall(uuid, call.peerXmppUsername || call.roomName || 'Ethora', call.roomName || undefined, 'generic', call.kind === 'video');
307
+ callKeep.displayIncomingCall(uuid, displayName, displayName, 'generic', call.kind === 'video');
172
308
  } catch {
173
309
  activeUuidRef.current = null;
310
+ (0, _callUiStore.setCallSystemRinging)(false);
174
311
  }
175
312
  return;
176
313
  }
177
314
 
178
- // Any exit from ringing (answered in-app, declined, peer cancelled)
179
- // must tear the system screen down or it hangs around ringing.
180
- if (!isRinging && activeUuidRef.current && call.phase !== 'connecting' && call.phase !== 'in-call') {
315
+ // iOS: an outgoing call is a CallKit call from the first ring, so it
316
+ // shows in the Dynamic Island even before the peer answers.
317
+ if (isIOS && isOutgoing && !activeUuidRef.current && callKeep.startCall) {
318
+ // Unique per call: CallKit refuses a UUID it has seen before, and
319
+ // the callId only arrives with the token.
320
+ const uuid = toUuid(`${call.roomJid || ''}|${call.startedAt || Date.now()}`);
321
+ activeUuidRef.current = uuid;
322
+ outgoingReportedRef.current = 'none';
323
+ trace('startCall', uuid);
181
324
  try {
182
- callKeep.endCall(activeUuidRef.current);
325
+ callKeep.startCall(uuid, displayName, displayName, 'generic', call.kind === 'video');
183
326
  } catch {
184
- // Screen already gone.
327
+ activeUuidRef.current = null;
185
328
  }
186
- activeUuidRef.current = null;
329
+ return;
330
+ }
331
+ const uuid = activeUuidRef.current;
332
+ if (!uuid) {
333
+ return;
334
+ }
335
+ if (isIOS && isOutgoing) {
336
+ if (peerConnected && outgoingReportedRef.current !== 'connected') {
337
+ outgoingReportedRef.current = 'connected';
338
+ callKeep.reportConnectedOutgoingCallWithUUID?.(uuid);
339
+ } else if (isLive && !peerConnected && outgoingReportedRef.current === 'none') {
340
+ outgoingReportedRef.current = 'connecting';
341
+ callKeep.reportConnectingOutgoingCallWithUUID?.(uuid);
342
+ }
343
+ return;
187
344
  }
188
- if (call.phase === 'idle' && activeUuidRef.current) {
345
+
346
+ // Incoming, accepted with the in-app button: tell CallKit, or its
347
+ // screen keeps ringing on top of the call.
348
+ if (isIOS && isLive && !answeredRef.current) {
349
+ answeredRef.current = true;
189
350
  try {
190
- callKeep.endCall(activeUuidRef.current);
351
+ callKeep.answerIncomingCall?.(uuid);
191
352
  } catch {
192
353
  // noop
193
354
  }
194
- activeUuidRef.current = null;
195
355
  }
196
- }, [callKeep, call.direction, call.phase, call.callId, call.roomJid, call.roomName, call.peerXmppUsername, call.kind]);
356
+ }, [callKeep, ready, isIOS, isRinging, isLive, isOutgoing, peerConnected, displayName, call.phase, call.callId, call.roomJid, call.startedAt, call.kind]);
197
357
 
198
- // Nothing to clean up on unmount beyond the active screen: this hook
358
+ // Keep the system mute button in step with ours.
359
+ (0, _react.useEffect)(() => {
360
+ const uuid = activeUuidRef.current;
361
+ if (!callKeep || !ready || !isIOS || !uuid || !isLive) {
362
+ return;
363
+ }
364
+ try {
365
+ callKeep.setMutedCall?.(uuid, !session.micOn);
366
+ } catch {
367
+ // noop
368
+ }
369
+ }, [callKeep, ready, isIOS, isLive, session.micOn]);
370
+
371
+ // Nothing to clean up on unmount beyond the active call: this hook
199
372
  // lives for the lifetime of the provider.
200
373
  (0, _react.useEffect)(() => () => {
201
374
  if (callKeep && activeUuidRef.current) {
@@ -206,10 +379,6 @@ const useCallKeep = () => {
206
379
  }
207
380
  }
208
381
  }, [callKeep]);
209
-
210
- // iOS-only note kept as a runtime no-op so the import isn't unused when
211
- // the platform check is tree-shaken in release builds.
212
- void _reactNative.Platform.OS;
213
382
  };
214
383
  exports.useCallKeep = useCallKeep;
215
384
  //# sourceMappingURL=useCallKeep.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactRedux","_roomStore","_callSlice","_callTokenStanza","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","useCallKeep","dispatch","useDispatch","call","useSelector","state","callKeep","useMemo","activeUuidRef","useRef","readyRef","useEffect","cancelled","setup","ios","appName","supportsVideo","android","alertTitle","alertDescription","cancelButton","okButton","additionalPermissions","foregroundService","channelId","channelName","notificationTitle","setAvailable","current","onAnswer","backToForeground","store","getState","direction","acceptIncomingCall","onEnd","snapshot","phase","sendCallStateSignal","declineIncomingCall","addEventListener","removeEventListener","isRinging","uuid","callId","roomJid","String","Date","now","displayIncomingCall","peerXmppUsername","roomName","kind","endCall","Platform","OS"],"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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA,IAAIM,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,GAAGT,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,CAACS,aAAa,EAAEC,UAAU,EAAE;MAC9BJ,cAAc,GAAG,IAAI;MACrB,OAAOA,cAAc;IACvB;IACA;IACA,MAAMK,GAAG,GAAGX,OAAO,CAAC,uBAAuB,CAAC;IAC5CM,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;AAEM,MAAMG,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,QAAQ,GAAG,IAAAC,cAAO,EAAC,MAAMlC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;EAClD,MAAMmC,aAAa,GAAG,IAAAC,aAAM,EAAgB,IAAI,CAAC;EACjD,MAAMC,QAAQ,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;;EAE9B;EACA,IAAAE,gBAAS,EAAC,MAAM;IACd,IAAI,CAACL,QAAQ,EAAE;MAAC;IAAO;IACvB,IAAIM,SAAS,GAAG,KAAK;IAErB,CAAC,YAAY;MACX,IAAI;QACF,MAAMN,QAAQ,CAACO,KAAK,CAAC;UACnBC,GAAG,EAAE;YACHC,OAAO,EAAE,QAAQ;YACjBC,aAAa,EAAE;UACjB,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,IAAId,SAAS,EAAE;UAAC;QAAO;QACvBN,QAAQ,CAACqB,YAAY,GAAG,IAAI,CAAC;QAC7BjB,QAAQ,CAACkB,OAAO,GAAG,IAAI;MACzB,CAAC,CAAC,MAAM;QACN;QACA;QACAlB,QAAQ,CAACkB,OAAO,GAAG,KAAK;MAC1B;IACF,CAAC,EAAE,CAAC;IAEJ,OAAO,MAAM;MACXhB,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACN,QAAQ,CAAC,CAAC;;EAEd;EACA,IAAAK,gBAAS,EAAC,MAAM;IACd,IAAI,CAACL,QAAQ,EAAE;MAAC;IAAO;IAEvB,MAAMuB,QAAQ,GAAGA,CAAA,KAAM;MACrB;MACA;MACAvB,QAAQ,CAACwB,gBAAgB,GAAG,CAAC;MAC7B,IAAIC,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAAC7B,IAAI,CAAC8B,SAAS,KAAK,UAAU,EAAE;QAClDhC,QAAQ,CAAC,IAAAiC,6BAAkB,EAAC,CAAC,CAAC;MAChC;IACF,CAAC;IAED,MAAMC,KAAK,GAAGA,CAAA,KAAM;MAClB,MAAMC,QAAQ,GAAGL,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAAC7B,IAAI;MACtC,IAAIiC,QAAQ,CAACC,KAAK,KAAK,MAAM,EAAE;QAAC;MAAO;MACvC,IACED,QAAQ,CAACH,SAAS,KAAK,UAAU,IACjCG,QAAQ,CAACC,KAAK,KAAK,kBAAkB,EACrC;QACA,IAAAC,oCAAmB,EAAC,UAAU,CAAC;QAC/BrC,QAAQ,CAAC,IAAAsC,8BAAmB,EAAC,CAAC,CAAC;MACjC;IACF,CAAC;IAEDjC,QAAQ,CAACkC,gBAAgB,CAAC,YAAY,EAAEX,QAAQ,CAAC;IACjDvB,QAAQ,CAACkC,gBAAgB,CAAC,SAAS,EAAEL,KAAK,CAAC;IAE3C,OAAO,MAAM;MACX7B,QAAQ,CAACmC,mBAAmB,CAAC,YAAY,CAAC;MAC1CnC,QAAQ,CAACmC,mBAAmB,CAAC,SAAS,CAAC;IACzC,CAAC;EACH,CAAC,EAAE,CAACnC,QAAQ,EAAEL,QAAQ,CAAC,CAAC;;EAExB;EACA,IAAAU,gBAAS,EAAC,MAAM;IACd,IAAI,CAACL,QAAQ,IAAI,CAACI,QAAQ,CAACkB,OAAO,EAAE;MAAC;IAAO;IAE5C,MAAMc,SAAS,GACbvC,IAAI,CAAC8B,SAAS,KAAK,UAAU,IAAI9B,IAAI,CAACkC,KAAK,KAAK,kBAAkB;IAEpE,IAAIK,SAAS,IAAI,CAAClC,aAAa,CAACoB,OAAO,EAAE;MACvC,MAAMe,IAAI,GAAG/D,MAAM,CAACuB,IAAI,CAACyC,MAAM,IAAIzC,IAAI,CAAC0C,OAAO,IAAIC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC,CAAC;MACtExC,aAAa,CAACoB,OAAO,GAAGe,IAAI;MAC5B,IAAI;QACFrC,QAAQ,CAAC2C,mBAAmB,CAC1BN,IAAI,EACJxC,IAAI,CAAC+C,gBAAgB,IAAI/C,IAAI,CAACgD,QAAQ,IAAI,QAAQ,EAClDhD,IAAI,CAACgD,QAAQ,IAAI7E,SAAS,EAC1B,SAAS,EACT6B,IAAI,CAACiD,IAAI,KAAK,OAChB,CAAC;MACH,CAAC,CAAC,MAAM;QACN5C,aAAa,CAACoB,OAAO,GAAG,IAAI;MAC9B;MACA;IACF;;IAEA;IACA;IACA,IAAI,CAACc,SAAS,IAAIlC,aAAa,CAACoB,OAAO,IAAIzB,IAAI,CAACkC,KAAK,KAAK,YAAY,IAAIlC,IAAI,CAACkC,KAAK,KAAK,SAAS,EAAE;MAClG,IAAI;QACF/B,QAAQ,CAAC+C,OAAO,CAAC7C,aAAa,CAACoB,OAAO,CAAC;MACzC,CAAC,CAAC,MAAM;QACN;MAAA;MAEFpB,aAAa,CAACoB,OAAO,GAAG,IAAI;IAC9B;IAEA,IAAIzB,IAAI,CAACkC,KAAK,KAAK,MAAM,IAAI7B,aAAa,CAACoB,OAAO,EAAE;MAClD,IAAI;QACFtB,QAAQ,CAAC+C,OAAO,CAAC7C,aAAa,CAACoB,OAAO,CAAC;MACzC,CAAC,CAAC,MAAM;QACN;MAAA;MAEFpB,aAAa,CAACoB,OAAO,GAAG,IAAI;IAC9B;EACF,CAAC,EAAE,CACDtB,QAAQ,EACRH,IAAI,CAAC8B,SAAS,EACd9B,IAAI,CAACkC,KAAK,EACVlC,IAAI,CAACyC,MAAM,EACXzC,IAAI,CAAC0C,OAAO,EACZ1C,IAAI,CAACgD,QAAQ,EACbhD,IAAI,CAAC+C,gBAAgB,EACrB/C,IAAI,CAACiD,IAAI,CACV,CAAC;;EAEF;EACA;EACA,IAAAzC,gBAAS,EACP,MAAM,MAAM;IACV,IAAIL,QAAQ,IAAIE,aAAa,CAACoB,OAAO,EAAE;MACrC,IAAI;QACFtB,QAAQ,CAAC+C,OAAO,CAAC7C,aAAa,CAACoB,OAAO,CAAC;MACzC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC,EACD,CAACtB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,KAAKgD,qBAAQ,CAACC,EAAE;AAClB,CAAC;AAAC5E,OAAA,CAAAqB,WAAA,GAAAA,WAAA","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOngoingCallNotification = void 0;
7
+ var _react = require("react");
8
+ var _reactRedux = require("react-redux");
9
+ var _useT = require("../../i18n/useT");
10
+ var _callActions = require("./callActions");
11
+ var _callSessionController = require("./callSessionController");
12
+ var _callUiStore = require("./callUiStore");
13
+ /**
14
+ * Drives the host's ongoing-call notification (`videoCalls.
15
+ * ongoingCallNotification`, an Android foreground-service notification in
16
+ * the Ethora app): shown while a call is connecting or connected, updated
17
+ * when the mic, camera or timer anchor change, and its buttons act on the
18
+ * call like the in-app ones.
19
+ */
20
+ const useOngoingCallNotification = adapter => {
21
+ const t = (0, _useT.useT)();
22
+ const call = (0, _reactRedux.useSelector)(state => state.call);
23
+ const session = (0, _callSessionController.useCallSession)();
24
+ const shownRef = (0, _react.useRef)(false);
25
+ const live = !!call.token && (call.phase === 'connecting' || call.phase === 'in-call');
26
+ (0, _react.useEffect)(() => {
27
+ if (!adapter) {
28
+ return;
29
+ }
30
+ return adapter.addActionListener(action => {
31
+ switch (action) {
32
+ case 'hangUp':
33
+ (0, _callActions.terminateActiveCall)('ended');
34
+ break;
35
+ case 'toggleMic':
36
+ void (0, _callSessionController.toggleCallMic)();
37
+ break;
38
+ case 'toggleCamera':
39
+ void (0, _callSessionController.toggleCallCamera)();
40
+ break;
41
+ case 'open':
42
+ // Back from the notification: show the call, not the strip.
43
+ (0, _callUiStore.setCallMinimized)(false);
44
+ break;
45
+ }
46
+ });
47
+ }, [adapter]);
48
+ const isVideo = call.kind === 'video';
49
+ const connectedAt = session.anchorAt;
50
+ const text = connectedAt !== null ? isVideo ? t('call.notification.ongoingVideo') : t('call.notification.ongoing') : !session.connected ? t('call.status.connecting') : t('call.status.waitingForPeer');
51
+ (0, _react.useEffect)(() => {
52
+ if (!adapter) {
53
+ return;
54
+ }
55
+ if (!live) {
56
+ if (shownRef.current) {
57
+ shownRef.current = false;
58
+ adapter.hide();
59
+ }
60
+ return;
61
+ }
62
+ shownRef.current = true;
63
+ adapter.show({
64
+ callId: call.callId || call.roomJid || 'call',
65
+ title: call.roomName || t('call.unknownCaller'),
66
+ text,
67
+ kind: call.kind,
68
+ connectedAt,
69
+ micOn: session.micOn,
70
+ cameraOn: isVideo && session.cameraOn,
71
+ labels: {
72
+ hangUp: t('call.action.hangUp'),
73
+ mute: t('call.notification.mute'),
74
+ unmute: t('call.notification.unmute'),
75
+ cameraOn: t('call.notification.cameraOn'),
76
+ cameraOff: t('call.notification.cameraOff')
77
+ }
78
+ });
79
+ }, [adapter, live, t, text, connectedAt, isVideo, call.callId, call.roomJid, call.roomName, call.kind, session.micOn, session.cameraOn]);
80
+ (0, _react.useEffect)(() => () => {
81
+ if (adapter && shownRef.current) {
82
+ shownRef.current = false;
83
+ adapter.hide();
84
+ }
85
+ }, [adapter]);
86
+ };
87
+ exports.useOngoingCallNotification = useOngoingCallNotification;
88
+ //# sourceMappingURL=useOngoingCallNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactRedux","_useT","_callActions","_callSessionController","_callUiStore","useOngoingCallNotification","adapter","t","useT","call","useSelector","state","session","useCallSession","shownRef","useRef","live","token","phase","useEffect","addActionListener","action","terminateActiveCall","toggleCallMic","toggleCallCamera","setCallMinimized","isVideo","kind","connectedAt","anchorAt","text","connected","current","hide","show","callId","roomJid","title","roomName","micOn","cameraOn","labels","hangUp","mute","unmute","cameraOff","exports"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/useOngoingCallNotification.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMM,0BAA0B,GACrCC,OAA4C,IACnC;EACT,MAAMC,CAAC,GAAG,IAAAC,UAAI,EAAC,CAAC;EAChB,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,aAAM,EAAC,KAAK,CAAC;EAE9B,MAAMC,IAAI,GACR,CAAC,CAACP,IAAI,CAACQ,KAAK,KAAKR,IAAI,CAACS,KAAK,KAAK,YAAY,IAAIT,IAAI,CAACS,KAAK,KAAK,SAAS,CAAC;EAE3E,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACb,OAAO,EAAE;MAAC;IAAO;IACtB,OAAOA,OAAO,CAACc,iBAAiB,CAAEC,MAAqC,IAAK;MAC1E,QAAQA,MAAM;QACZ,KAAK,QAAQ;UACX,IAAAC,gCAAmB,EAAC,OAAO,CAAC;UAC5B;QACF,KAAK,WAAW;UACd,KAAK,IAAAC,oCAAa,EAAC,CAAC;UACpB;QACF,KAAK,cAAc;UACjB,KAAK,IAAAC,uCAAgB,EAAC,CAAC;UACvB;QACF,KAAK,MAAM;UACT;UACA,IAAAC,6BAAgB,EAAC,KAAK,CAAC;UACvB;MACJ;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACnB,OAAO,CAAC,CAAC;EAEb,MAAMoB,OAAO,GAAGjB,IAAI,CAACkB,IAAI,KAAK,OAAO;EACrC,MAAMC,WAAW,GAAGhB,OAAO,CAACiB,QAAQ;EACpC,MAAMC,IAAI,GACRF,WAAW,KAAK,IAAI,GAChBF,OAAO,GACLnB,CAAC,CAAC,gCAAgC,CAAC,GACnCA,CAAC,CAAC,2BAA2B,CAAC,GAChC,CAACK,OAAO,CAACmB,SAAS,GAChBxB,CAAC,CAAC,wBAAwB,CAAC,GAC3BA,CAAC,CAAC,4BAA4B,CAAC;EAEvC,IAAAY,gBAAS,EAAC,MAAM;IACd,IAAI,CAACb,OAAO,EAAE;MAAC;IAAO;IACtB,IAAI,CAACU,IAAI,EAAE;MACT,IAAIF,QAAQ,CAACkB,OAAO,EAAE;QACpBlB,QAAQ,CAACkB,OAAO,GAAG,KAAK;QACxB1B,OAAO,CAAC2B,IAAI,CAAC,CAAC;MAChB;MACA;IACF;IACAnB,QAAQ,CAACkB,OAAO,GAAG,IAAI;IACvB1B,OAAO,CAAC4B,IAAI,CAAC;MACXC,MAAM,EAAE1B,IAAI,CAAC0B,MAAM,IAAI1B,IAAI,CAAC2B,OAAO,IAAI,MAAM;MAC7CC,KAAK,EAAE5B,IAAI,CAAC6B,QAAQ,IAAI/B,CAAC,CAAC,oBAAoB,CAAC;MAC/CuB,IAAI;MACJH,IAAI,EAAElB,IAAI,CAACkB,IAAI;MACfC,WAAW;MACXW,KAAK,EAAE3B,OAAO,CAAC2B,KAAK;MACpBC,QAAQ,EAAEd,OAAO,IAAId,OAAO,CAAC4B,QAAQ;MACrCC,MAAM,EAAE;QACNC,MAAM,EAAEnC,CAAC,CAAC,oBAAoB,CAAC;QAC/BoC,IAAI,EAAEpC,CAAC,CAAC,wBAAwB,CAAC;QACjCqC,MAAM,EAAErC,CAAC,CAAC,0BAA0B,CAAC;QACrCiC,QAAQ,EAAEjC,CAAC,CAAC,4BAA4B,CAAC;QACzCsC,SAAS,EAAEtC,CAAC,CAAC,6BAA6B;MAC5C;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CACDD,OAAO,EACPU,IAAI,EACJT,CAAC,EACDuB,IAAI,EACJF,WAAW,EACXF,OAAO,EACPjB,IAAI,CAAC0B,MAAM,EACX1B,IAAI,CAAC2B,OAAO,EACZ3B,IAAI,CAAC6B,QAAQ,EACb7B,IAAI,CAACkB,IAAI,EACTf,OAAO,CAAC2B,KAAK,EACb3B,OAAO,CAAC4B,QAAQ,CACjB,CAAC;EAEF,IAAArB,gBAAS,EACP,MAAM,MAAM;IACV,IAAIb,OAAO,IAAIQ,QAAQ,CAACkB,OAAO,EAAE;MAC/BlB,QAAQ,CAACkB,OAAO,GAAG,KAAK;MACxB1B,OAAO,CAAC2B,IAAI,CAAC,CAAC;IAChB;EACF,CAAC,EACD,CAAC3B,OAAO,CACV,CAAC;AACH,CAAC;AAACwC,OAAA,CAAAzC,0BAAA,GAAAA,0BAAA","ignoreList":[]}