@ethora/chat-component-rn 26.10.9 → 26.10.11

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 (608) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +126 -1
  3. package/lib/commonjs/booking/index.js +44 -0
  4. package/lib/commonjs/booking/index.js.map +1 -0
  5. package/lib/commonjs/booking/pendingScheduledCall.js +275 -0
  6. package/lib/commonjs/booking/pendingScheduledCall.js.map +1 -0
  7. package/lib/commonjs/booking/scheduleForm.js +91 -0
  8. package/lib/commonjs/booking/scheduleForm.js.map +1 -0
  9. package/lib/commonjs/booking/scheduledCall.js +141 -0
  10. package/lib/commonjs/booking/scheduledCall.js.map +1 -0
  11. package/lib/commonjs/booking/scheduledCallActions.js +128 -0
  12. package/lib/commonjs/booking/scheduledCallActions.js.map +1 -0
  13. package/lib/commonjs/booking/scheduledCallLink.js +143 -0
  14. package/lib/commonjs/booking/scheduledCallLink.js.map +1 -0
  15. package/lib/commonjs/booking/scheduledCallStore.js +64 -0
  16. package/lib/commonjs/booking/scheduledCallStore.js.map +1 -0
  17. package/lib/commonjs/booking/startRoomCall.js +84 -0
  18. package/lib/commonjs/booking/startRoomCall.js.map +1 -0
  19. package/lib/commonjs/calls/callBusy.js +18 -0
  20. package/lib/commonjs/calls/callBusy.js.map +1 -0
  21. package/lib/commonjs/calls/callDisplay.js +73 -0
  22. package/lib/commonjs/calls/callDisplay.js.map +1 -0
  23. package/lib/commonjs/calls/callMode.js +175 -0
  24. package/lib/commonjs/calls/callMode.js.map +1 -0
  25. package/lib/commonjs/calls/declineReport.js +20 -0
  26. package/lib/commonjs/calls/declineReport.js.map +1 -0
  27. package/lib/commonjs/calls/p2p/P2PCallController.js +724 -0
  28. package/lib/commonjs/calls/p2p/P2PCallController.js.map +1 -0
  29. package/lib/commonjs/calls/p2p/icePolicy.js +107 -0
  30. package/lib/commonjs/calls/p2p/icePolicy.js.map +1 -0
  31. package/lib/commonjs/calls/p2p/negotiator.js +202 -0
  32. package/lib/commonjs/calls/p2p/negotiator.js.map +1 -0
  33. package/lib/commonjs/calls/p2p/p2pRuntime.js +147 -0
  34. package/lib/commonjs/calls/p2p/p2pRuntime.js.map +1 -0
  35. package/lib/commonjs/calls/p2p/signalInbox.js +98 -0
  36. package/lib/commonjs/calls/p2p/signalInbox.js.map +1 -0
  37. package/lib/commonjs/calls/p2p/signalStanza.js +141 -0
  38. package/lib/commonjs/calls/p2p/signalStanza.js.map +1 -0
  39. package/lib/commonjs/calls/p2p/webrtcRuntime.js +53 -0
  40. package/lib/commonjs/calls/p2p/webrtcRuntime.js.map +1 -0
  41. package/lib/commonjs/calls/senderTrust.js +43 -0
  42. package/lib/commonjs/calls/senderTrust.js.map +1 -0
  43. package/lib/commonjs/calls/startCall.js +51 -0
  44. package/lib/commonjs/calls/startCall.js.map +1 -0
  45. package/lib/commonjs/components/Booking/BookingIcons.js +55 -0
  46. package/lib/commonjs/components/Booking/BookingIcons.js.map +1 -0
  47. package/lib/commonjs/components/Booking/ScheduleCallButton.js +64 -0
  48. package/lib/commonjs/components/Booking/ScheduleCallButton.js.map +1 -0
  49. package/lib/commonjs/components/Booking/ScheduleCallSheet.js +351 -0
  50. package/lib/commonjs/components/Booking/ScheduleCallSheet.js.map +1 -0
  51. package/lib/commonjs/components/Booking/ScheduledCallCard.js +203 -0
  52. package/lib/commonjs/components/Booking/ScheduledCallCard.js.map +1 -0
  53. package/lib/commonjs/components/Booking/ScheduledCallHost.js +23 -0
  54. package/lib/commonjs/components/Booking/ScheduledCallHost.js.map +1 -0
  55. package/lib/commonjs/components/Booking/ScheduledCallMessage.js +55 -0
  56. package/lib/commonjs/components/Booking/ScheduledCallMessage.js.map +1 -0
  57. package/lib/commonjs/components/Booking/ScheduledCallPreJoin.js +235 -0
  58. package/lib/commonjs/components/Booking/ScheduledCallPreJoin.js.map +1 -0
  59. package/lib/commonjs/components/Booking/bookingShared.js +305 -0
  60. package/lib/commonjs/components/Booking/bookingShared.js.map +1 -0
  61. package/lib/commonjs/components/MainComponents/AlbumGrid.js +6 -2
  62. package/lib/commonjs/components/MainComponents/AlbumGrid.js.map +1 -1
  63. package/lib/commonjs/components/MainComponents/ChatHeader.js +18 -12
  64. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  65. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js +5 -2
  66. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js.map +1 -1
  67. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +6 -3
  68. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  69. package/lib/commonjs/components/MainComponents/MediaMessage.js +13 -0
  70. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  71. package/lib/commonjs/components/MainComponents/MessageContainer.js +13 -0
  72. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  73. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +10 -0
  74. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  75. package/lib/commonjs/components/MainComponents/RoomList.js +7 -16
  76. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  77. package/lib/commonjs/components/MessageBubble/Message.js +27 -1
  78. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  79. package/lib/commonjs/components/Modals/ChatProfileModal/ChatMediaGrid.js +159 -0
  80. package/lib/commonjs/components/Modals/ChatProfileModal/ChatMediaGrid.js.map +1 -0
  81. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +203 -134
  82. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  83. package/lib/commonjs/components/Modals/ChatProfileModal/LeaveChatModal.js +180 -0
  84. package/lib/commonjs/components/Modals/ChatProfileModal/LeaveChatModal.js.map +1 -0
  85. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +19 -15
  86. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
  87. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +100 -162
  88. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  89. package/lib/commonjs/components/Modals/FilePreviewModal/MediaViewer.js +824 -0
  90. package/lib/commonjs/components/Modals/FilePreviewModal/MediaViewer.js.map +1 -0
  91. package/lib/commonjs/components/Modals/FilePreviewModal/useSaveFile.js +179 -0
  92. package/lib/commonjs/components/Modals/FilePreviewModal/useSaveFile.js.map +1 -0
  93. package/lib/commonjs/components/Modals/MessageSearchModal/MessageSearchModal.js +22 -5
  94. package/lib/commonjs/components/Modals/MessageSearchModal/MessageSearchModal.js.map +1 -1
  95. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +15 -8
  96. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  97. package/lib/commonjs/components/Modals/UserSettingsModal/LanguageCard.js +1 -1
  98. package/lib/commonjs/components/Modals/UserSettingsModal/LanguageCard.js.map +1 -1
  99. package/lib/commonjs/components/VideoCalls/ActiveCallBar.js +3 -2
  100. package/lib/commonjs/components/VideoCalls/ActiveCallBar.js.map +1 -1
  101. package/lib/commonjs/components/VideoCalls/CallButtons.js +19 -11
  102. package/lib/commonjs/components/VideoCalls/CallButtons.js.map +1 -1
  103. package/lib/commonjs/components/VideoCalls/CallControlBar.js +119 -0
  104. package/lib/commonjs/components/VideoCalls/CallControlBar.js.map +1 -0
  105. package/lib/commonjs/components/VideoCalls/CallVideo.js +49 -0
  106. package/lib/commonjs/components/VideoCalls/CallVideo.js.map +1 -0
  107. package/lib/commonjs/components/VideoCalls/GroupCallView.js +281 -0
  108. package/lib/commonjs/components/VideoCalls/GroupCallView.js.map +1 -0
  109. package/lib/commonjs/components/VideoCalls/P2PCallRunner.js +151 -0
  110. package/lib/commonjs/components/VideoCalls/P2PCallRunner.js.map +1 -0
  111. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +38 -14
  112. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  113. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +57 -128
  114. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  115. package/lib/commonjs/components/VideoCalls/callActions.js +3 -0
  116. package/lib/commonjs/components/VideoCalls/callActions.js.map +1 -1
  117. package/lib/commonjs/components/VideoCalls/callElapsed.js +38 -0
  118. package/lib/commonjs/components/VideoCalls/callElapsed.js.map +1 -0
  119. package/lib/commonjs/components/VideoCalls/callLive.js +15 -0
  120. package/lib/commonjs/components/VideoCalls/callLive.js.map +1 -0
  121. package/lib/commonjs/components/VideoCalls/callSessionController.js +81 -24
  122. package/lib/commonjs/components/VideoCalls/callSessionController.js.map +1 -1
  123. package/lib/commonjs/components/VideoCalls/callSessionTypes.js +41 -0
  124. package/lib/commonjs/components/VideoCalls/callSessionTypes.js.map +1 -0
  125. package/lib/commonjs/components/VideoCalls/groupLayout.js +43 -0
  126. package/lib/commonjs/components/VideoCalls/groupLayout.js.map +1 -0
  127. package/lib/commonjs/components/VideoCalls/p2pCallSession.js +272 -0
  128. package/lib/commonjs/components/VideoCalls/p2pCallSession.js.map +1 -0
  129. package/lib/commonjs/components/VideoCalls/useCallKeep.js +7 -2
  130. package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -1
  131. package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js +2 -1
  132. package/lib/commonjs/components/VideoCalls/useOngoingCallNotification.js.map +1 -1
  133. package/lib/commonjs/components/styled/MessageImage.js +4 -1
  134. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  135. package/lib/commonjs/components/styled/VideoMessage.js +5 -1
  136. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  137. package/lib/commonjs/context/MediaSourceContext.js +18 -0
  138. package/lib/commonjs/context/MediaSourceContext.js.map +1 -0
  139. package/lib/commonjs/context/xmppProvider.js +2 -1
  140. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  141. package/lib/commonjs/helpers/callPush.js +3 -1
  142. package/lib/commonjs/helpers/callPush.js.map +1 -1
  143. package/lib/commonjs/helpers/constants/MODAL_COMPONENTS.js +3 -1
  144. package/lib/commonjs/helpers/constants/MODAL_COMPONENTS.js.map +1 -1
  145. package/lib/commonjs/helpers/constants/MODAL_TYPES.js +2 -0
  146. package/lib/commonjs/helpers/constants/MODAL_TYPES.js.map +1 -1
  147. package/lib/commonjs/helpers/incomingCallFromPush.js +63 -7
  148. package/lib/commonjs/helpers/incomingCallFromPush.js.map +1 -1
  149. package/lib/commonjs/helpers/publicChatsEntry.js +8 -6
  150. package/lib/commonjs/helpers/publicChatsEntry.js.map +1 -1
  151. package/lib/commonjs/helpers/pushPayload.js +5 -0
  152. package/lib/commonjs/helpers/pushPayload.js.map +1 -1
  153. package/lib/commonjs/helpers/reportRoom.js +76 -0
  154. package/lib/commonjs/helpers/reportRoom.js.map +1 -0
  155. package/lib/commonjs/helpers/roomMedia.js +118 -0
  156. package/lib/commonjs/helpers/roomMedia.js.map +1 -0
  157. package/lib/commonjs/i18n/strings.js +480 -0
  158. package/lib/commonjs/i18n/strings.js.map +1 -1
  159. package/lib/commonjs/main.js +93 -0
  160. package/lib/commonjs/main.js.map +1 -1
  161. package/lib/commonjs/networking/api-requests/callState.api.js +75 -0
  162. package/lib/commonjs/networking/api-requests/callState.api.js.map +1 -0
  163. package/lib/commonjs/networking/api-requests/push.api.js +29 -6
  164. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  165. package/lib/commonjs/networking/api-requests/rooms.api.js +17 -15
  166. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  167. package/lib/commonjs/networking/api-requests/scheduledCalls.api.js +141 -0
  168. package/lib/commonjs/networking/api-requests/scheduledCalls.api.js.map +1 -0
  169. package/lib/commonjs/networking/callTokenStanza.js +210 -50
  170. package/lib/commonjs/networking/callTokenStanza.js.map +1 -1
  171. package/lib/commonjs/roomStore/callSlice.js +59 -4
  172. package/lib/commonjs/roomStore/callSlice.js.map +1 -1
  173. package/lib/commonjs/services/appBadge.js +80 -0
  174. package/lib/commonjs/services/appBadge.js.map +1 -0
  175. package/lib/commonjs/services/languageSettings.js +47 -15
  176. package/lib/commonjs/services/languageSettings.js.map +1 -1
  177. package/lib/commonjs/services/pushRegistration.js +21 -5
  178. package/lib/commonjs/services/pushRegistration.js.map +1 -1
  179. package/lib/commonjs/version.js +1 -1
  180. package/lib/commonjs/version.js.map +1 -1
  181. package/lib/module/booking/index.js +5 -0
  182. package/lib/module/booking/index.js.map +1 -0
  183. package/lib/module/booking/pendingScheduledCall.js +261 -0
  184. package/lib/module/booking/pendingScheduledCall.js.map +1 -0
  185. package/lib/module/booking/scheduleForm.js +79 -0
  186. package/lib/module/booking/scheduleForm.js.map +1 -0
  187. package/lib/module/booking/scheduledCall.js +129 -0
  188. package/lib/module/booking/scheduledCall.js.map +1 -0
  189. package/lib/module/booking/scheduledCallActions.js +118 -0
  190. package/lib/module/booking/scheduledCallActions.js.map +1 -0
  191. package/lib/module/booking/scheduledCallLink.js +136 -0
  192. package/lib/module/booking/scheduledCallLink.js.map +1 -0
  193. package/lib/module/booking/scheduledCallStore.js +60 -0
  194. package/lib/module/booking/scheduledCallStore.js.map +1 -0
  195. package/lib/module/booking/startRoomCall.js +80 -0
  196. package/lib/module/booking/startRoomCall.js.map +1 -0
  197. package/lib/module/calls/callBusy.js +13 -0
  198. package/lib/module/calls/callBusy.js.map +1 -0
  199. package/lib/module/calls/callDisplay.js +65 -0
  200. package/lib/module/calls/callDisplay.js.map +1 -0
  201. package/lib/module/calls/callMode.js +168 -0
  202. package/lib/module/calls/callMode.js.map +1 -0
  203. package/lib/module/calls/declineReport.js +16 -0
  204. package/lib/module/calls/declineReport.js.map +1 -0
  205. package/lib/module/calls/p2p/P2PCallController.js +718 -0
  206. package/lib/module/calls/p2p/P2PCallController.js.map +1 -0
  207. package/lib/module/calls/p2p/icePolicy.js +102 -0
  208. package/lib/module/calls/p2p/icePolicy.js.map +1 -0
  209. package/lib/module/calls/p2p/negotiator.js +197 -0
  210. package/lib/module/calls/p2p/negotiator.js.map +1 -0
  211. package/lib/module/calls/p2p/p2pRuntime.js +137 -0
  212. package/lib/module/calls/p2p/p2pRuntime.js.map +1 -0
  213. package/lib/module/calls/p2p/signalInbox.js +93 -0
  214. package/lib/module/calls/p2p/signalInbox.js.map +1 -0
  215. package/lib/module/calls/p2p/signalStanza.js +135 -0
  216. package/lib/module/calls/p2p/signalStanza.js.map +1 -0
  217. package/lib/module/calls/p2p/webrtcRuntime.js +46 -0
  218. package/lib/module/calls/p2p/webrtcRuntime.js.map +1 -0
  219. package/lib/module/calls/senderTrust.js +38 -0
  220. package/lib/module/calls/senderTrust.js.map +1 -0
  221. package/lib/module/calls/startCall.js +47 -0
  222. package/lib/module/calls/startCall.js.map +1 -0
  223. package/lib/module/components/Booking/BookingIcons.js +48 -0
  224. package/lib/module/components/Booking/BookingIcons.js.map +1 -0
  225. package/lib/module/components/Booking/ScheduleCallButton.js +59 -0
  226. package/lib/module/components/Booking/ScheduleCallButton.js.map +1 -0
  227. package/lib/module/components/Booking/ScheduleCallSheet.js +345 -0
  228. package/lib/module/components/Booking/ScheduleCallSheet.js.map +1 -0
  229. package/lib/module/components/Booking/ScheduledCallCard.js +197 -0
  230. package/lib/module/components/Booking/ScheduledCallCard.js.map +1 -0
  231. package/lib/module/components/Booking/ScheduledCallHost.js +18 -0
  232. package/lib/module/components/Booking/ScheduledCallHost.js.map +1 -0
  233. package/lib/module/components/Booking/ScheduledCallMessage.js +48 -0
  234. package/lib/module/components/Booking/ScheduledCallMessage.js.map +1 -0
  235. package/lib/module/components/Booking/ScheduledCallPreJoin.js +229 -0
  236. package/lib/module/components/Booking/ScheduledCallPreJoin.js.map +1 -0
  237. package/lib/module/components/Booking/bookingShared.js +291 -0
  238. package/lib/module/components/Booking/bookingShared.js.map +1 -0
  239. package/lib/module/components/MainComponents/AlbumGrid.js +6 -2
  240. package/lib/module/components/MainComponents/AlbumGrid.js.map +1 -1
  241. package/lib/module/components/MainComponents/ChatHeader.js +20 -14
  242. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  243. package/lib/module/components/MainComponents/LanguageSelectorButton.js +5 -2
  244. package/lib/module/components/MainComponents/LanguageSelectorButton.js.map +1 -1
  245. package/lib/module/components/MainComponents/LanguageSelectorModal.js +7 -4
  246. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  247. package/lib/module/components/MainComponents/MediaMessage.js +13 -0
  248. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  249. package/lib/module/components/MainComponents/MessageContainer.js +13 -0
  250. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  251. package/lib/module/components/MainComponents/ReduxWrapper.js +10 -0
  252. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  253. package/lib/module/components/MainComponents/RoomList.js +7 -16
  254. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  255. package/lib/module/components/MessageBubble/Message.js +27 -1
  256. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  257. package/lib/module/components/Modals/ChatProfileModal/ChatMediaGrid.js +154 -0
  258. package/lib/module/components/Modals/ChatProfileModal/ChatMediaGrid.js.map +1 -0
  259. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +204 -136
  260. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  261. package/lib/module/components/Modals/ChatProfileModal/LeaveChatModal.js +175 -0
  262. package/lib/module/components/Modals/ChatProfileModal/LeaveChatModal.js.map +1 -0
  263. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +21 -15
  264. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
  265. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +100 -163
  266. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  267. package/lib/module/components/Modals/FilePreviewModal/MediaViewer.js +819 -0
  268. package/lib/module/components/Modals/FilePreviewModal/MediaViewer.js.map +1 -0
  269. package/lib/module/components/Modals/FilePreviewModal/useSaveFile.js +172 -0
  270. package/lib/module/components/Modals/FilePreviewModal/useSaveFile.js.map +1 -0
  271. package/lib/module/components/Modals/MessageSearchModal/MessageSearchModal.js +20 -4
  272. package/lib/module/components/Modals/MessageSearchModal/MessageSearchModal.js.map +1 -1
  273. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +17 -10
  274. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  275. package/lib/module/components/Modals/UserSettingsModal/LanguageCard.js +1 -1
  276. package/lib/module/components/Modals/UserSettingsModal/LanguageCard.js.map +1 -1
  277. package/lib/module/components/VideoCalls/ActiveCallBar.js +3 -2
  278. package/lib/module/components/VideoCalls/ActiveCallBar.js.map +1 -1
  279. package/lib/module/components/VideoCalls/CallButtons.js +19 -11
  280. package/lib/module/components/VideoCalls/CallButtons.js.map +1 -1
  281. package/lib/module/components/VideoCalls/CallControlBar.js +113 -0
  282. package/lib/module/components/VideoCalls/CallControlBar.js.map +1 -0
  283. package/lib/module/components/VideoCalls/CallVideo.js +43 -0
  284. package/lib/module/components/VideoCalls/CallVideo.js.map +1 -0
  285. package/lib/module/components/VideoCalls/GroupCallView.js +275 -0
  286. package/lib/module/components/VideoCalls/GroupCallView.js.map +1 -0
  287. package/lib/module/components/VideoCalls/P2PCallRunner.js +147 -0
  288. package/lib/module/components/VideoCalls/P2PCallRunner.js.map +1 -0
  289. package/lib/module/components/VideoCalls/VideoCallOverlay.js +38 -14
  290. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -1
  291. package/lib/module/components/VideoCalls/VideoCallSession.js +46 -127
  292. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  293. package/lib/module/components/VideoCalls/callActions.js +3 -0
  294. package/lib/module/components/VideoCalls/callActions.js.map +1 -1
  295. package/lib/module/components/VideoCalls/callElapsed.js +33 -0
  296. package/lib/module/components/VideoCalls/callElapsed.js.map +1 -0
  297. package/lib/module/components/VideoCalls/callLive.js +10 -0
  298. package/lib/module/components/VideoCalls/callLive.js.map +1 -0
  299. package/lib/module/components/VideoCalls/callSessionController.js +80 -24
  300. package/lib/module/components/VideoCalls/callSessionController.js.map +1 -1
  301. package/lib/module/components/VideoCalls/callSessionTypes.js +37 -0
  302. package/lib/module/components/VideoCalls/callSessionTypes.js.map +1 -0
  303. package/lib/module/components/VideoCalls/groupLayout.js +36 -0
  304. package/lib/module/components/VideoCalls/groupLayout.js.map +1 -0
  305. package/lib/module/components/VideoCalls/p2pCallSession.js +256 -0
  306. package/lib/module/components/VideoCalls/p2pCallSession.js.map +1 -0
  307. package/lib/module/components/VideoCalls/useCallKeep.js +8 -2
  308. package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -1
  309. package/lib/module/components/VideoCalls/useOngoingCallNotification.js +2 -1
  310. package/lib/module/components/VideoCalls/useOngoingCallNotification.js.map +1 -1
  311. package/lib/module/components/styled/MessageImage.js +4 -1
  312. package/lib/module/components/styled/MessageImage.js.map +1 -1
  313. package/lib/module/components/styled/VideoMessage.js +5 -1
  314. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  315. package/lib/module/context/MediaSourceContext.js +13 -0
  316. package/lib/module/context/MediaSourceContext.js.map +1 -0
  317. package/lib/module/context/xmppProvider.js +2 -1
  318. package/lib/module/context/xmppProvider.js.map +1 -1
  319. package/lib/module/helpers/callPush.js +3 -1
  320. package/lib/module/helpers/callPush.js.map +1 -1
  321. package/lib/module/helpers/constants/MODAL_COMPONENTS.js +2 -1
  322. package/lib/module/helpers/constants/MODAL_COMPONENTS.js.map +1 -1
  323. package/lib/module/helpers/constants/MODAL_TYPES.js +2 -0
  324. package/lib/module/helpers/constants/MODAL_TYPES.js.map +1 -1
  325. package/lib/module/helpers/incomingCallFromPush.js +63 -7
  326. package/lib/module/helpers/incomingCallFromPush.js.map +1 -1
  327. package/lib/module/helpers/publicChatsEntry.js +8 -6
  328. package/lib/module/helpers/publicChatsEntry.js.map +1 -1
  329. package/lib/module/helpers/pushPayload.js +5 -0
  330. package/lib/module/helpers/pushPayload.js.map +1 -1
  331. package/lib/module/helpers/reportRoom.js +70 -0
  332. package/lib/module/helpers/reportRoom.js.map +1 -0
  333. package/lib/module/helpers/roomMedia.js +112 -0
  334. package/lib/module/helpers/roomMedia.js.map +1 -0
  335. package/lib/module/i18n/strings.js +480 -0
  336. package/lib/module/i18n/strings.js.map +1 -1
  337. package/lib/module/main.js +5 -0
  338. package/lib/module/main.js.map +1 -1
  339. package/lib/module/networking/api-requests/callState.api.js +66 -0
  340. package/lib/module/networking/api-requests/callState.api.js.map +1 -0
  341. package/lib/module/networking/api-requests/push.api.js +29 -6
  342. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  343. package/lib/module/networking/api-requests/rooms.api.js +17 -15
  344. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  345. package/lib/module/networking/api-requests/scheduledCalls.api.js +130 -0
  346. package/lib/module/networking/api-requests/scheduledCalls.api.js.map +1 -0
  347. package/lib/module/networking/callTokenStanza.js +210 -50
  348. package/lib/module/networking/callTokenStanza.js.map +1 -1
  349. package/lib/module/roomStore/callSlice.js +57 -3
  350. package/lib/module/roomStore/callSlice.js.map +1 -1
  351. package/lib/module/services/appBadge.js +74 -0
  352. package/lib/module/services/appBadge.js.map +1 -0
  353. package/lib/module/services/languageSettings.js +44 -13
  354. package/lib/module/services/languageSettings.js.map +1 -1
  355. package/lib/module/services/pushRegistration.js +21 -5
  356. package/lib/module/services/pushRegistration.js.map +1 -1
  357. package/lib/module/version.js +1 -1
  358. package/lib/module/version.js.map +1 -1
  359. package/lib/typescript/booking/index.d.ts +3 -0
  360. package/lib/typescript/booking/index.d.ts.map +1 -0
  361. package/lib/typescript/booking/pendingScheduledCall.d.ts +80 -0
  362. package/lib/typescript/booking/pendingScheduledCall.d.ts.map +1 -0
  363. package/lib/typescript/booking/scheduleForm.d.ts +28 -0
  364. package/lib/typescript/booking/scheduleForm.d.ts.map +1 -0
  365. package/lib/typescript/booking/scheduledCall.d.ts +52 -0
  366. package/lib/typescript/booking/scheduledCall.d.ts.map +1 -0
  367. package/lib/typescript/booking/scheduledCallActions.d.ts +22 -0
  368. package/lib/typescript/booking/scheduledCallActions.d.ts.map +1 -0
  369. package/lib/typescript/booking/scheduledCallLink.d.ts +37 -0
  370. package/lib/typescript/booking/scheduledCallLink.d.ts.map +1 -0
  371. package/lib/typescript/booking/scheduledCallStore.d.ts +47 -0
  372. package/lib/typescript/booking/scheduledCallStore.d.ts.map +1 -0
  373. package/lib/typescript/booking/startRoomCall.d.ts +12 -0
  374. package/lib/typescript/booking/startRoomCall.d.ts.map +1 -0
  375. package/lib/typescript/calls/callBusy.d.ts +9 -0
  376. package/lib/typescript/calls/callBusy.d.ts.map +1 -0
  377. package/lib/typescript/calls/callDisplay.d.ts +23 -0
  378. package/lib/typescript/calls/callDisplay.d.ts.map +1 -0
  379. package/lib/typescript/calls/callMode.d.ts +106 -0
  380. package/lib/typescript/calls/callMode.d.ts.map +1 -0
  381. package/lib/typescript/calls/declineReport.d.ts +11 -0
  382. package/lib/typescript/calls/declineReport.d.ts.map +1 -0
  383. package/lib/typescript/calls/p2p/P2PCallController.d.ts +150 -0
  384. package/lib/typescript/calls/p2p/P2PCallController.d.ts.map +1 -0
  385. package/lib/typescript/calls/p2p/icePolicy.d.ts +37 -0
  386. package/lib/typescript/calls/p2p/icePolicy.d.ts.map +1 -0
  387. package/lib/typescript/calls/p2p/negotiator.d.ts +57 -0
  388. package/lib/typescript/calls/p2p/negotiator.d.ts.map +1 -0
  389. package/lib/typescript/calls/p2p/p2pRuntime.d.ts +41 -0
  390. package/lib/typescript/calls/p2p/p2pRuntime.d.ts.map +1 -0
  391. package/lib/typescript/calls/p2p/signalInbox.d.ts +35 -0
  392. package/lib/typescript/calls/p2p/signalInbox.d.ts.map +1 -0
  393. package/lib/typescript/calls/p2p/signalStanza.d.ts +52 -0
  394. package/lib/typescript/calls/p2p/signalStanza.d.ts.map +1 -0
  395. package/lib/typescript/calls/p2p/webrtcRuntime.d.ts +32 -0
  396. package/lib/typescript/calls/p2p/webrtcRuntime.d.ts.map +1 -0
  397. package/lib/typescript/calls/senderTrust.d.ts +8 -0
  398. package/lib/typescript/calls/senderTrust.d.ts.map +1 -0
  399. package/lib/typescript/calls/startCall.d.ts +17 -0
  400. package/lib/typescript/calls/startCall.d.ts.map +1 -0
  401. package/lib/typescript/components/Booking/BookingIcons.d.ts +9 -0
  402. package/lib/typescript/components/Booking/BookingIcons.d.ts.map +1 -0
  403. package/lib/typescript/components/Booking/ScheduleCallButton.d.ts +11 -0
  404. package/lib/typescript/components/Booking/ScheduleCallButton.d.ts.map +1 -0
  405. package/lib/typescript/components/Booking/ScheduleCallSheet.d.ts +4 -0
  406. package/lib/typescript/components/Booking/ScheduleCallSheet.d.ts.map +1 -0
  407. package/lib/typescript/components/Booking/ScheduledCallCard.d.ts +14 -0
  408. package/lib/typescript/components/Booking/ScheduledCallCard.d.ts.map +1 -0
  409. package/lib/typescript/components/Booking/ScheduledCallHost.d.ts +10 -0
  410. package/lib/typescript/components/Booking/ScheduledCallHost.d.ts.map +1 -0
  411. package/lib/typescript/components/Booking/ScheduledCallMessage.d.ts +20 -0
  412. package/lib/typescript/components/Booking/ScheduledCallMessage.d.ts.map +1 -0
  413. package/lib/typescript/components/Booking/ScheduledCallPreJoin.d.ts +8 -0
  414. package/lib/typescript/components/Booking/ScheduledCallPreJoin.d.ts.map +1 -0
  415. package/lib/typescript/components/Booking/bookingShared.d.ts +199 -0
  416. package/lib/typescript/components/Booking/bookingShared.d.ts.map +1 -0
  417. package/lib/typescript/components/MainComponents/AlbumGrid.d.ts.map +1 -1
  418. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  419. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts +3 -1
  420. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts.map +1 -1
  421. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -1
  422. package/lib/typescript/components/MainComponents/MediaMessage.d.ts +3 -1
  423. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  424. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  425. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  426. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  427. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  428. package/lib/typescript/components/Modals/ChatProfileModal/ChatMediaGrid.d.ts +16 -0
  429. package/lib/typescript/components/Modals/ChatProfileModal/ChatMediaGrid.d.ts.map +1 -0
  430. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  431. package/lib/typescript/components/Modals/ChatProfileModal/LeaveChatModal.d.ts +18 -0
  432. package/lib/typescript/components/Modals/ChatProfileModal/LeaveChatModal.d.ts.map +1 -0
  433. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -1
  434. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +16 -0
  435. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  436. package/lib/typescript/components/Modals/FilePreviewModal/MediaViewer.d.ts +27 -0
  437. package/lib/typescript/components/Modals/FilePreviewModal/MediaViewer.d.ts.map +1 -0
  438. package/lib/typescript/components/Modals/FilePreviewModal/useSaveFile.d.ts +9 -0
  439. package/lib/typescript/components/Modals/FilePreviewModal/useSaveFile.d.ts.map +1 -0
  440. package/lib/typescript/components/Modals/MessageSearchModal/MessageSearchModal.d.ts +8 -0
  441. package/lib/typescript/components/Modals/MessageSearchModal/MessageSearchModal.d.ts.map +1 -1
  442. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  443. package/lib/typescript/components/Modals/UserSettingsModal/LanguageCard.d.ts.map +1 -1
  444. package/lib/typescript/components/VideoCalls/ActiveCallBar.d.ts.map +1 -1
  445. package/lib/typescript/components/VideoCalls/CallButtons.d.ts +2 -1
  446. package/lib/typescript/components/VideoCalls/CallButtons.d.ts.map +1 -1
  447. package/lib/typescript/components/VideoCalls/CallControlBar.d.ts +17 -0
  448. package/lib/typescript/components/VideoCalls/CallControlBar.d.ts.map +1 -0
  449. package/lib/typescript/components/VideoCalls/CallVideo.d.ts +23 -0
  450. package/lib/typescript/components/VideoCalls/CallVideo.d.ts.map +1 -0
  451. package/lib/typescript/components/VideoCalls/GroupCallView.d.ts +22 -0
  452. package/lib/typescript/components/VideoCalls/GroupCallView.d.ts.map +1 -0
  453. package/lib/typescript/components/VideoCalls/P2PCallRunner.d.ts +2 -0
  454. package/lib/typescript/components/VideoCalls/P2PCallRunner.d.ts.map +1 -0
  455. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -1
  456. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts +10 -12
  457. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  458. package/lib/typescript/components/VideoCalls/callActions.d.ts.map +1 -1
  459. package/lib/typescript/components/VideoCalls/callElapsed.d.ts +8 -0
  460. package/lib/typescript/components/VideoCalls/callElapsed.d.ts.map +1 -0
  461. package/lib/typescript/components/VideoCalls/callLive.d.ts +9 -0
  462. package/lib/typescript/components/VideoCalls/callLive.d.ts.map +1 -0
  463. package/lib/typescript/components/VideoCalls/callSessionController.d.ts +10 -31
  464. package/lib/typescript/components/VideoCalls/callSessionController.d.ts.map +1 -1
  465. package/lib/typescript/components/VideoCalls/callSessionTypes.d.ts +60 -0
  466. package/lib/typescript/components/VideoCalls/callSessionTypes.d.ts.map +1 -0
  467. package/lib/typescript/components/VideoCalls/groupLayout.d.ts +23 -0
  468. package/lib/typescript/components/VideoCalls/groupLayout.d.ts.map +1 -0
  469. package/lib/typescript/components/VideoCalls/p2pCallSession.d.ts +31 -0
  470. package/lib/typescript/components/VideoCalls/p2pCallSession.d.ts.map +1 -0
  471. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -1
  472. package/lib/typescript/components/VideoCalls/useOngoingCallNotification.d.ts.map +1 -1
  473. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  474. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  475. package/lib/typescript/context/MediaSourceContext.d.ts +4 -0
  476. package/lib/typescript/context/MediaSourceContext.d.ts.map +1 -0
  477. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  478. package/lib/typescript/helpers/callPush.d.ts +11 -1
  479. package/lib/typescript/helpers/callPush.d.ts.map +1 -1
  480. package/lib/typescript/helpers/constants/MODAL_COMPONENTS.d.ts.map +1 -1
  481. package/lib/typescript/helpers/constants/MODAL_TYPES.d.ts +2 -0
  482. package/lib/typescript/helpers/constants/MODAL_TYPES.d.ts.map +1 -1
  483. package/lib/typescript/helpers/incomingCallFromPush.d.ts.map +1 -1
  484. package/lib/typescript/helpers/publicChatsEntry.d.ts +7 -5
  485. package/lib/typescript/helpers/publicChatsEntry.d.ts.map +1 -1
  486. package/lib/typescript/helpers/pushPayload.d.ts +1 -1
  487. package/lib/typescript/helpers/pushPayload.d.ts.map +1 -1
  488. package/lib/typescript/helpers/reportRoom.d.ts +19 -0
  489. package/lib/typescript/helpers/reportRoom.d.ts.map +1 -0
  490. package/lib/typescript/helpers/roomMedia.d.ts +26 -0
  491. package/lib/typescript/helpers/roomMedia.d.ts.map +1 -0
  492. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  493. package/lib/typescript/main.d.ts +6 -1
  494. package/lib/typescript/main.d.ts.map +1 -1
  495. package/lib/typescript/networking/api-requests/callState.api.d.ts +25 -0
  496. package/lib/typescript/networking/api-requests/callState.api.d.ts.map +1 -0
  497. package/lib/typescript/networking/api-requests/push.api.d.ts +9 -2
  498. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  499. package/lib/typescript/networking/api-requests/rooms.api.d.ts +8 -6
  500. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  501. package/lib/typescript/networking/api-requests/scheduledCalls.api.d.ts +86 -0
  502. package/lib/typescript/networking/api-requests/scheduledCalls.api.d.ts.map +1 -0
  503. package/lib/typescript/networking/callTokenStanza.d.ts.map +1 -1
  504. package/lib/typescript/roomStore/callSlice.d.ts +23 -1
  505. package/lib/typescript/roomStore/callSlice.d.ts.map +1 -1
  506. package/lib/typescript/services/appBadge.d.ts +3 -0
  507. package/lib/typescript/services/appBadge.d.ts.map +1 -0
  508. package/lib/typescript/services/languageSettings.d.ts +7 -0
  509. package/lib/typescript/services/languageSettings.d.ts.map +1 -1
  510. package/lib/typescript/services/pushRegistration.d.ts.map +1 -1
  511. package/lib/typescript/types/models/modal.model.d.ts +18 -0
  512. package/lib/typescript/types/models/modal.model.d.ts.map +1 -1
  513. package/lib/typescript/types/types.d.ts +85 -4
  514. package/lib/typescript/types/types.d.ts.map +1 -1
  515. package/lib/typescript/version.d.ts +1 -1
  516. package/lib/typescript/version.d.ts.map +1 -1
  517. package/package.json +9 -2
  518. package/src/booking/index.ts +10 -0
  519. package/src/booking/pendingScheduledCall.ts +272 -0
  520. package/src/booking/scheduleForm.ts +84 -0
  521. package/src/booking/scheduledCall.ts +163 -0
  522. package/src/booking/scheduledCallActions.ts +141 -0
  523. package/src/booking/scheduledCallLink.ts +145 -0
  524. package/src/booking/scheduledCallStore.ts +69 -0
  525. package/src/booking/startRoomCall.ts +103 -0
  526. package/src/calls/callBusy.ts +10 -0
  527. package/src/calls/callDisplay.ts +74 -0
  528. package/src/calls/callMode.ts +286 -0
  529. package/src/calls/declineReport.ts +16 -0
  530. package/src/calls/p2p/P2PCallController.ts +813 -0
  531. package/src/calls/p2p/icePolicy.ts +99 -0
  532. package/src/calls/p2p/negotiator.ts +186 -0
  533. package/src/calls/p2p/p2pRuntime.ts +164 -0
  534. package/src/calls/p2p/signalInbox.ts +117 -0
  535. package/src/calls/p2p/signalStanza.ts +205 -0
  536. package/src/calls/p2p/webrtcRuntime.ts +60 -0
  537. package/src/calls/senderTrust.ts +40 -0
  538. package/src/calls/startCall.ts +56 -0
  539. package/src/components/Booking/BookingIcons.tsx +44 -0
  540. package/src/components/Booking/ScheduleCallButton.tsx +66 -0
  541. package/src/components/Booking/ScheduleCallSheet.tsx +380 -0
  542. package/src/components/Booking/ScheduledCallCard.tsx +216 -0
  543. package/src/components/Booking/ScheduledCallHost.tsx +18 -0
  544. package/src/components/Booking/ScheduledCallMessage.tsx +62 -0
  545. package/src/components/Booking/ScheduledCallPreJoin.tsx +230 -0
  546. package/src/components/Booking/bookingShared.tsx +295 -0
  547. package/src/components/MainComponents/AlbumGrid.tsx +5 -1
  548. package/src/components/MainComponents/ChatHeader.tsx +18 -11
  549. package/src/components/MainComponents/LanguageSelectorButton.tsx +9 -2
  550. package/src/components/MainComponents/LanguageSelectorModal.tsx +10 -6
  551. package/src/components/MainComponents/MediaMessage.tsx +13 -2
  552. package/src/components/MainComponents/MessageContainer.tsx +15 -0
  553. package/src/components/MainComponents/ReduxWrapper.tsx +10 -0
  554. package/src/components/MainComponents/RoomList.tsx +8 -19
  555. package/src/components/MessageBubble/Message.tsx +24 -1
  556. package/src/components/Modals/ChatProfileModal/ChatMediaGrid.tsx +174 -0
  557. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +119 -48
  558. package/src/components/Modals/ChatProfileModal/LeaveChatModal.tsx +191 -0
  559. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +22 -22
  560. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +115 -185
  561. package/src/components/Modals/FilePreviewModal/MediaViewer.tsx +880 -0
  562. package/src/components/Modals/FilePreviewModal/useSaveFile.ts +207 -0
  563. package/src/components/Modals/MessageSearchModal/MessageSearchModal.tsx +56 -30
  564. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +28 -9
  565. package/src/components/Modals/UserSettingsModal/LanguageCard.tsx +9 -7
  566. package/src/components/VideoCalls/ActiveCallBar.tsx +6 -5
  567. package/src/components/VideoCalls/CallButtons.tsx +23 -12
  568. package/src/components/VideoCalls/CallControlBar.tsx +131 -0
  569. package/src/components/VideoCalls/CallVideo.tsx +59 -0
  570. package/src/components/VideoCalls/GroupCallView.tsx +324 -0
  571. package/src/components/VideoCalls/P2PCallRunner.tsx +192 -0
  572. package/src/components/VideoCalls/VideoCallOverlay.tsx +62 -17
  573. package/src/components/VideoCalls/VideoCallSession.tsx +55 -133
  574. package/src/components/VideoCalls/callActions.ts +3 -0
  575. package/src/components/VideoCalls/callElapsed.ts +27 -0
  576. package/src/components/VideoCalls/callLive.ts +13 -0
  577. package/src/components/VideoCalls/callSessionController.ts +130 -55
  578. package/src/components/VideoCalls/callSessionTypes.ts +80 -0
  579. package/src/components/VideoCalls/groupLayout.ts +48 -0
  580. package/src/components/VideoCalls/p2pCallSession.ts +291 -0
  581. package/src/components/VideoCalls/useCallKeep.ts +9 -2
  582. package/src/components/VideoCalls/useOngoingCallNotification.ts +2 -2
  583. package/src/components/styled/MessageImage.tsx +3 -1
  584. package/src/components/styled/VideoMessage.tsx +5 -1
  585. package/src/context/MediaSourceContext.tsx +14 -0
  586. package/src/context/xmppProvider.tsx +3 -0
  587. package/src/helpers/callPush.ts +13 -1
  588. package/src/helpers/constants/MODAL_COMPONENTS.tsx +4 -1
  589. package/src/helpers/constants/MODAL_TYPES.ts +2 -0
  590. package/src/helpers/incomingCallFromPush.ts +65 -7
  591. package/src/helpers/publicChatsEntry.ts +8 -7
  592. package/src/helpers/pushPayload.ts +9 -1
  593. package/src/helpers/reportRoom.ts +93 -0
  594. package/src/helpers/roomMedia.ts +126 -0
  595. package/src/i18n/strings.ts +480 -0
  596. package/src/main.ts +33 -0
  597. package/src/networking/api-requests/callState.api.ts +83 -0
  598. package/src/networking/api-requests/push.api.ts +28 -3
  599. package/src/networking/api-requests/rooms.api.ts +25 -15
  600. package/src/networking/api-requests/scheduledCalls.api.ts +232 -0
  601. package/src/networking/callTokenStanza.ts +247 -50
  602. package/src/roomStore/callSlice.ts +86 -2
  603. package/src/services/appBadge.ts +85 -0
  604. package/src/services/languageSettings.ts +43 -8
  605. package/src/services/pushRegistration.ts +34 -3
  606. package/src/types/models/modal.model.ts +16 -0
  607. package/src/types/types.ts +86 -4
  608. package/src/version.ts +1 -1
