@ethora/chat-component-rn 26.10.2 → 26.10.3

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 (139) hide show
  1. package/lib/commonjs/components/MainComponents/ChatHeader.js +11 -10
  2. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  3. package/lib/commonjs/components/MainComponents/MessageContainer.js +10 -2
  4. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  5. package/lib/commonjs/components/MainComponents/RoomList.js +8 -18
  6. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  7. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +17 -14
  8. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  9. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +131 -17
  10. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  11. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +6 -1
  12. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  13. package/lib/commonjs/components/VideoCalls/CallButtons.js +3 -1
  14. package/lib/commonjs/components/VideoCalls/CallButtons.js.map +1 -1
  15. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +123 -111
  16. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  17. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +207 -346
  18. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  19. package/lib/commonjs/components/VideoCalls/callActions.js +61 -0
  20. package/lib/commonjs/components/VideoCalls/callActions.js.map +1 -0
  21. package/lib/commonjs/components/VideoCalls/callSessionController.js +431 -0
  22. package/lib/commonjs/components/VideoCalls/callSessionController.js.map +1 -0
  23. package/lib/commonjs/components/VideoCalls/useDraggable.js +59 -0
  24. package/lib/commonjs/components/VideoCalls/useDraggable.js.map +1 -0
  25. package/lib/commonjs/helpers/createRoomFromApi.js +4 -0
  26. package/lib/commonjs/helpers/createRoomFromApi.js.map +1 -1
  27. package/lib/commonjs/helpers/incomingCallFromPush.js +1 -1
  28. package/lib/commonjs/helpers/incomingCallFromPush.js.map +1 -1
  29. package/lib/commonjs/helpers/roomUserCount.js +7 -1
  30. package/lib/commonjs/helpers/roomUserCount.js.map +1 -1
  31. package/lib/commonjs/helpers/uniqueMembers.js +36 -0
  32. package/lib/commonjs/helpers/uniqueMembers.js.map +1 -0
  33. package/lib/commonjs/hooks/useLeaveRoom.js +52 -0
  34. package/lib/commonjs/hooks/useLeaveRoom.js.map +1 -0
  35. package/lib/commonjs/i18n/strings.js +18 -0
  36. package/lib/commonjs/i18n/strings.js.map +1 -1
  37. package/lib/commonjs/networking/api-requests/rooms.api.js +36 -1
  38. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  39. package/lib/commonjs/networking/callTokenStanza.js +47 -3
  40. package/lib/commonjs/networking/callTokenStanza.js.map +1 -1
  41. package/lib/commonjs/networking/xmppClient.js +9 -2
  42. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  43. package/lib/commonjs/version.js +1 -1
  44. package/lib/module/components/MainComponents/ChatHeader.js +13 -12
  45. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  46. package/lib/module/components/MainComponents/MessageContainer.js +10 -2
  47. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  48. package/lib/module/components/MainComponents/RoomList.js +8 -18
  49. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  50. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +18 -15
  51. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  52. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +132 -18
  53. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  54. package/lib/module/components/RoomComponents/ChatRoomItem.js +6 -1
  55. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  56. package/lib/module/components/VideoCalls/CallButtons.js +3 -1
  57. package/lib/module/components/VideoCalls/CallButtons.js.map +1 -1
  58. package/lib/module/components/VideoCalls/VideoCallOverlay.js +125 -113
  59. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  60. package/lib/module/components/VideoCalls/VideoCallSession.js +208 -348
  61. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  62. package/lib/module/components/VideoCalls/callActions.js +55 -0
  63. package/lib/module/components/VideoCalls/callActions.js.map +1 -0
  64. package/lib/module/components/VideoCalls/callSessionController.js +420 -0
  65. package/lib/module/components/VideoCalls/callSessionController.js.map +1 -0
  66. package/lib/module/components/VideoCalls/useDraggable.js +55 -0
  67. package/lib/module/components/VideoCalls/useDraggable.js.map +1 -0
  68. package/lib/module/helpers/createRoomFromApi.js +4 -0
  69. package/lib/module/helpers/createRoomFromApi.js.map +1 -1
  70. package/lib/module/helpers/incomingCallFromPush.js +1 -1
  71. package/lib/module/helpers/incomingCallFromPush.js.map +1 -1
  72. package/lib/module/helpers/roomUserCount.js +7 -1
  73. package/lib/module/helpers/roomUserCount.js.map +1 -1
  74. package/lib/module/helpers/uniqueMembers.js +31 -0
  75. package/lib/module/helpers/uniqueMembers.js.map +1 -0
  76. package/lib/module/hooks/useLeaveRoom.js +48 -0
  77. package/lib/module/hooks/useLeaveRoom.js.map +1 -0
  78. package/lib/module/i18n/strings.js +18 -0
  79. package/lib/module/i18n/strings.js.map +1 -1
  80. package/lib/module/networking/api-requests/rooms.api.js +35 -1
  81. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  82. package/lib/module/networking/callTokenStanza.js +47 -3
  83. package/lib/module/networking/callTokenStanza.js.map +1 -1
  84. package/lib/module/networking/xmppClient.js +8 -1
  85. package/lib/module/networking/xmppClient.js.map +1 -1
  86. package/lib/module/version.js +1 -1
  87. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  88. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  89. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  90. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  91. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  92. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  93. package/lib/typescript/components/VideoCalls/CallButtons.d.ts.map +1 -1
  94. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts +0 -6
  95. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -1
  96. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts +9 -20
  97. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  98. package/lib/typescript/components/VideoCalls/callActions.d.ts +15 -0
  99. package/lib/typescript/components/VideoCalls/callActions.d.ts.map +1 -0
  100. package/lib/typescript/components/VideoCalls/callSessionController.d.ts +61 -0
  101. package/lib/typescript/components/VideoCalls/callSessionController.d.ts.map +1 -0
  102. package/lib/typescript/components/VideoCalls/useDraggable.d.ts +19 -0
  103. package/lib/typescript/components/VideoCalls/useDraggable.d.ts.map +1 -0
  104. package/lib/typescript/helpers/createRoomFromApi.d.ts.map +1 -1
  105. package/lib/typescript/helpers/roomUserCount.d.ts +1 -0
  106. package/lib/typescript/helpers/roomUserCount.d.ts.map +1 -1
  107. package/lib/typescript/helpers/uniqueMembers.d.ts +11 -0
  108. package/lib/typescript/helpers/uniqueMembers.d.ts.map +1 -0
  109. package/lib/typescript/hooks/useLeaveRoom.d.ts +9 -0
  110. package/lib/typescript/hooks/useLeaveRoom.d.ts.map +1 -0
  111. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  112. package/lib/typescript/networking/api-requests/rooms.api.d.ts +8 -0
  113. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  114. package/lib/typescript/networking/callTokenStanza.d.ts.map +1 -1
  115. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  116. package/lib/typescript/version.d.ts +1 -1
  117. package/package.json +1 -1
  118. package/src/components/MainComponents/ChatHeader.tsx +10 -8
  119. package/src/components/MainComponents/MessageContainer.tsx +14 -1
  120. package/src/components/MainComponents/RoomList.tsx +8 -14
  121. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +16 -13
  122. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +167 -36
  123. package/src/components/RoomComponents/ChatRoomItem.tsx +8 -1
  124. package/src/components/VideoCalls/CallButtons.tsx +5 -1
  125. package/src/components/VideoCalls/VideoCallOverlay.tsx +156 -163
  126. package/src/components/VideoCalls/VideoCallSession.tsx +207 -378
  127. package/src/components/VideoCalls/callActions.ts +63 -0
  128. package/src/components/VideoCalls/callSessionController.ts +421 -0
  129. package/src/components/VideoCalls/useDraggable.ts +46 -0
  130. package/src/helpers/createRoomFromApi.tsx +2 -0
  131. package/src/helpers/incomingCallFromPush.ts +2 -2
  132. package/src/helpers/roomUserCount.ts +6 -2
  133. package/src/helpers/uniqueMembers.ts +26 -0
  134. package/src/hooks/useLeaveRoom.ts +42 -0
  135. package/src/i18n/strings.ts +18 -0
  136. package/src/networking/api-requests/rooms.api.ts +28 -1
  137. package/src/networking/callTokenStanza.ts +46 -6
  138. package/src/networking/xmppClient.ts +10 -1
  139. package/src/version.ts +1 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDraggable = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ /**
10
+ * Drag a floating element around (web's useDraggable, for the self-view
11
+ * tile and the minimized call panel). The offset is kept between drags.
12
+ *
13
+ * The responder only claims the gesture once the finger actually moves a
14
+ * few points, so taps still reach the buttons inside the dragged element.
15
+ */
16
+ const useDraggable = () => {
17
+ const position = (0, _react.useRef)(new _reactNative.Animated.ValueXY({
18
+ x: 0,
19
+ y: 0
20
+ })).current;
21
+ const offset = (0, _react.useRef)({
22
+ x: 0,
23
+ y: 0
24
+ });
25
+ const panHandlers = (0, _react.useMemo)(() => _reactNative.PanResponder.create({
26
+ onMoveShouldSetPanResponder: (_event, gesture) => Math.abs(gesture.dx) > 4 || Math.abs(gesture.dy) > 4,
27
+ onPanResponderGrant: () => {
28
+ position.setOffset(offset.current);
29
+ position.setValue({
30
+ x: 0,
31
+ y: 0
32
+ });
33
+ },
34
+ onPanResponderMove: _reactNative.Animated.event([null, {
35
+ dx: position.x,
36
+ dy: position.y
37
+ }], {
38
+ useNativeDriver: false
39
+ }),
40
+ onPanResponderRelease: (_event, gesture) => {
41
+ offset.current = {
42
+ x: offset.current.x + gesture.dx,
43
+ y: offset.current.y + gesture.dy
44
+ };
45
+ position.flattenOffset();
46
+ },
47
+ onPanResponderTerminate: () => {
48
+ position.flattenOffset();
49
+ }
50
+ }).panHandlers, [position]);
51
+ return {
52
+ panHandlers,
53
+ style: {
54
+ transform: position.getTranslateTransform()
55
+ }
56
+ };
57
+ };
58
+ exports.useDraggable = useDraggable;
59
+ //# sourceMappingURL=useDraggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","useDraggable","position","useRef","Animated","ValueXY","x","y","current","offset","panHandlers","useMemo","PanResponder","create","onMoveShouldSetPanResponder","_event","gesture","Math","abs","dx","dy","onPanResponderGrant","setOffset","setValue","onPanResponderMove","event","useNativeDriver","onPanResponderRelease","flattenOffset","onPanResponderTerminate","style","transform","getTranslateTransform","exports"],"sourceRoot":"../../../../src","sources":["components/VideoCalls/useDraggable.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,YAAY,GAAGA,CAAA,KAAM;EAChC,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAC,IAAIC,qBAAQ,CAACC,OAAO,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAAC,CAAC,CAACC,OAAO;EACrE,MAAMC,MAAM,GAAG,IAAAN,aAAM,EAAC;IAAEG,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAAC;EAErC,MAAMG,WAAW,GAAG,IAAAC,cAAO,EACzB,MACEC,yBAAY,CAACC,MAAM,CAAC;IAClBC,2BAA2B,EAAEA,CAACC,MAAM,EAAEC,OAAO,KAC3CC,IAAI,CAACC,GAAG,CAACF,OAAO,CAACG,EAAE,CAAC,GAAG,CAAC,IAAIF,IAAI,CAACC,GAAG,CAACF,OAAO,CAACI,EAAE,CAAC,GAAG,CAAC;IACtDC,mBAAmB,EAAEA,CAAA,KAAM;MACzBnB,QAAQ,CAACoB,SAAS,CAACb,MAAM,CAACD,OAAO,CAAC;MAClCN,QAAQ,CAACqB,QAAQ,CAAC;QAAEjB,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAC,CAAC;IACnC,CAAC;IACDiB,kBAAkB,EAAEpB,qBAAQ,CAACqB,KAAK,CAChC,CAAC,IAAI,EAAE;MAAEN,EAAE,EAAEjB,QAAQ,CAACI,CAAC;MAAEc,EAAE,EAAElB,QAAQ,CAACK;IAAE,CAAC,CAAC,EAC1C;MAAEmB,eAAe,EAAE;IAAM,CAC3B,CAAC;IACDC,qBAAqB,EAAEA,CAACZ,MAAM,EAAEC,OAAO,KAAK;MAC1CP,MAAM,CAACD,OAAO,GAAG;QACfF,CAAC,EAAEG,MAAM,CAACD,OAAO,CAACF,CAAC,GAAGU,OAAO,CAACG,EAAE;QAChCZ,CAAC,EAAEE,MAAM,CAACD,OAAO,CAACD,CAAC,GAAGS,OAAO,CAACI;MAChC,CAAC;MACDlB,QAAQ,CAAC0B,aAAa,CAAC,CAAC;IAC1B,CAAC;IACDC,uBAAuB,EAAEA,CAAA,KAAM;MAC7B3B,QAAQ,CAAC0B,aAAa,CAAC,CAAC;IAC1B;EACF,CAAC,CAAC,CAAClB,WAAW,EAChB,CAACR,QAAQ,CACX,CAAC;EAED,OAAO;IACLQ,WAAW;IACXoB,KAAK,EAAE;MAAEC,SAAS,EAAE7B,QAAQ,CAAC8B,qBAAqB,CAAC;IAAE;EACvD,CAAC;AACH,CAAC;AAACC,OAAA,CAAAhC,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.readApiUsersCnt = exports.readApiUnreadCount = exports.mapApiLastMessage = exports.createRoomFromApi = void 0;
7
+ var _uniqueMembers = require("./uniqueMembers");
7
8
  /**
8
9
  * Maps the flattened `lastMessage` doc `GET /v1/chats/my` embeds per room
9
10
  * into the shape a live message already takes. Backends differ in whether
@@ -75,6 +76,9 @@ const createRoomFromApi = (room, service = 'conference.dev.xmpp.ethoradev.com',
75
76
  const lastMessage = mapApiLastMessage(room?.lastMessage, jid);
76
77
  const roomData = {
77
78
  ...room,
79
+ ...(Array.isArray(room?.members) ? {
80
+ members: (0, _uniqueMembers.uniqueMembers)(room.members)
81
+ } : {}),
78
82
  id: room?._id || '',
79
83
  jid,
80
84
  name: room?.title || '',
@@ -1 +1 @@
1
- {"version":3,"names":["mapApiLastMessage","apiLastMessage","roomJid","body","String","trim","undefined","senderName","senderFirstName","senderLastName","id","messageId","stanzaId","xmppId","date","createdAt","isDeleted","user","fromUserId","from","name","exports","readApiUnreadCount","item","raw","unreadCount","Number","isFinite","Math","max","floor","readApiUsersCnt","fallback","membersLen","Array","isArray","members","length","total","usersCnt","participants","seedTimestamp","seed","ms","Date","getTime","NaN","createRoomFromApi","room","service","usersArrayLength","jid","apiUnreadCount","lastMessage","roomData","_id","title","messages","isLoading","roomBg","icon","picture","unreadMessages","apiUnreadSeededAt","now","lastViewedTimestamp","lastMessageTimestamp","error","console","log"],"sourceRoot":"../../../src","sources":["helpers/createRoomFromApi.tsx"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,iBAAiB,GAAGA,CAC/BC,cAAsC,EACtCC,OAAe,KACa;EAC5B,MAAMC,IAAI,GAAGC,MAAM,CAACH,cAAc,EAAEE,IAAI,IAAI,EAAE,CAAC,CAACE,IAAI,CAAC,CAAC;EACtD,IAAI,CAACJ,cAAc,IAAI,CAACE,IAAI,EAAE;IAAC,OAAOG,SAAS;EAAC;EAChD,MAAMC,UAAU,GAAG,GAAGN,cAAc,CAACO,eAAe,IAAI,EAAE,IACxDP,cAAc,CAACQ,cAAc,IAAI,EAAE,EACnC,CAACJ,IAAI,CAAC,CAAC;EACT,OAAO;IACLK,EAAE,EAAET,cAAc,CAACU,SAAS,IAAIV,cAAc,CAACW,QAAQ,IAAI,EAAE;IAC7DC,MAAM,EAAEZ,cAAc,CAACW,QAAQ;IAC/BV,OAAO;IACPC,IAAI;IACJW,IAAI,EAAEb,cAAc,CAACc,SAAS;IAC9BC,SAAS,EAAE,KAAK;IAChBC,IAAI,EAAE;MACJP,EAAE,EAAET,cAAc,CAACiB,UAAU,IAAIjB,cAAc,CAACkB,IAAI,IAAI,EAAE;MAC1DC,IAAI,EAAEb;IACR;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AAHAc,OAAA,CAAArB,iBAAA,GAAAA,iBAAA;AAIO,MAAMsB,kBAAkB,GAAIC,IAElC,IAAyB;EACxB,MAAMC,GAAG,GAAGD,IAAI,EAAEE,WAAW;EAC7B,OAAO,OAAOD,GAAG,KAAK,QAAQ,IAAIE,MAAM,CAACC,QAAQ,CAACH,GAAG,CAAC,GAClDI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACN,GAAG,CAAC,CAAC,GAC5BlB,SAAS;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAe,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAMO,MAAMS,eAAe,GAAGA,CAC7BR,IAAwE,EACxES,QAAgB,GAAG,CAAC,KACT;EACX,MAAMC,UAAU,GAAGC,KAAK,CAACC,OAAO,CAACZ,IAAI,EAAEa,OAAO,CAAC,GAAGb,IAAI,CAACa,OAAO,CAACC,MAAM,GAAG,CAAC;EACzE,MAAMC,KAAK,GAAGZ,MAAM,CAACH,IAAI,EAAEgB,QAAQ,IAAIhB,IAAI,EAAEiB,YAAY,CAAC;EAC1D,IAAId,MAAM,CAACC,QAAQ,CAACW,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACvC,OAAOV,IAAI,CAACC,GAAG,CAACS,KAAK,EAAEL,UAAU,CAAC;EACpC;EACA,OAAOA,UAAU,IAAID,QAAQ;AAC/B,CAAC;AAACX,OAAA,CAAAU,eAAA,GAAAA,eAAA;AAEF,MAAMU,aAAa,GAAIC,IAA6B,IAAyB;EAC3E,IAAI,CAACA,IAAI,EAAE;IAAC,OAAOpC,SAAS;EAAC;EAC7B,MAAMI,EAAE,GAAGgB,MAAM,CAACgB,IAAI,CAAChC,EAAE,CAAC;EAC1B,IAAIgB,MAAM,CAACC,QAAQ,CAACjB,EAAE,CAAC,IAAIA,EAAE,GAAG,CAAC,EAAE;IAAC,OAAOA,EAAE;EAAC;EAC9C,MAAMiC,EAAE,GAAGD,IAAI,CAAC5B,IAAI,GAAG,IAAI8B,IAAI,CAACF,IAAI,CAAC5B,IAAI,CAAC,CAAC+B,OAAO,CAAC,CAAC,GAAGC,GAAG;EAC1D,OAAOpB,MAAM,CAACC,QAAQ,CAACgB,EAAE,CAAC,IAAIA,EAAE,GAAG,CAAC,GAAGA,EAAE,GAAG,IAAI,GAAGrC,SAAS;AAC9D,CAAC;AAEM,MAAMyC,iBAAiB,GAAGA,CAC/BC,IAAa,EACbC,OAAe,GAAG,mCAAmC,EACrDC,gBAAwB,GAAG,CAAC,KACX;EACjB,IAAI;IACF,MAAMC,GAAG,GAAG,GAAGH,IAAI,EAAE5B,IAAI,IAAI6B,OAAO,EAAE,IAAI,EAAE;IAC5C,MAAMG,cAAc,GAAG9B,kBAAkB,CAAC0B,IAAI,CAAC;IAC/C,MAAMK,WAAW,GAAGrD,iBAAiB,CAACgD,IAAI,EAAEK,WAAW,EAAEF,GAAG,CAAC;IAC7D,MAAMG,QAAe,GAAG;MACtB,GAAGN,IAAI;MACPtC,EAAE,EAAGsC,IAAI,EAAUO,GAAG,IAAI,EAAE;MAC5BJ,GAAG;MACH/B,IAAI,EAAE4B,IAAI,EAAEQ,KAAK,IAAI,EAAE;MACvBA,KAAK,EAAER,IAAI,EAAEQ,KAAK,IAAI,EAAE;MACxBjB,QAAQ,EAAER,eAAe,CAACiB,IAAI,EAAEE,gBAAgB,GAAG,CAAC,CAAC;MACrDO,QAAQ,EAAE,EAAE;MACZC,SAAS,EAAE,KAAK;MAChBC,MAAM,EAAE,IAAI;MACZC,IAAI,EAAEZ,IAAI,EAAEa,OAAO,KAAK,MAAM,GAAGb,IAAI,EAAEa,OAAO,GAAG,IAAI;MACrDC,cAAc,EAAEV,cAAc,IAAI,CAAC;MACnCA,cAAc;MACdW,iBAAiB,EAAEX,cAAc,KAAK9C,SAAS,GAAGA,SAAS,GAAGsC,IAAI,CAACoB,GAAG,CAAC,CAAC;MACxEC,mBAAmB,EAAE,CAAC;MACtBZ,WAAW;MACXa,oBAAoB,EAAEzB,aAAa,CAACY,WAAW;IACjD,CAAU;IACV,OAAOC,QAAQ;EACjB,CAAC,CAAC,OAAOa,KAAK,EAAE;IACdC,OAAO,CAACC,GAAG,CAACF,KAAK,CAAC;IAClB,OAAO,IAAI;EACb;AACF,CAAC;AAAC9C,OAAA,CAAA0B,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_uniqueMembers","require","mapApiLastMessage","apiLastMessage","roomJid","body","String","trim","undefined","senderName","senderFirstName","senderLastName","id","messageId","stanzaId","xmppId","date","createdAt","isDeleted","user","fromUserId","from","name","exports","readApiUnreadCount","item","raw","unreadCount","Number","isFinite","Math","max","floor","readApiUsersCnt","fallback","membersLen","Array","isArray","members","length","total","usersCnt","participants","seedTimestamp","seed","ms","Date","getTime","NaN","createRoomFromApi","room","service","usersArrayLength","jid","apiUnreadCount","lastMessage","roomData","uniqueMembers","_id","title","messages","isLoading","roomBg","icon","picture","unreadMessages","apiUnreadSeededAt","now","lastViewedTimestamp","lastMessageTimestamp","error","console","log"],"sourceRoot":"../../../src","sources":["helpers/createRoomFromApi.tsx"],"mappings":"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","ignoreList":[]}
@@ -61,7 +61,7 @@ const handleCallPush = data => {
61
61
  }
62
62
  _roomStore.store.dispatch((0, _callSlice.setIncomingCallToken)({
63
63
  roomJid,
64
- roomName: parsed.callerName || resolved?.name || null,
64
+ roomName: parsed.callerName || resolved?.title || resolved?.name || null,
65
65
  roomBareName: parsed.roomBareName,
66
66
  token: parsed.token,
67
67
  kind: parsed.kind,
@@ -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","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,CAAgD;EAEhD,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,IAAI,IAAI,IAAI;IACrDjB,YAAY,EAAEd,MAAM,CAACc,YAAY;IACjCC,KAAK,EAAEf,MAAM,CAACe,KAAK;IACnBiB,IAAI,EAAEhC,MAAM,CAACgC,IAAI;IACjBnB,MAAM,EAAEb,MAAM,CAACa,MAAM;IACrBoB,gBAAgB,EAAEjC,MAAM,CAACkC;EAC3B,CAAC,CACH,CAAC;EAED,OAAO,IAAI;AACb,CAAC;AAACC,OAAA,CAAAtC,cAAA,GAAAA,cAAA","ignoreList":[]}
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":[]}
@@ -12,12 +12,18 @@ exports.isRoomMembersTruncated = exports.getRoomUserCount = exports.adjustUsersC
12
12
  const getRoomUserCount = room => {
13
13
  const members = Array.isArray(room?.members) ? room.members.length : 0;
14
14
  const cnt = typeof room?.usersCnt === 'number' && Number.isFinite(room.usersCnt) ? room.usersCnt : 0;
15
- return Math.max(cnt, members);
15
+ const total = Math.max(cnt, members);
16
+ // A private chat is two people by definition; the server's usersCnt has
17
+ // been seen to drift above that (3 for a 1:1 room).
18
+ return room?.type === 'private' ? Math.min(total, 2) : total;
16
19
  };
17
20
 
18
21
  /** True when the room is known to have more users than members loaded. */