@@ -0,0 +1,207 @@
1
+ import { useCallback, useRef } from "react";
2
+ import { Alert, Platform, Share } from "react-native";
3
+ import * as FileSystem from "expo-file-system/legacy";
4
+ import type { ModalFile } from "../../../types/types";
5
+ import { withFileToken } from "../../../helpers/secureFileUrl";
6
+ import { getMediaLibrary } from "../../../helpers/mediaLibraryRuntime";
7
+ import { useToast } from "../../../context/ToastContext";
8
+ import { useT } from "../../../i18n/useT";
9
+ import {
10
+ getDisplayFileName,
11
+ getUniqueFileName,
12
+ sanitizeFileNameForPath,
13
+ } from "../../../helpers/getDisplayFileName";
14
+
15
+ export const isLocalFile = (url: string | undefined | null) =>
16
+ /^file:\/\//i.test(url || "");
17
+
18
+ const fetchToCache = async (url: string, cachePath: string) =>
19
+ isLocalFile(url)
20
+ ? { status: 200, uri: url }
21
+ : FileSystem.downloadAsync(withFileToken(url), cachePath);
22
+
23
+ /**
24
+ * Save button of the file viewers: pictures and videos to the gallery,
25
+ * anything else to Downloads (Android, through SAF) or the share sheet (iOS).
26
+ * Shared by the preview page and the media viewer opened from a chat profile.
27
+ */
28
+ export const useSaveFile = () => {
29
+ const { showToast } = useToast();
30
+ const t = useT();
31
+ // Cache the SAF directory the user granted so saving several documents
32
+ // in a row doesn't re-prompt for a folder every time (Android only).
33
+ const safDirUriRef = useRef<string | null>(null);
34
+
35
+ return useCallback(
36
+ async (activeFile: ModalFile) => {
37
+ // Bug #40: prefer the sender's original name over the server's stored
38
+ // hash name when saving/sharing the file. Sanitized so it's safe to use
39
+ // as an actual path segment (strips path separators/control chars).
40
+ const displayFileName = sanitizeFileNameForPath(
41
+ getDisplayFileName({
42
+ originalName: activeFile.originalName,
43
+ fileName: activeFile.fileName,
44
+ location: activeFile.fileURL,
45
+ mimetype: activeFile.mimetype,
46
+ })
47
+ );
48
+
49
+ const requestStoragePermission = async () => {
50
+ const MediaLibrary = getMediaLibrary();
51
+ if (!MediaLibrary?.requestPermissionsAsync) {
52
+ return false;
53
+ }
54
+ try {
55
+ const { status } = await MediaLibrary.requestPermissionsAsync();
56
+ return status === "granted";
57
+ } catch (error) {
58
+ console.error("Error requesting permission:", error);
59
+ return false;
60
+ }
61
+ };
62
+
63
+ const saveToGallery = async () => {
64
+ const hasPermission = await requestStoragePermission();
65
+ if (!hasPermission) {
66
+ Alert.alert(
67
+ "Permission Denied",
68
+ "Storage permission is required to save files to the gallery."
69
+ );
70
+ return;
71
+ }
72
+
73
+ try {
74
+ const filePath = FileSystem.cacheDirectory + displayFileName;
75
+ const download = await fetchToCache(activeFile.fileURL, filePath);
76
+
77
+ if (download.status === 200) {
78
+ await getMediaLibrary()?.saveToLibraryAsync(download.uri);
79
+ showToast({
80
+ id: Date.now().toString(),
81
+ title: t("toast.successTitle"),
82
+ message: t("toast.saveSuccessful"),
83
+ type: "success",
84
+ });
85
+ } else {
86
+ Alert.alert("Error", "Failed to save the file.");
87
+ }
88
+ } catch (err) {
89
+ Alert.alert("Error", `Failed to save the file: ${displayFileName}`);
90
+ }
91
+ };
92
+
93
+ // Best-effort existing-name lookup for the Android SAF branch below: SAF
94
+ // hands back content URIs, not plain names, so this decodes each one and
95
+ // takes its last path segment. If the provider's URI shape doesn't match
96
+ // what we expect, we fail open (empty set) rather than block the save -
97
+ // worst case we skip de-duplication, we never crash the save flow.
98
+ const listSafDirectoryNames = async (
99
+ saf: any,
100
+ dirUri: string
101
+ ): Promise<Set<string>> => {
102
+ try {
103
+ const uris: string[] = await saf.readDirectoryAsync(dirUri);
104
+ const names = uris.map((uri) => {
105
+ try {
106
+ const decoded = decodeURIComponent(uri);
107
+ const last = decoded.split("/").pop() || "";
108
+ return last.includes(":") ? last.split(":").pop() || "" : last;
109
+ } catch {
110
+ return "";
111
+ }
112
+ });
113
+ return new Set(names.filter(Boolean));
114
+ } catch {
115
+ return new Set<string>();
116
+ }
117
+ };
118
+
119
+ const saveFileToDownloads = async () => {
120
+ try {
121
+ const filePath = FileSystem.cacheDirectory + displayFileName;
122
+ const download = await fetchToCache(activeFile.fileURL, filePath);
123
+
124
+ if (download.status !== 200) {
125
+ Alert.alert("Error", "Failed to save the file.");
126
+ return;
127
+ }
128
+
129
+ if (Platform.OS === "android") {
130
+ const saf = (FileSystem as any).StorageAccessFramework;
131
+ let dirUri = safDirUriRef.current;
132
+ if (!dirUri) {
133
+ const perm = await saf.requestDirectoryPermissionsAsync();
134
+ if (!perm.granted) {
135
+ Alert.alert(
136
+ "Permission Denied",
137
+ "Storage permission is required to save the file."
138
+ );
139
+ return;
140
+ }
141
+ dirUri = perm.directoryUri;
142
+ safDirUriRef.current = dirUri;
143
+ }
144
+
145
+ // Avoid silently overwriting a different attachment that happens
146
+ // to share the same display name (common now that we prefer the
147
+ // human-picked name over the unique server hash - bug #40) by
148
+ // suffixing " (1)", " (2)", ... on a collision.
149
+ const existingNames = await listSafDirectoryNames(
150
+ saf,
151
+ dirUri as string
152
+ );
153
+ const uniqueName = await getUniqueFileName(
154
+ displayFileName,
155
+ async (candidate) => existingNames.has(candidate)
156
+ );
157
+ const baseName = uniqueName.replace(/\.[^/.]+$/, "");
158
+ const mime = activeFile.mimetype || "application/octet-stream";
159
+ const base64 = await FileSystem.readAsStringAsync(download.uri, {
160
+ encoding: FileSystem.EncodingType.Base64,
161
+ });
162
+ const destUri = await saf.createFileAsync(dirUri, baseName, mime);
163
+ await FileSystem.writeAsStringAsync(destUri, base64, {
164
+ encoding: FileSystem.EncodingType.Base64,
165
+ });
166
+
167
+ showToast({
168
+ id: Date.now().toString(),
169
+ title: t("toast.successTitle"),
170
+ message: t("toast.saveSuccessful"),
171
+ type: "success",
172
+ });
173
+ return;
174
+ }
175
+
176
+ // iOS (and any non-Android): there is no app-writable "Downloads"
177
+ // folder, and MediaLibrary only accepts images/videos — which is why
178
+ // documents previously hit the success toast without ever being
179
+ // saved. Present the system share sheet so the user can "Save to
180
+ // Files", AirDrop, etc. The sheet itself is the confirmation (the
181
+ // user may cancel), so we don't show a "Save successful" toast here.
182
+ await Share.share({
183
+ url: download.uri,
184
+ title: displayFileName,
185
+ });
186
+ } catch (err) {
187
+ console.error("Error saving file:", err);
188
+ Alert.alert("Error", "Failed to save the file.");
189
+ }
190
+ };
191
+
192
+ const saveClick = async () => {
193
+ if (
194
+ activeFile.mimetype.startsWith("image/") ||
195
+ activeFile.mimetype.startsWith("video/")
196
+ ) {
197
+ await saveToGallery();
198
+ } else {
199
+ await saveFileToDownloads();
200
+ }
201
+ };
202
+
203
+ await saveClick();
204
+ },
205
+ [showToast, t]
206
+ );
207
+ };
@@ -46,13 +46,18 @@ import {
46
46
  useMessageSearch,
47
47
  } from './useMessageSearch';