19
22
  exports.getRoomUserCount = getRoomUserCount;
20
23
  const isRoomMembersTruncated = room => {
24
+ if (room?.type === 'private') {
25
+ return false;
26
+ }
21
27
  const members = Array.isArray(room?.members) ? room.members.length : 0;
22
28
  const cnt = typeof room?.usersCnt === 'number' && Number.isFinite(room.usersCnt) ? room.usersCnt : 0;
23
29
  return cnt > members;
@@ -1 +1 @@
1
- {"version":3,"names":["getRoomUserCount","room","members","Array","isArray","length","cnt","usersCnt","Number","isFinite","Math","max","exports","isRoomMembersTruncated","adjustUsersCnt","delta","nextMembersLength","current"],"sourceRoot":"../../../src","sources":["helpers/roomUserCount.ts"],"mappings":";;;;;;AAQA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAIC,IAAiB,IAAa;EAC7D,MAAMC,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,EAAEC,OAAO,CAAC,GAAGD,IAAI,CAACC,OAAO,CAACG,MAAM,GAAG,CAAC;EACtE,MAAMC,GAAG,GACP,OAAOL,IAAI,EAAEM,QAAQ,KAAK,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACR,IAAI,CAACM,QAAQ,CAAC,GAChEN,IAAI,CAACM,QAAQ,GACb,CAAC;EACP,OAAOG,IAAI,CAACC,GAAG,CAACL,GAAG,EAAEJ,OAAO,CAAC;AAC/B,CAAC;;AAED;AAAAU,OAAA,CAAAZ,gBAAA,GAAAA,gBAAA;AACO,MAAMa,sBAAsB,GAAIZ,IAAiB,IAAc;EACpE,MAAMC,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,EAAEC,OAAO,CAAC,GAAGD,IAAI,CAACC,OAAO,CAACG,MAAM,GAAG,CAAC;EACtE,MAAMC,GAAG,GACP,OAAOL,IAAI,EAAEM,QAAQ,KAAK,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACR,IAAI,CAACM,QAAQ,CAAC,GAChEN,IAAI,CAACM,QAAQ,GACb,CAAC;EACP,OAAOD,GAAG,GAAGJ,OAAO;AACtB,CAAC;;AAED;AACA;AACA;AACA;AAHAU,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAIO,MAAMC,cAAc,GAAGA,CAC5Bb,IAAiB,EACjBc,KAAa,EACbC,iBAAyB,KACd;EACX,MAAMC,OAAO,GAAGjB,gBAAgB,CAACC,IAAI,CAAC;EACtC,OAAOS,IAAI,CAACC,GAAG,CAACK,iBAAiB,EAAEC,OAAO,GAAGF,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAACH,OAAA,CAAAE,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["getRoomUserCount","room","members","Array","isArray","length","cnt","usersCnt","Number","isFinite","total","Math","max","type","min","exports","isRoomMembersTruncated","adjustUsersCnt","delta","nextMembersLength","current"],"sourceRoot":"../../../src","sources":["helpers/roomUserCount.ts"],"mappings":";;;;;;AAQA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAIC,IAAiB,IAAa;EAC7D,MAAMC,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,EAAEC,OAAO,CAAC,GAAGD,IAAI,CAACC,OAAO,CAACG,MAAM,GAAG,CAAC;EACtE,MAAMC,GAAG,GACP,OAAOL,IAAI,EAAEM,QAAQ,KAAK,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACR,IAAI,CAACM,QAAQ,CAAC,GAChEN,IAAI,CAACM,QAAQ,GACb,CAAC;EACP,MAAMG,KAAK,GAAGC,IAAI,CAACC,GAAG,CAACN,GAAG,EAAEJ,OAAO,CAAC;EACpC;EACA;EACA,OAAQD,IAAI,EAAyBY,IAAI,KAAK,SAAS,GAAGF,IAAI,CAACG,GAAG,CAACJ,KAAK,EAAE,CAAC,CAAC,GAAGA,KAAK;AACtF,CAAC;;AAED;AAAAK,OAAA,CAAAf,gBAAA,GAAAA,gBAAA;AACO,MAAMgB,sBAAsB,GAAIf,IAAiB,IAAc;EACpE,IAAKA,IAAI,EAAyBY,IAAI,KAAK,SAAS,EAAE;IAAC,OAAO,KAAK;EAAC;EACpE,MAAMX,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,EAAEC,OAAO,CAAC,GAAGD,IAAI,CAACC,OAAO,CAACG,MAAM,GAAG,CAAC;EACtE,MAAMC,GAAG,GACP,OAAOL,IAAI,EAAEM,QAAQ,KAAK,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACR,IAAI,CAACM,QAAQ,CAAC,GAChEN,IAAI,CAACM,QAAQ,GACb,CAAC;EACP,OAAOD,GAAG,GAAGJ,OAAO;AACtB,CAAC;;AAED;AACA;AACA;AACA;AAHAa,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAIO,MAAMC,cAAc,GAAGA,CAC5BhB,IAAiB,EACjBiB,KAAa,EACbC,iBAAyB,KACd;EACX,MAAMC,OAAO,GAAGpB,gBAAgB,CAACC,IAAI,CAAC;EACtC,OAAOU,IAAI,CAACC,GAAG,CAACO,iBAAiB,EAAEC,OAAO,GAAGF,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAACH,OAAA,CAAAE,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.uniqueMembers = void 0;
7
+ /**
8
+ * Drop repeated entries from a room's member list, keeping the first.
9
+ *
10
+ * The same person could appear twice in a 1:1 chat ("Members: 3", four
11
+ * rows): the list came back from the server with repeats after the private
12
+ * chat was requested again for an existing room. Members are keyed by
13
+ * whatever identity the entry carries: xmppUsername, then _id, then the
14
+ * JID's localpart.
15
+ */
16
+ const uniqueMembers = members => {
17
+ if (!Array.isArray(members)) {
18
+ return [];
19
+ }
20
+ const seen = new Set();
21
+ const out = [];
22
+ for (const member of members) {
23
+ const m = member;
24
+ const key = String(m?.xmppUsername || m?._id || String(m?.jid || '').split('@')[0] || '').trim();
25
+ if (key) {
26
+ if (seen.has(key)) {
27
+ continue;
28
+ }
29
+ seen.add(key);
30
+ }
31
+ out.push(member);
32
+ }
33
+ return out;
34
+ };
35
+ exports.uniqueMembers = uniqueMembers;
36
+ //# sourceMappingURL=uniqueMembers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["uniqueMembers","members","Array","isArray","seen","Set","out","member","m","key","String","xmppUsername","_id","jid","split","trim","has","add","push","exports"],"sourceRoot":"../../../src","sources":["helpers/uniqueMembers.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,aAAa,GAAQC,OAA+B,IAAU;EACzE,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,OAAO,CAAC,EAAE;IAAC,OAAO,EAAE;EAAC;EACxC,MAAMG,IAAI,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC9B,MAAMC,GAAQ,GAAG,EAAE;EACnB,KAAK,MAAMC,MAAM,IAAIN,OAAO,EAAE;IAC5B,MAAMO,CAAC,GAAGD,MAAa;IACvB,MAAME,GAAG,GAAGC,MAAM,CAChBF,CAAC,EAAEG,YAAY,IAAIH,CAAC,EAAEI,GAAG,IAAIF,MAAM,CAACF,CAAC,EAAEK,GAAG,IAAI,EAAE,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EACrE,CAAC,CAACC,IAAI,CAAC,CAAC;IACR,IAAIN,GAAG,EAAE;MACP,IAAIL,IAAI,CAACY,GAAG,CAACP,GAAG,CAAC,EAAE;QAAC;MAAS;MAC7BL,IAAI,CAACa,GAAG,CAACR,GAAG,CAAC;IACf;IACAH,GAAG,CAACY,IAAI,CAACX,MAAM,CAAC;EAClB;EACA,OAAOD,GAAG;AACZ,CAAC;AAACa,OAAA,CAAAnB,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLeaveRoom = void 0;
7
+ var _react = require("react");
8
+ var _reactRedux = require("react-redux");
9
+ var _roomsSlice = require("../roomStore/roomsSlice");
10
+ var _rooms = require("../networking/api-requests/rooms.api");
11
+ var _xmppProvider = require("../context/xmppProvider");
12
+ /** Rooms with a leave request in flight: a second tap waits for the first. */
13
+ const inFlight = new Set();
14
+
15
+ /**
16
+ * Leave a chat, shared by the room-list swipe, the chat header and the chat
17
+ * profile. The server goes first: if it refuses, the chat stays where it is
18
+ * (dropping it locally would only have it come back on the next /chats/my).
19
+ * Then the unavailable presence to the MUC and the room out of the store.
20
+ * Resolves false on failure, so the caller can say so in its own way.
21
+ */
22
+ const useLeaveRoom = () => {
23
+ const dispatch = (0, _reactRedux.useDispatch)();
24
+ const {
25
+ client
26
+ } = (0, _xmppProvider.useXmppClient)();
27
+ return (0, _react.useCallback)(async jid => {
28
+ if (!jid || inFlight.has(jid)) {
29
+ return true;
30
+ }
31
+ inFlight.add(jid);
32
+ try {
33
+ await (0, _rooms.leaveRoom)(jid.split('@')[0]);
34
+ } catch (error) {
35
+ console.warn('[ethora-rn] leave failed', error);
36
+ return false;
37
+ } finally {
38
+ inFlight.delete(jid);
39
+ }
40
+ try {
41
+ client?.leaveTheRoomStanza?.(jid);
42
+ } catch (error) {
43
+ console.error('Failed to leave the room:', error);
44
+ }
45
+ dispatch((0, _roomsSlice.deleteRoom)({
46
+ jid
47
+ }));
48
+ return true;
49
+ }, [client, dispatch]);
50
+ };
51
+ exports.useLeaveRoom = useLeaveRoom;
52
+ //# sourceMappingURL=useLeaveRoom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactRedux","_roomsSlice","_rooms","_xmppProvider","inFlight","Set","useLeaveRoom","dispatch","useDispatch","client","useXmppClient","useCallback","jid","has","add","leaveRoom","split","error","console","warn","delete","leaveTheRoomStanza","deleteRoom","exports"],"sourceRoot":"../../../src","sources":["hooks/useLeaveRoom.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAEA;AACA,MAAMK,QAAQ,GAAG,IAAIC,GAAG,CAAS,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAChC,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAM;IAAEC;EAAO,CAAC,GAAG,IAAAC,2BAAa,EAAC,CAAC;EAClC,OAAO,IAAAC,kBAAW,EAChB,MAAOC,GAAW,IAAuB;IACvC,IAAI,CAACA,GAAG,IAAIR,QAAQ,CAACS,GAAG,CAACD,GAAG,CAAC,EAAE;MAAC,OAAO,IAAI;IAAC;IAC5CR,QAAQ,CAACU,GAAG,CAACF,GAAG,CAAC;IACjB,IAAI;MACF,MAAM,IAAAG,gBAAS,EAACH,GAAG,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAAC,0BAA0B,EAAEF,KAAK,CAAC;MAC/C,OAAO,KAAK;IACd,CAAC,SAAS;MACRb,QAAQ,CAACgB,MAAM,CAACR,GAAG,CAAC;IACtB;IACA,IAAI;MACFH,MAAM,EAAEY,kBAAkB,GAAGT,GAAG,CAAC;IACnC,CAAC,CAAC,OAAOK,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;IACnD;IACAV,QAAQ,CAAC,IAAAe,sBAAU,EAAC;MAAEV;IAAI,CAAC,CAAC,CAAC;IAC7B,OAAO,IAAI;EACb,CAAC,EACD,CAACH,MAAM,EAAEF,QAAQ,CACnB,CAAC;AACH,CAAC;AAACgB,OAAA,CAAAjB,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -132,6 +132,8 @@ const en = {
132
132
  'call.error.deviceInUse': 'Your camera or microphone is already in use by another app.',
133
133
  'call.error.deviceGeneric': 'Could not access your camera or microphone.',
134
134
  'call.error.noAnswerTimeout': 'No answer, the call timed out',
135
+ 'call.peerMuted': '{name} is muted',
136
+ 'call.selfMuted': 'Your microphone is muted',
135
137
  'action.send': 'Send',
136
138
  'action.cancel': 'Cancel',
137
139
  'action.save': 'Save',
@@ -142,6 +144,7 @@ const en = {
142
144
  'action.mute': 'Mute',
143
145
  'action.unmute': 'Unmute',
144
146
  'toast.muteFailed': 'Could not update notifications for this chat',
147
+ 'toast.leaveFailed': 'Could not leave this chat',
145
148
  'action.create': 'Create',
146
149
  'action.submit': 'Submit',
147
150
  'action.translate': 'Translate',
@@ -508,6 +511,8 @@ const fr = {
508
511
  'call.error.deviceInUse': 'Votre caméra ou microphone est déjà utilisé par une autre application.',
509
512
  'call.error.deviceGeneric': 'Impossible d\'accéder à votre caméra ou microphone.',
510
513
  'call.error.noAnswerTimeout': 'Pas de réponse, l\'appel a expiré',
514
+ 'call.peerMuted': '{name} a coupé son micro',
515
+ 'call.selfMuted': 'Votre micro est coupé',
511
516
  'action.send': 'Envoyer',
512
517
  'action.cancel': 'Annuler',
513
518
  'action.save': 'Enregistrer',
@@ -518,6 +523,7 @@ const fr = {
518
523
  'action.mute': 'Muet',
519
524
  'action.unmute': 'Réactiver',
520
525
  'toast.muteFailed': 'Impossible de modifier les notifications de ce chat',
526
+ 'toast.leaveFailed': 'Impossible de quitter ce chat',
521
527
  'action.create': 'Créer',
522
528
  'action.submit': 'Soumettre',
523
529
  'action.translate': 'Traduire',
@@ -884,6 +890,8 @@ const es = {
884
890
  'call.error.deviceInUse': 'Tu cámara o micrófono ya está siendo usado por otra aplicación.',
885
891
  'call.error.deviceGeneric': 'No se pudo acceder a tu cámara o micrófono.',
886
892
  'call.error.noAnswerTimeout': 'Sin respuesta, la llamada expiró',
893
+ 'call.peerMuted': '{name} tiene el micrófono silenciado',
894
+ 'call.selfMuted': 'Tu micrófono está silenciado',
887
895
  'action.send': 'Enviar',
888
896
  'action.cancel': 'Cancelar',
889
897
  'action.save': 'Guardar',
@@ -894,6 +902,7 @@ const es = {
894
902
  'action.mute': 'Silenciar',
895
903
  'action.unmute': 'Activar',
896
904
  'toast.muteFailed': 'No se pudieron cambiar las notificaciones de este chat',
905
+ 'toast.leaveFailed': 'No se pudo salir de este chat',
897
906
  'action.create': 'Crear',
898
907
  'action.submit': 'Enviar',
899
908
  'action.translate': 'Traducir',
@@ -1260,6 +1269,8 @@ const pt = {
1260
1269
  'call.error.deviceInUse': 'A sua câmara ou microfone já está a ser utilizado por outra aplicação.',
1261
1270
  'call.error.deviceGeneric': 'Não foi possível aceder à câmara ou microfone.',
1262
1271
  'call.error.noAnswerTimeout': 'Sem resposta, a chamada expirou',
1272
+ 'call.peerMuted': '{name} está com o microfone desativado',
1273
+ 'call.selfMuted': 'Seu microfone está desativado',
1263
1274
  'action.send': 'Enviar',
1264
1275
  'action.cancel': 'Cancelar',
1265
1276
  'action.save': 'Guardar',
@@ -1270,6 +1281,7 @@ const pt = {
1270
1281
  'action.mute': 'Silenciar',
1271
1282
  'action.unmute': 'Ativar som',
1272
1283
  'toast.muteFailed': 'Could not update notifications for this chat',
1284
+ 'toast.leaveFailed': 'Não foi possível sair deste chat',
1273
1285
  'action.create': 'Criar',
1274
1286
  'action.submit': 'Enviar',
1275
1287
  'action.translate': 'Traduzir',
@@ -1636,6 +1648,8 @@ const ht = {
1636
1648
  'call.error.deviceInUse': 'Kamera oswa mikwofòn ou deja ap itilize pa yon lòt app.',
1637
1649
  'call.error.deviceGeneric': 'Nou pa t kapab jwenn aksè nan kamera oswa mikwofòn ou.',
1638
1650
  'call.error.noAnswerTimeout': 'Pa gen repons, apèl la fini',
1651
+ 'call.peerMuted': '{name} koupe mikwo li',
1652
+ 'call.selfMuted': 'Mikwo ou koupe',
1639
1653
  'action.send': 'Voye',
1640
1654
  'action.cancel': 'Anile',
1641
1655
  'action.save': 'Anrejistre',
@@ -1646,6 +1660,7 @@ const ht = {
1646
1660
  'action.mute': 'Mete an silans',
1647
1661
  'action.unmute': 'Retire silans',
1648
1662
  'toast.muteFailed': 'Could not update notifications for this chat',
1663
+ 'toast.leaveFailed': 'Pa t kapab kite chat sa a',
1649
1664
  'action.create': 'Kreye',
1650
1665
  'action.submit': 'Soumèt',
1651
1666
  'action.translate': 'Tradui',
@@ -2012,6 +2027,8 @@ const zh = {
2012
2027
  'call.error.deviceInUse': '您的摄像头或麦克风正被其他应用占用。',
2013
2028
  'call.error.deviceGeneric': '无法访问您的摄像头或麦克风。',
2014
2029
  'call.error.noAnswerTimeout': '无人接听,通话已超时',
2030
+ 'call.peerMuted': '{name} 已静音',
2031
+ 'call.selfMuted': '你的麦克风已静音',
2015
2032
  'action.send': '发送',
2016
2033
  'action.cancel': '取消',
2017
2034
  'action.save': '保存',
@@ -2022,6 +2039,7 @@ const zh = {
2022
2039
  'action.mute': '静音',
2023
2040
  'action.unmute': '取消静音',
2024
2041
  'toast.muteFailed': 'Could not update notifications for this chat',
2042
+ 'toast.leaveFailed': '无法退出此聊天',
2025
2043
  'action.create': '创建',
2026
2044
  'action.submit': '提交',
2027
2045
  'action.translate': '翻译',