48
48
  import { openSearchHit } from './openHit';
49
+ import { setActiveModal } from '../../../roomStore/chatSettingsSlice';
50
+ import { MODAL_TYPES } from '../../../helpers/constants/MODAL_TYPES';
49
51
 
50
52
  interface MessageSearchModalProps {
51
53
  handleCloseModal: () => void;
54
+ /** Search the open chat only: no "All chats" scope to switch to. */
55
+ chatOnly?: boolean;
52
56
  }
53
57
 
54
58
  const MessageSearchModalContent: React.FC<MessageSearchModalProps> = ({
55
59
  handleCloseModal,
60
+ chatOnly = false,
56
61
  }) => {
57
62
  const t = useT();
58
63
  const dispatch = useDispatch();
@@ -71,7 +76,7 @@ const MessageSearchModalContent: React.FC<MessageSearchModalProps> = ({
71
76
  const [query, setQuery] = useState('');
72
77
  const roomName = activeRoomJID ? activeRoomJID.split('@')[0] : undefined;
73
78
  const [scope, setScope] = useState<SearchScope>(
74
- activeRoomJID ? 'chat' : 'all'
79
+ chatOnly || activeRoomJID ? 'chat' : 'all'
75
80
  );
76
81
 
77
82
  const [filtersOpen, setFiltersOpen] = useState(false);
@@ -182,34 +187,36 @@ const MessageSearchModalContent: React.FC<MessageSearchModalProps> = ({
182
187
  />
183
188
  </View>
184
189
 
185
- <View style={styles.scopeRow} accessibilityLabel={t('search.messages.scope')}>
186
- {(['chat', 'all'] as SearchScope[]).map((value) => {
187
- const active = scope === value;
188
- const disabled = value === 'chat' && !roomName;
189
- return (
190
- <TouchableOpacity
191
- key={value}
192
- testID={`message-search-scope-${value}`}
193
- disabled={disabled}
194
- onPress={() => setScope(value)}
195
- accessibilityState={{ selected: active, disabled }}
196
- style={[
197
- styles.scopeButton,
198
- active && { borderColor: primary, backgroundColor: primary + '1F' },
199
- disabled && styles.hitDisabled,
200
- ]}
201
- >
202
- <Text style={[styles.scopeLabel, active && { color: primary }]}>
203
- {t(
204
- value === 'chat'
205
- ? 'search.messages.scopeChat'
206
- : 'search.messages.scopeAll'
207
- )}
208
- </Text>
209
- </TouchableOpacity>
210
- );
211
- })}
212
- </View>
190
+ {!chatOnly && (
191
+ <View style={styles.scopeRow} accessibilityLabel={t('search.messages.scope')}>
192
+ {(['chat', 'all'] as SearchScope[]).map((value) => {
193
+ const active = scope === value;
194
+ const disabled = value === 'chat' && !roomName;
195
+ return (
196
+ <TouchableOpacity
197
+ key={value}
198
+ testID={`message-search-scope-${value}`}
199
+ disabled={disabled}
200
+ onPress={() => setScope(value)}
201
+ accessibilityState={{ selected: active, disabled }}
202
+ style={[
203
+ styles.scopeButton,
204
+ active && { borderColor: primary, backgroundColor: primary + '1F' },
205
+ disabled && styles.hitDisabled,
206
+ ]}
207
+ >
208
+ <Text style={[styles.scopeLabel, active && { color: primary }]}>
209
+ {t(
210
+ value === 'chat'
211
+ ? 'search.messages.scopeChat'
212
+ : 'search.messages.scopeAll'
213
+ )}
214
+ </Text>
215
+ </TouchableOpacity>
216
+ );
217
+ })}
218
+ </View>
219
+ )}
213
220
 
214
221
  <TouchableOpacity
215
222
  testID="message-search-filters-toggle"
@@ -368,7 +375,11 @@ const MessageSearchModalContent: React.FC<MessageSearchModalProps> = ({
368
375
  <ModalContainerFullScreen style={styles.screen}>
369
376
  <ModalHeaderComponent
370
377
  handleCloseModal={handleCloseModal}
371
- headerTitle={t('search.messages.title')}
378
+ headerTitle={
379
+ chatOnly && searchedRoom?.title
380
+ ? searchedRoom.title
381
+ : t('search.messages.title')
382
+ }
372
383
  />
373
384
  <FlatList
374
385
  style={styles.list}
@@ -484,4 +495,19 @@ const MessageSearchModal: React.FC<MessageSearchModalProps> = (props) => {
484
495
  return <MessageSearchModalContent {...props} />;
485
496
  };
486
497
 
498
+ /**
499
+ * The chat profile's Search: the same search as the room list's, inside this
500
+ * chat only. Back returns to the profile it was opened from; opening a hit
501
+ * closes both and lands on the message in the chat.
502
+ */
503
+ export const ChatMessageSearchModal: React.FC<MessageSearchModalProps> = () => {
504
+ const dispatch = useDispatch();
505
+ return (
506
+ <MessageSearchModal
507
+ chatOnly
508
+ handleCloseModal={() => dispatch(setActiveModal(MODAL_TYPES.CHAT_PROFILE))}
509
+ />
510
+ );
511
+ };
512
+
487
513
  export default MessageSearchModal;
@@ -33,7 +33,6 @@ import { useTheme } from '../../../hooks/useTheme';
33
33
  import type { ChatTheme } from '../../../theme/theme';
34
34
  import { chatTextStyle } from '../../../helpers/typography';
35
35
  import { getElementFont } from '../../../helpers/getElementFont';
36
- import { LANGUAGE_OPTIONS } from '../../../helpers/constants/LANGUAGE_OPTIONS';
37
36
  import { MODAL_TYPES } from '../../../helpers/constants/MODAL_TYPES';
38
37
  import {
39
38
  setActiveFile,
@@ -44,7 +43,6 @@ import { runLogoutFlow } from '../../Menu/HeaderRoomListMenu';
44
43
  import { useLogout } from '../../../hooks/useLogout';
45
44
  import {
46
45
  ApiRoom,
47
- createChatCall,
48
46
  ownAppId,
49
47
  postPrivateRoom,
50
48
  } from '../../../networking/api-requests/rooms.api';
@@ -53,9 +51,14 @@ import { useSelector } from 'react-redux';
53
51
  import { store, type RootState } from '../../../roomStore';
54
52
  import { setCallError, startOutgoingCall } from '../../../roomStore/callSlice';
55
53
  import { sendCallInviteSignal } from '../../../networking/callTokenStanza';
54
+ import { requestOutgoingCall } from '../../../calls/startCall';
55
+ import { isCallRoomTypeAllowed } from '../../../calls/callMode';
56
56
  import { AudioCallIcon, VideoCallIcon } from '../../VideoCalls/CallIcons';
57
57
  import { accountNameOf } from '../../../helpers/accountName';
58
- import { setChatLanguage } from '../../../services/languageSettings';
58
+ import {
59
+ chatLanguageChoices,
60
+ setChatLanguage,
61
+ } from '../../../services/languageSettings';
59
62
  import { composeName } from '../../../helpers/displayName';
60
63
  import { isUnresolvedSenderId } from '../../../helpers/isUnresolvedSenderId';
61
64
 
@@ -158,15 +161,26 @@ const UserProfileModal: React.FC<UserProfileModalProps> = ({
158
161
  [files]
159
162
  );
160
163
 
164
+ // The install's translateLanguages (get-config) when the host passed
165
+ // them; none means no translation server, so no Language tab.
166
+ const languageChoices = useMemo(() => chatLanguageChoices(config), [config]);
167
+
161
168
  const tabs = useMemo(
162
169
  () =>
163
170
  profileTabs({
164
171
  isOwnProfile,
165
- translatesEnabled: !!config?.translates?.enabled,
172
+ translatesEnabled:
173
+ !!config?.translates?.enabled && languageChoices.length > 0,
166
174
  hasMedia: media.length > 0,
167
175
  hasDocuments: documents.length > 0,
168
176
  }),
169
- [isOwnProfile, config?.translates?.enabled, media.length, documents.length]
177
+ [
178
+ isOwnProfile,
179
+ config?.translates?.enabled,
180
+ languageChoices.length,
181
+ media.length,
182
+ documents.length,
183
+ ]
170
184
  );
171
185
 
172
186
  // Keep the selected tab valid as the lists load in.
@@ -366,7 +380,7 @@ const UserProfileModal: React.FC<UserProfileModalProps> = ({
366
380
  const canCall =
367
381
  videoCallsConfig?.enabled === true &&
368
382
  Boolean(videoCallsConfig?.livekitUrl?.trim()) &&
369
- (videoCallsConfig?.allowedRoomTypes || ['private']).includes('private');
383
+ isCallRoomTypeAllowed('private', videoCallsConfig?.allowedRoomTypes);
370
384
  const isAudioCallsEnabled = canCall && videoCallsConfig?.enableAudioCalls === true;
371
385
  const isCallBusy = useSelector((state: RootState) => state.call.phase !== 'idle');
372
386
 
@@ -403,7 +417,11 @@ const UserProfileModal: React.FC<UserProfileModalProps> = ({
403
417
  dispatch(setActiveModal(undefined));
404
418
 
405
419
  try {
406
- await createChatCall(room.bareName, { kind });
420
+ await requestOutgoingCall({
421
+ chatName: room.bareName,
422
+ kind,
423
+ peerXmppUsername: room.peerXmppUsername || null,
424
+ });
407
425
  } catch (error) {
408
426
  dispatch(
409
427
  setCallError(
@@ -556,8 +574,9 @@ const UserProfileModal: React.FC<UserProfileModalProps> = ({
556
574
  if (activeTab === 'language') {
557
575
  return (
558
576
  <View>
559
- {LANGUAGE_OPTIONS.map((option) => {
560
- const selected = langSource === option.id;
577
+ {languageChoices.map((option) => {
578
+ const selected =
579
+ String(langSource || '').toLowerCase() === option.id.toLowerCase();
561
580
  return (
562
581
  <TouchableOpacity
563
582
  key={option.id}
@@ -94,13 +94,15 @@ const LanguageCard: React.FC<LanguageCardProps> = ({ style, testID }) => {
94
94
  appChoices,
95
95
  appCurrent
96
96
  )}
97
- {group(
98
- 'chat',
99
- t('settings.language.chat'),
100
- t('settings.language.chatHint'),
101
- chatChoices,
102
- chatCurrent
103
- )}
97
+ {/* No translate languages from get-config: no translation server. */}
98
+ {chatChoices.length > 0 &&
99
+ group(
100
+ 'chat',
101
+ t('settings.language.chat'),
102
+ t('settings.language.chatHint'),
103
+ chatChoices,
104
+ chatCurrent
105
+ )}
104
106
  </View>
105
107
  );
106
108
  };
@@ -9,6 +9,7 @@ import { useT } from '../../i18n/useT';
9
9
  import { ExpandIcon, HangUpIcon, MicOffIcon, MicOnIcon } from './CallIcons';
10
10
  import { toggleCallMic, useCallSession } from './callSessionController';
11
11
  import { terminateActiveCall } from './callActions';
12
+ import { callCanRenderSession } from './callLive';
12
13
  import {
13
14
  registerCallBarHost,
14
15
  setCallBarAnchor,
@@ -33,10 +34,8 @@ const CONTROL = 'rgba(255, 255, 255, 0.2)';
33
34
  /** True while a call is up and minimized, i.e. the strip should show. */
34
35
  const useShowCallBar = (): boolean => {
35
36
  const { minimized } = useCallUi();
36
- const active = useSelector(
37
- (state: RootState) =>
38
- !!state.call.token &&
39
- (state.call.phase === 'connecting' || state.call.phase === 'in-call')
37
+ const active = useSelector((state: RootState) =>
38
+ callCanRenderSession(state.call)
40
39
  );
41
40
  const { config } = useChatSettingState();
42
41
  return minimized && active && config?.videoCalls?.enabled === true;
@@ -62,7 +61,9 @@ export const ActiveCallBar: FC = () => {
62
61
  : !session.connected
63
62
  ? t('call.status.connecting')
64
63
  : !session.remoteJoined
65
- ? t('call.status.waitingForPeer')
64
+ ? session.isGroup
65
+ ? t('call.status.waitingForOthers')
66
+ : t('call.status.waitingForPeer')
66
67
  : t('call.status.inCall');
67
68
  const statusLine = session.remoteMicMuted
68
69
  ? `${status} · ${t('call.peerMuted', { name })}`
@@ -4,7 +4,8 @@ import { useDispatch, useSelector } from 'react-redux';
4
4
  import { RootState } from '../../roomStore';
5
5
  import { setCallError, startOutgoingCall } from '../../roomStore/callSlice';
6
6
  import { sendCallInviteSignal } from '../../networking/callTokenStanza';
7
- import { createChatCall } from '../../networking/api-requests/rooms.api';
7
+ import { requestOutgoingCall } from '../../calls/startCall';
8
+ import { isCallRoomTypeAllowed } from '../../calls/callMode';
8
9
  import { useChatSettingState } from '../../hooks/useChatSettingState';
9
10
  import { AudioCallIcon, VideoCallIcon } from './CallIcons';
10
11
  import { useT } from '../../i18n/useT';
@@ -19,7 +20,8 @@ import { getIconColor } from '../../helpers/getIconColor';
19
20
  * calls are off, which is the common case.
20
21
  *
21
22
  * Gating mirrors the web rules: calls need `config.videoCalls.enabled`, a
22
- * `livekitUrl`, a 1:1 (private) room, and no other call already running.
23
+ * `livekitUrl`, a 1:1 (private) or members-only group room (subject to
24
+ * `allowedRoomTypes`, default both), and no other call already running.
23
25
  * Audio is a second opt-in on top of that (`enableAudioCalls`).
24
26
  */
25
27
  export const CallButtons: FC = () => {
@@ -33,10 +35,14 @@ export const CallButtons: FC = () => {
33
35
  });
34
36
 
35
37
  const videoCallsConfig = config?.videoCalls;
36
- const allowedRoomTypes = videoCallsConfig?.allowedRoomTypes || ['private'];
37
38
  const isVideoCallsEnabled = videoCallsConfig?.enabled === true;
38
- const isPrivateRoom = currentRoom?.type === 'private';
39
- const isRoomAllowed = isPrivateRoom && allowedRoomTypes.includes('private');
39
+ const isGroupRoom = currentRoom?.type === 'group';
40
+ // 1:1 chats and members-only group chats can call, subject to the host's
41
+ // videoCalls.allowedRoomTypes (default: both). Public rooms never do.
42
+ const isRoomAllowed = isCallRoomTypeAllowed(
43
+ currentRoom?.type,
44
+ videoCallsConfig?.allowedRoomTypes
45
+ );
40
46
  const hasLivekitUrl = Boolean(videoCallsConfig?.livekitUrl?.trim());
41
47
  const isCallBusy = call.phase !== 'idle';
42
48
  const canCall = isVideoCallsEnabled && isRoomAllowed && hasLivekitUrl;
@@ -60,12 +66,16 @@ export const CallButtons: FC = () => {
60
66
  if (!chatName) {return;}
61
67
 
62
68
  // Resolve the peer xmpp localpart so we can XMPP-signal them when we
63
- // hang up or cancel, without this they'd keep ringing forever.
69
+ // hang up or cancel, without this they'd keep ringing forever. A group
70
+ // call has no single peer to signal; the server rings every member and
71
+ // LiveKit carries the call.
64
72
  const selfLocal = String(user?.xmppUsername || '').split('@')[0];
65
- const peer = (currentRoom.members || []).find((member: any) => {
66
- const mLocal = String(member?.xmppUsername || '').split('@')[0];
67
- return mLocal && mLocal !== selfLocal;
68
- });
73
+ const peer = isGroupRoom
74
+ ? undefined
75
+ : (currentRoom.members || []).find((member: any) => {
76
+ const mLocal = String(member?.xmppUsername || '').split('@')[0];
77
+ return mLocal && mLocal !== selfLocal;
78
+ });
69
79
  const peerXmppUsername = peer?.xmppUsername || null;
70
80
 
71
81
  // Don't show "deleted" / "Deleted User" / "Unknown" as the dial
@@ -96,6 +106,7 @@ export const CallButtons: FC = () => {
96
106
  roomBareName: chatName,
97
107
  kind,
98
108
  peerXmppUsername,
109
+ isGroup: isGroupRoom,
99
110
  })
100
111
  );
101
112
 
@@ -111,7 +122,7 @@ export const CallButtons: FC = () => {
111
122
  }
112
123
 
113
124
  try {
114
- await createChatCall(chatName, { kind });
125
+ await requestOutgoingCall({ chatName, kind, peerXmppUsername });
115
126
  } catch (error) {
116
127
  const message =
117
128
  error instanceof Error
@@ -120,7 +131,7 @@ export const CallButtons: FC = () => {
120
131
  dispatch(setCallError(message));
121
132
  }
122
133
  },
123
- [canCall, isCallBusy, currentRoom, user?.xmppUsername, dispatch, t]
134
+ [canCall, isCallBusy, currentRoom, isGroupRoom, user?.xmppUsername, dispatch, t]
124
135
  );
125
136
 
126
137
  if (!canCall || isCallBusy) {