@ethora/chat-component-rn 26.5.21 → 26.6.10

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 (352) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +3 -3
  3. package/index.js +1 -1
  4. package/lib/commonjs/components/MainComponents/ChatHeader.js +20 -8
  5. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  6. package/lib/commonjs/components/MainComponents/ChatWrapper.js +17 -0
  7. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  8. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js +62 -0
  9. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js.map +1 -0
  10. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +253 -0
  11. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -0
  12. package/lib/commonjs/components/MainComponents/RoomList.js +23 -9
  13. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  14. package/lib/commonjs/components/MessageBubble/Message.js +72 -11
  15. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  16. package/lib/commonjs/components/MessageBubble/MessageTranslate.js +160 -0
  17. package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -0
  18. package/lib/commonjs/components/MessageBubble/TranslatedMessageBody.js +59 -0
  19. package/lib/commonjs/components/MessageBubble/TranslatedMessageBody.js.map +1 -0
  20. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +3 -3
  21. package/lib/commonjs/components/UsersList/UsersList.js +3 -1
  22. package/lib/commonjs/components/UsersList/UsersList.js.map +1 -1
  23. package/lib/commonjs/components/VideoCalls/CallButtons.js +159 -0
  24. package/lib/commonjs/components/VideoCalls/CallButtons.js.map +1 -0
  25. package/lib/commonjs/components/VideoCalls/CallIcons.js +328 -0
  26. package/lib/commonjs/components/VideoCalls/CallIcons.js.map +1 -0
  27. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +550 -0
  28. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -0
  29. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +636 -0
  30. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -0
  31. package/lib/commonjs/components/VideoCalls/livekitRuntime.js +91 -0
  32. package/lib/commonjs/components/VideoCalls/livekitRuntime.js.map +1 -0
  33. package/lib/commonjs/components/VideoCalls/useCallKeep.js +215 -0
  34. package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -0
  35. package/lib/commonjs/components/styled/AudioMessage.js +91 -33
  36. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  37. package/lib/commonjs/components/styled/RoomListComponents/index.js +13 -1
  38. package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
  39. package/lib/commonjs/components/styled/SendInput.js +83 -49
  40. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  41. package/lib/commonjs/components/styled/StyledComponents.js +9 -4
  42. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  43. package/lib/commonjs/components/styled/StyledInputComponents/Composing.js +2 -0
  44. package/lib/commonjs/components/styled/StyledInputComponents/Composing.js.map +1 -1
  45. package/lib/commonjs/context/xmppProvider.js +10 -3
  46. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  47. package/lib/commonjs/helpers/callLogMessage.js +162 -0
  48. package/lib/commonjs/helpers/callLogMessage.js.map +1 -0
  49. package/lib/commonjs/helpers/callPush.js +61 -0
  50. package/lib/commonjs/helpers/callPush.js.map +1 -0
  51. package/lib/commonjs/helpers/constants/LANGUAGE_OPTIONS.js +24 -12
  52. package/lib/commonjs/helpers/constants/LANGUAGE_OPTIONS.js.map +1 -1
  53. package/lib/commonjs/helpers/createUserNameFromSetUser.js +51 -2
  54. package/lib/commonjs/helpers/createUserNameFromSetUser.js.map +1 -1
  55. package/lib/commonjs/helpers/getDataFromXml.js +19 -1
  56. package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
  57. package/lib/commonjs/helpers/incomingCallFromPush.js +74 -0
  58. package/lib/commonjs/helpers/incomingCallFromPush.js.map +1 -0
  59. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -1
  60. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  61. package/lib/commonjs/helpers/isUnresolvedSenderId.js +32 -0
  62. package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -0
  63. package/lib/commonjs/hooks/useChatSettingState.js +2 -0
  64. package/lib/commonjs/hooks/useChatSettingState.js.map +1 -1
  65. package/lib/commonjs/hooks/useMessageTranslation.js +51 -0
  66. package/lib/commonjs/hooks/useMessageTranslation.js.map +1 -0
  67. package/lib/commonjs/hooks/usePushNotifications.js +13 -3
  68. package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
  69. package/lib/commonjs/hooks/useSendMessage.js +12 -2
  70. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  71. package/lib/commonjs/i18n/strings.js +1308 -0
  72. package/lib/commonjs/i18n/strings.js.map +1 -0
  73. package/lib/commonjs/i18n/useT.js +60 -0
  74. package/lib/commonjs/i18n/useT.js.map +1 -0
  75. package/lib/commonjs/main.js +44 -0
  76. package/lib/commonjs/main.js.map +1 -1
  77. package/lib/commonjs/networking/api-requests/push.api.js +34 -5
  78. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  79. package/lib/commonjs/networking/api-requests/rooms.api.js +108 -0
  80. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  81. package/lib/commonjs/networking/callTokenStanza.js +531 -0
  82. package/lib/commonjs/networking/callTokenStanza.js.map +1 -0
  83. package/lib/commonjs/networking/outboundQueue.js.map +1 -1
  84. package/lib/commonjs/networking/stanzaHandlers.js +75 -8
  85. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  86. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +47 -11
  87. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  88. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  89. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  90. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +42 -5
  91. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  92. package/lib/commonjs/networking/xmppClient.js +78 -16
  93. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  94. package/lib/commonjs/roomStore/callSlice.js +144 -0
  95. package/lib/commonjs/roomStore/callSlice.js.map +1 -0
  96. package/lib/commonjs/roomStore/chatSettingsSlice.js +8 -2
  97. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  98. package/lib/commonjs/roomStore/index.js +7 -1
  99. package/lib/commonjs/roomStore/index.js.map +1 -1
  100. package/lib/commonjs/roomStore/persistence.js +69 -5
  101. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  102. package/lib/commonjs/roomStore/roomsSlice.js +136 -6
  103. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  104. package/lib/commonjs/utils/translateModePolicy.js +33 -0
  105. package/lib/commonjs/utils/translateModePolicy.js.map +1 -0
  106. package/lib/module/components/MainComponents/ChatHeader.js +20 -8
  107. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  108. package/lib/module/components/MainComponents/ChatWrapper.js +17 -0
  109. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  110. package/lib/module/components/MainComponents/LanguageSelectorButton.js +57 -0
  111. package/lib/module/components/MainComponents/LanguageSelectorButton.js.map +1 -0
  112. package/lib/module/components/MainComponents/LanguageSelectorModal.js +246 -0
  113. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -0
  114. package/lib/module/components/MainComponents/RoomList.js +23 -9
  115. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  116. package/lib/module/components/MessageBubble/Message.js +73 -12
  117. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  118. package/lib/module/components/MessageBubble/MessageTranslate.js +155 -0
  119. package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -0
  120. package/lib/module/components/MessageBubble/TranslatedMessageBody.js +53 -0
  121. package/lib/module/components/MessageBubble/TranslatedMessageBody.js.map +1 -0
  122. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +3 -3
  123. package/lib/module/components/UsersList/UsersList.js +3 -1
  124. package/lib/module/components/UsersList/UsersList.js.map +1 -1
  125. package/lib/module/components/VideoCalls/CallButtons.js +154 -0
  126. package/lib/module/components/VideoCalls/CallButtons.js.map +1 -0
  127. package/lib/module/components/VideoCalls/CallIcons.js +309 -0
  128. package/lib/module/components/VideoCalls/CallIcons.js.map +1 -0
  129. package/lib/module/components/VideoCalls/VideoCallOverlay.js +544 -0
  130. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -0
  131. package/lib/module/components/VideoCalls/VideoCallSession.js +630 -0
  132. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -0
  133. package/lib/module/components/VideoCalls/livekitRuntime.js +83 -0
  134. package/lib/module/components/VideoCalls/livekitRuntime.js.map +1 -0
  135. package/lib/module/components/VideoCalls/useCallKeep.js +210 -0
  136. package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -0
  137. package/lib/module/components/styled/AudioMessage.js +91 -33
  138. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  139. package/lib/module/components/styled/RoomListComponents/index.js +13 -1
  140. package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
  141. package/lib/module/components/styled/SendInput.js +83 -49
  142. package/lib/module/components/styled/SendInput.js.map +1 -1
  143. package/lib/module/components/styled/StyledComponents.js +9 -4
  144. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  145. package/lib/module/components/styled/StyledInputComponents/Composing.js +2 -0
  146. package/lib/module/components/styled/StyledInputComponents/Composing.js.map +1 -1
  147. package/lib/module/context/xmppProvider.js +11 -4
  148. package/lib/module/context/xmppProvider.js.map +1 -1
  149. package/lib/module/helpers/callLogMessage.js +152 -0
  150. package/lib/module/helpers/callLogMessage.js.map +1 -0
  151. package/lib/module/helpers/callPush.js +55 -0
  152. package/lib/module/helpers/callPush.js.map +1 -0
  153. package/lib/module/helpers/constants/LANGUAGE_OPTIONS.js +24 -12
  154. package/lib/module/helpers/constants/LANGUAGE_OPTIONS.js.map +1 -1
  155. package/lib/module/helpers/createUserNameFromSetUser.js +49 -1
  156. package/lib/module/helpers/createUserNameFromSetUser.js.map +1 -1
  157. package/lib/module/helpers/getDataFromXml.js +20 -1
  158. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  159. package/lib/module/helpers/incomingCallFromPush.js +70 -0
  160. package/lib/module/helpers/incomingCallFromPush.js.map +1 -0
  161. package/lib/module/helpers/insertMessageWithDelimiter.js +13 -1
  162. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  163. package/lib/module/helpers/isUnresolvedSenderId.js +27 -0
  164. package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -0
  165. package/lib/module/hooks/useChatSettingState.js +2 -0
  166. package/lib/module/hooks/useChatSettingState.js.map +1 -1
  167. package/lib/module/hooks/useMessageTranslation.js +46 -0
  168. package/lib/module/hooks/useMessageTranslation.js.map +1 -0
  169. package/lib/module/hooks/usePushNotifications.js +13 -3
  170. package/lib/module/hooks/usePushNotifications.js.map +1 -1
  171. package/lib/module/hooks/useSendMessage.js +12 -2
  172. package/lib/module/hooks/useSendMessage.js.map +1 -1
  173. package/lib/module/i18n/strings.js +1300 -0
  174. package/lib/module/i18n/strings.js.map +1 -0
  175. package/lib/module/i18n/useT.js +55 -0
  176. package/lib/module/i18n/useT.js.map +1 -0
  177. package/lib/module/main.js +7 -1
  178. package/lib/module/main.js.map +1 -1
  179. package/lib/module/networking/api-requests/push.api.js +35 -5
  180. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  181. package/lib/module/networking/api-requests/rooms.api.js +109 -1
  182. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  183. package/lib/module/networking/callTokenStanza.js +526 -0
  184. package/lib/module/networking/callTokenStanza.js.map +1 -0
  185. package/lib/module/networking/outboundQueue.js.map +1 -1
  186. package/lib/module/networking/stanzaHandlers.js +76 -9
  187. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  188. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +48 -11
  189. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  190. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +1 -1
  191. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  192. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +43 -5
  193. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  194. package/lib/module/networking/xmppClient.js +78 -16
  195. package/lib/module/networking/xmppClient.js.map +1 -1
  196. package/lib/module/roomStore/callSlice.js +130 -0
  197. package/lib/module/roomStore/callSlice.js.map +1 -0
  198. package/lib/module/roomStore/chatSettingsSlice.js +6 -1
  199. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  200. package/lib/module/roomStore/index.js +6 -1
  201. package/lib/module/roomStore/index.js.map +1 -1
  202. package/lib/module/roomStore/persistence.js +69 -5
  203. package/lib/module/roomStore/persistence.js.map +1 -1
  204. package/lib/module/roomStore/roomsSlice.js +134 -5
  205. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  206. package/lib/module/utils/translateModePolicy.js +27 -0
  207. package/lib/module/utils/translateModePolicy.js.map +1 -0
  208. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  209. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  210. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts +12 -0
  211. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts.map +1 -0
  212. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts +31 -0
  213. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -0
  214. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  215. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  216. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts +44 -0
  217. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -0
  218. package/lib/typescript/components/MessageBubble/TranslatedMessageBody.d.ts +24 -0
  219. package/lib/typescript/components/MessageBubble/TranslatedMessageBody.d.ts.map +1 -0
  220. package/lib/typescript/components/UsersList/UsersList.d.ts.map +1 -1
  221. package/lib/typescript/components/VideoCalls/CallButtons.d.ts +16 -0
  222. package/lib/typescript/components/VideoCalls/CallButtons.d.ts.map +1 -0
  223. package/lib/typescript/components/VideoCalls/CallIcons.d.ts +30 -0
  224. package/lib/typescript/components/VideoCalls/CallIcons.d.ts.map +1 -0
  225. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts +10 -0
  226. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -0
  227. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts +38 -0
  228. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -0
  229. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts +52 -0
  230. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts.map +1 -0
  231. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts +32 -0
  232. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -0
  233. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  234. package/lib/typescript/components/styled/RoomListComponents/index.d.ts.map +1 -1
  235. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  236. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  237. package/lib/typescript/components/styled/StyledInputComponents/Composing.d.ts.map +1 -1
  238. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  239. package/lib/typescript/helpers/callLogMessage.d.ts +34 -0
  240. package/lib/typescript/helpers/callLogMessage.d.ts.map +1 -0
  241. package/lib/typescript/helpers/callPush.d.ts +23 -0
  242. package/lib/typescript/helpers/callPush.d.ts.map +1 -0
  243. package/lib/typescript/helpers/constants/LANGUAGE_OPTIONS.d.ts +14 -0
  244. package/lib/typescript/helpers/constants/LANGUAGE_OPTIONS.d.ts.map +1 -1
  245. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts +33 -1
  246. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts.map +1 -1
  247. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  248. package/lib/typescript/helpers/incomingCallFromPush.d.ts +14 -0
  249. package/lib/typescript/helpers/incomingCallFromPush.d.ts.map +1 -0
  250. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  251. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts +2 -0
  252. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -0
  253. package/lib/typescript/hooks/useChatSettingState.d.ts +2 -1
  254. package/lib/typescript/hooks/useChatSettingState.d.ts.map +1 -1
  255. package/lib/typescript/hooks/useMessageTranslation.d.ts +25 -0
  256. package/lib/typescript/hooks/useMessageTranslation.d.ts.map +1 -0
  257. package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
  258. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  259. package/lib/typescript/i18n/strings.d.ts +16 -0
  260. package/lib/typescript/i18n/strings.d.ts.map +1 -0
  261. package/lib/typescript/i18n/useT.d.ts +34 -0
  262. package/lib/typescript/i18n/useT.d.ts.map +1 -0
  263. package/lib/typescript/main.d.ts +6 -1
  264. package/lib/typescript/main.d.ts.map +1 -1
  265. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  266. package/lib/typescript/networking/api-requests/rooms.api.d.ts +3 -0
  267. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  268. package/lib/typescript/networking/callTokenStanza.d.ts +14 -0
  269. package/lib/typescript/networking/callTokenStanza.d.ts.map +1 -0
  270. package/lib/typescript/networking/outboundQueue.d.ts +1 -0
  271. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -1
  272. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  273. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  274. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts +10 -0
  275. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  276. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts +16 -1
  277. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts.map +1 -1
  278. package/lib/typescript/networking/xmppClient.d.ts +1 -1
  279. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  280. package/lib/typescript/roomStore/callSlice.d.ts +39 -0
  281. package/lib/typescript/roomStore/callSlice.d.ts.map +1 -0
  282. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +10 -1
  283. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  284. package/lib/typescript/roomStore/index.d.ts +4 -0
  285. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  286. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  287. package/lib/typescript/roomStore/roomsSlice.d.ts +6 -1
  288. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  289. package/lib/typescript/types/models/language.model.d.ts +1 -1
  290. package/lib/typescript/types/models/language.model.d.ts.map +1 -1
  291. package/lib/typescript/types/models/message.model.d.ts +7 -0
  292. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  293. package/lib/typescript/types/types.d.ts +135 -1
  294. package/lib/typescript/types/types.d.ts.map +1 -1
  295. package/lib/typescript/utils/translateModePolicy.d.ts +20 -0
  296. package/lib/typescript/utils/translateModePolicy.d.ts.map +1 -0
  297. package/package.json +20 -4
  298. package/src/components/MainComponents/ChatHeader.tsx +30 -9
  299. package/src/components/MainComponents/ChatWrapper.tsx +15 -0
  300. package/src/components/MainComponents/LanguageSelectorButton.tsx +53 -0
  301. package/src/components/MainComponents/LanguageSelectorModal.tsx +276 -0
  302. package/src/components/MainComponents/RoomList.tsx +27 -9
  303. package/src/components/MessageBubble/Message.tsx +109 -17
  304. package/src/components/MessageBubble/MessageTranslate.tsx +182 -0
  305. package/src/components/MessageBubble/TranslatedMessageBody.tsx +59 -0
  306. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +3 -3
  307. package/src/components/UsersList/UsersList.tsx +3 -1
  308. package/src/components/VideoCalls/CallButtons.tsx +171 -0
  309. package/src/components/VideoCalls/CallIcons.tsx +246 -0
  310. package/src/components/VideoCalls/VideoCallOverlay.tsx +627 -0
  311. package/src/components/VideoCalls/VideoCallSession.tsx +675 -0
  312. package/src/components/VideoCalls/livekitRuntime.ts +100 -0
  313. package/src/components/VideoCalls/useCallKeep.ts +252 -0
  314. package/src/components/styled/AudioMessage.tsx +97 -37
  315. package/src/components/styled/RoomListComponents/index.tsx +15 -3
  316. package/src/components/styled/SendInput.tsx +94 -51
  317. package/src/components/styled/StyledComponents.ts +9 -6
  318. package/src/components/styled/StyledInputComponents/Composing.tsx +7 -1
  319. package/src/context/xmppProvider.tsx +14 -1
  320. package/src/helpers/callLogMessage.ts +174 -0
  321. package/src/helpers/callPush.ts +90 -0
  322. package/src/helpers/constants/LANGUAGE_OPTIONS.ts +20 -5
  323. package/src/helpers/createUserNameFromSetUser.ts +68 -2
  324. package/src/helpers/getDataFromXml.ts +40 -4
  325. package/src/helpers/incomingCallFromPush.ts +83 -0
  326. package/src/helpers/insertMessageWithDelimiter.ts +27 -9
  327. package/src/helpers/isUnresolvedSenderId.ts +25 -0
  328. package/src/hooks/useChatSettingState.tsx +4 -0
  329. package/src/hooks/useMessageTranslation.ts +70 -0
  330. package/src/hooks/usePushNotifications.ts +15 -3
  331. package/src/hooks/useSendMessage.tsx +15 -2
  332. package/src/i18n/strings.ts +1322 -0
  333. package/src/i18n/useT.ts +56 -0
  334. package/src/main.ts +18 -1
  335. package/src/networking/api-requests/push.api.ts +39 -8
  336. package/src/networking/api-requests/rooms.api.ts +109 -1
  337. package/src/networking/callTokenStanza.ts +636 -0
  338. package/src/networking/outboundQueue.ts +1 -0
  339. package/src/networking/stanzaHandlers.ts +74 -15
  340. package/src/networking/xmpp/handleStanzas.xmpp.ts +52 -11
  341. package/src/networking/xmpp/sendTextMessage.xmpp.ts +1 -1
  342. package/src/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.ts +41 -5
  343. package/src/networking/xmppClient.ts +97 -28
  344. package/src/roomStore/callSlice.ts +190 -0
  345. package/src/roomStore/chatSettingsSlice.ts +16 -0
  346. package/src/roomStore/index.ts +5 -0
  347. package/src/roomStore/persistence.ts +103 -3
  348. package/src/roomStore/roomsSlice.ts +149 -4
  349. package/src/types/models/language.model.ts +17 -1
  350. package/src/types/models/message.model.ts +9 -0
  351. package/src/types/types.ts +142 -2
  352. package/src/utils/translateModePolicy.ts +31 -0
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","AppState","DeviceEventEmitter","NetInfo","XmppClient","refreshTokens","buildXmppClientKey","getGlobalXmppClient","getReusableXmppClientByKey","isXmppClientReusable","setGlobalXmppClient","withXmppClientInitLock","applyResolvedUserToStore","refreshUserCredentialsForXmpp","resolveInitBeforeLoadUser","ensureScopedChatCache","getRooms","prefetchRoomsViaRest","allRoomPresences","store","logout","setStoreClient","setConfig","setLogoutState","setVisibleRoom","clearVisibleRoom","setLastViewedTimestamp","deleteRoomMessage","msgSortableMs","setUnreadSyncing","runHistoryPreloadScheduler","asyncLocalStorage","localStorageConstants","clearPersistedState","pushLog","devPushLog","jsx","_jsx","XmppContext","LOGOUT_EVENT","XmppProvider","children","config","isVisible","client","setClient","providerBootstrapStatus","setProviderBootstrapStatus","initMode","initBeforeLoad","lastCredsRef","completedBootstrapKeyRef","inflightBootstrapKeyRef","credentialsProvider","customRefresh","refreshFunction","result","accessToken","dispatch","token","refreshToken","err","fresh","catch","username","xmppUsername","defaultWallet","walletAddress","password","xmppPassword","u","getState","chatSettingStore","user","jwtLogin","enabled","userLogin","customLogin","initBeforeLoadAuth","myEndpoint","initializeClient","xmppSettings","settings","key","reusable","current","created","prevGlobal","close","newClient","setCredentialsProvider","waitForOnline","console","error","setOnOnline","underlying","e","getChatsPrivateStoreRequestStanza","abortController","AbortController","cancelled","MAX_BOOTSTRAP_ATTEMPTS","bootstrapAttempt","BOOTSTRAP_BUDGET_MS","reachedReady","budgetTimer","setTimeout","abort","clearBudget","clearTimeout","run","explicitUser","appId","baseUrl","devServer","join","mode","clearStoreBeforeInit","ETHORA_USER","remove","undefined","resolved","signal","hasResolved","xmppPasswordPresent","restRoomsPromise","c","getRoomsStanza","roomCount","Object","keys","rooms","length","qos","historyQoS","activeRoomJID","defaultRoomJids","defaultRooms","map","r","jid","filter","Boolean","selectedRoomJid","concurrency","stagedPreloadConcurrency","pageSize","stagedPreloadFirstPassSize","roomLimit","preloadTopKRooms","warn","aborted","backoff","Math","min","message","status","response","data","id","setInterval","currentState","suppressReconnect","forceReconnect","ensureStreamAlive","clearInterval","visibleBeforeBackground","sub","addEventListener","next","roomJID","state","visibleRoomJID","chatJID","timestamp","Date","now","messageId","flushLastViewedToPrivateStoreStanza","chatWasVisibleRef","wasVisible","lastMessagesRef","lastStampedMs","flushTimer","advance","s","room","messages","newest","list","m","ms","unsub","subscribe","reachable","isConnected","isInternetReachable","addListener","disconnect","Provider","value","useXmppClient","context","Error","candidates","live","find","emitXmppLogout","emit"],"sourceRoot":"../../../src","sources":["context/xmppProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","AppState","DeviceEventEmitter","NetInfo","VideoCallOverlay","XmppClient","refreshTokens","buildXmppClientKey","getGlobalXmppClient","getReusableXmppClientByKey","isXmppClientReusable","setGlobalXmppClient","withXmppClientInitLock","applyResolvedUserToStore","refreshUserCredentialsForXmpp","resolveInitBeforeLoadUser","ensureScopedChatCache","getRooms","prefetchRoomsViaRest","allRoomPresences","store","logout","setStoreClient","setConfig","setLogoutState","setVisibleRoom","clearVisibleRoom","setLastViewedTimestamp","deleteRoomMessage","msgSortableMs","setUnreadSyncing","runHistoryPreloadScheduler","asyncLocalStorage","localStorageConstants","clearPersistedState","pushLog","devPushLog","jsx","_jsx","jsxs","_jsxs","XmppContext","LOGOUT_EVENT","XmppProvider","children","config","isVisible","client","setClient","providerBootstrapStatus","setProviderBootstrapStatus","initMode","initBeforeLoad","lastCredsRef","completedBootstrapKeyRef","inflightBootstrapKeyRef","credentialsProvider","customRefresh","refreshFunction","result","accessToken","dispatch","token","refreshToken","err","fresh","catch","username","xmppUsername","defaultWallet","walletAddress","password","xmppPassword","u","getState","chatSettingStore","user","jwtLogin","enabled","userLogin","customLogin","initBeforeLoadAuth","myEndpoint","initializeClient","xmppSettings","settings","key","reusable","current","created","prevGlobal","close","newClient","setCredentialsProvider","waitForOnline","console","error","setOnOnline","underlying","e","getChatsPrivateStoreRequestStanza","abortController","AbortController","cancelled","MAX_BOOTSTRAP_ATTEMPTS","bootstrapAttempt","BOOTSTRAP_BUDGET_MS","reachedReady","budgetTimer","setTimeout","abort","clearBudget","clearTimeout","run","explicitUser","appId","baseUrl","devServer","join","mode","clearStoreBeforeInit","ETHORA_USER","remove","undefined","resolved","signal","hasResolved","xmppPasswordPresent","restRoomsPromise","c","getRoomsStanza","roomCount","Object","keys","rooms","length","qos","historyQoS","activeRoomJID","defaultRoomJids","defaultRooms","map","r","jid","filter","Boolean","selectedRoomJid","concurrency","stagedPreloadConcurrency","pageSize","stagedPreloadFirstPassSize","roomLimit","preloadTopKRooms","warn","aborted","backoff","Math","min","message","status","response","data","id","setInterval","currentState","suppressReconnect","forceReconnect","ensureStreamAlive","clearInterval","visibleBeforeBackground","sub","addEventListener","next","roomJID","state","visibleRoomJID","chatJID","timestamp","Date","now","messageId","flushLastViewedToPrivateStoreStanza","chatWasVisibleRef","wasVisible","lastMessagesRef","lastStampedMs","flushTimer","advance","s","room","messages","newest","list","m","ms","unsub","subscribe","reachable","isConnected","isInternetReachable","addListener","disconnect","Provider","value","useXmppClient","context","Error","candidates","live","find","emitXmppLogout","emit"],"sourceRoot":"../../../src","sources":["context/xmppProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ // A server "call-state" stanza is emitted into the room when a call session
4
+ // concludes (someone leaves the LiveKit room). It carries:
5
+ // type="call-state" callId="..." durationMs="<ms>"
6
+ // callerXmppUsername="<who started the call>" isSystemMessage="true"
7
+ // We turn it into a friendly chat-log entry, Telegram/WhatsApp style:
8
+ // - durationMs > 0 -> "Outgoing call · 12 sec" / "Incoming call · 1 min"
9
+ // - durationMs == 0 -> "No answer" (we called) / "Missed call" (they called)
10
+ // Direction is derived from callerXmppUsername vs the logged-in user.
11
+
12
+ export const isCallLogMessage = message => {
13
+ const type = String(message?.type || '').toLowerCase();
14
+ return type === 'call-state';
15
+ };
16
+
17
+ // Only a call-state that actually carries log metadata (a caller and/or a
18
+ // duration) is worth rendering. Bare client-side signaling frames
19
+ // (state=cancelled/declined/ended with no caller/duration) must NOT become
20
+ // chat entries, they're real-time teardown only.
21
+ export const callStateHasLogData = attrs => {
22
+ if (!attrs) {
23
+ return false;
24
+ }
25
+ const hasCaller = !!String(attrs.callerXmppUsername || '').trim();
26
+ const hasDuration = attrs.durationMs !== undefined && attrs.durationMs !== null && attrs.durationMs !== '';
27
+ return hasCaller || hasDuration;
28
+ };
29
+ export const formatCallDuration = ms => {
30
+ const totalSeconds = Math.max(0, Math.round(ms / 1000));
31
+ if (totalSeconds < 60) {
32
+ return `${totalSeconds} sec`;
33
+ }
34
+ const minutes = Math.floor(totalSeconds / 60);
35
+ const seconds = totalSeconds % 60;
36
+ if (seconds === 0) {
37
+ return `${minutes} min`;
38
+ }
39
+ return `${minutes} min ${seconds} sec`;
40
+ };
41
+ export const transformCallLogMessage = (message, selfXmppUsername) => {
42
+ if (!isCallLogMessage(message)) {
43
+ return message;
44
+ }
45
+ const raw = message;
46
+ const callerLocal = String(raw.callerXmppUsername || '').split('@')[0].trim();
47
+ const selfLocal = String(selfXmppUsername || '').split('@')[0].trim();
48
+ // When we know the caller, "outgoing" means we started it. With no
49
+ // caller info, default to incoming (safer label than claiming we dialed).
50
+ const isOutgoing = !!callerLocal && callerLocal === selfLocal;
51
+ const durationMs = Number(raw.durationMs || 0);
52
+ const kind = String(raw.kind || '').toLowerCase() === 'audio' ? 'audio' : 'video';
53
+ let body;
54
+ if (durationMs > 0) {
55
+ body = `${isOutgoing ? 'Outgoing' : 'Incoming'} call · ${formatCallDuration(durationMs)}`;
56
+ } else {
57
+ body = isOutgoing ? 'No answer' : 'Missed call';
58
+ }
59
+ const callLog = {
60
+ callId: String(raw.callId || raw.callid || '').trim(),
61
+ direction: isOutgoing ? 'outgoing' : 'incoming',
62
+ durationMs,
63
+ missed: durationMs === 0,
64
+ kind
65
+ };
66
+ return {
67
+ ...message,
68
+ body,
69
+ // Render through the existing centered SystemMessage pipeline.
70
+ isSystemMessage: 'true',
71
+ callLog
72
+ };
73
+ };
74
+
75
+ // Build a "call ended" log entry locally (client-side) when a call finishes.
76
+ // The authoritative entry is a SERVER `call-state` broadcast, but that isn't
77
+ // guaranteed to arrive (see header comment). This fallback keeps the chat log
78
+ // working regardless. It's deduplicated against any server copy in
79
+ // `addRoomMessage` by `callLog.callId` (the entry with the largest duration
80
+ // wins), so if the server does broadcast, the two collapse into one.
81
+ export const buildLocalCallLogMessage = params => {
82
+ const {
83
+ callId,
84
+ direction,
85
+ durationMs,
86
+ kind,
87
+ selfXmppUsername
88
+ } = params;
89
+ const isOutgoing = direction === 'outgoing';
90
+ const safeDuration = Math.max(0, Math.round(durationMs || 0));
91
+ let body;
92
+ if (safeDuration > 0) {
93
+ body = `${isOutgoing ? 'Outgoing' : 'Incoming'} call · ${formatCallDuration(safeDuration)}`;
94
+ } else {
95
+ body = isOutgoing ? 'No answer' : 'Missed call';
96
+ }
97
+ const callLog = {
98
+ callId,
99
+ direction,
100
+ durationMs: safeDuration,
101
+ missed: safeDuration === 0,
102
+ kind
103
+ };
104
+ return {
105
+ // Deterministic id so a re-fire for the same call collapses in place.
106
+ id: callId ? `calllog-${callId}` : `calllog-${Date.now()}`,
107
+ body,
108
+ date: new Date().toISOString(),
109
+ isSystemMessage: 'true',
110
+ type: 'call-state',
111
+ callLog,
112
+ user: {
113
+ id: selfXmppUsername
114
+ }
115
+ };
116
+ };
117
+
118
+ /**
119
+ * The label for a call-log entry, built at RENDER time from the callLog
120
+ * meta rather than read off `message.body`.
121
+ *
122
+ * transformCallLogMessage bakes an English sentence into `body` the moment
123
+ * the stanza arrives, which freezes the language: switch to French and
124
+ * every call log you already received stays English forever, because the
125
+ * text is data by then, not a rendering. The meta (direction/duration/
126
+ * missed) is the actual fact, the sentence is a view of it, so it belongs
127
+ * where the view is. `body` stays as the fallback for entries received
128
+ * before this existed, and for the notification/room-list preview paths
129
+ * that only have the raw message.
130
+ */
131
+ export const formatCallLogLabel = (callLog, t, fallbackBody = '') => {
132
+ if (!callLog) {
133
+ return fallbackBody;
134
+ }
135
+ if (!callLog.durationMs || callLog.durationMs <= 0) {
136
+ return callLog.direction === 'outgoing' ? t('call.noAnswer') : t('call.missed');
137
+ }
138
+ const totalSeconds = Math.max(0, Math.round(callLog.durationMs / 1000));
139
+ const minutes = Math.floor(totalSeconds / 60);
140
+ const seconds = totalSeconds % 60;
141
+ const duration = totalSeconds < 60 ? t('call.durationSec', {
142
+ n: totalSeconds
143
+ }) : seconds === 0 ? t('call.durationMin', {
144
+ n: minutes
145
+ }) : t('call.durationMinSec', {
146
+ m: minutes,
147
+ s: seconds
148
+ });
149
+ const direction = callLog.direction === 'outgoing' ? t('call.outgoing') : t('call.incoming');
150
+ return `${direction} · ${duration}`;
151
+ };
152
+ //# sourceMappingURL=callLogMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isCallLogMessage","message","type","String","toLowerCase","callStateHasLogData","attrs","hasCaller","callerXmppUsername","trim","hasDuration","durationMs","undefined","formatCallDuration","ms","totalSeconds","Math","max","round","minutes","floor","seconds","transformCallLogMessage","selfXmppUsername","raw","callerLocal","split","selfLocal","isOutgoing","Number","kind","body","callLog","callId","callid","direction","missed","isSystemMessage","buildLocalCallLogMessage","params","safeDuration","id","Date","now","date","toISOString","user","formatCallLogLabel","t","fallbackBody","duration","n","m","s"],"sourceRoot":"../../../src","sources":["helpers/callLogMessage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ // Recognise and parse an *incoming call* push notification.
4
+ //
5
+ // Calls normally ring via a live XMPP `call-token` stanza, which only arrives
6
+ // while the socket is connected. On mobile the socket is dead whenever the OS
7
+ // backgrounds or kills the app, so the backend also delivers the call over
8
+ // push, in the same `data`-payload format as message pushes. This helper lets
9
+ // the push layer tell a call push apart from a chat push and pull the call
10
+ // fields out, tolerating the field-name variations backends tend to use.
11
+
12
+ const pick = (data, keys) => {
13
+ for (const k of keys) {
14
+ const v = data?.[k];
15
+ if (v !== undefined && v !== null && String(v).trim() !== '') {
16
+ return String(v).trim();
17
+ }
18
+ }
19
+ return '';
20
+ };
21
+
22
+ /**
23
+ * True when a push `data` payload represents an incoming call. Matches on an
24
+ * explicit call marker (`type`/`pushType`/`category`/`event` === "call"-ish)
25
+ * or on a callId paired with a call-specific field, so a normal message push
26
+ * is never misread as a call.
27
+ */
28
+ export const isCallPush = data => {
29
+ if (!data) {
30
+ return false;
31
+ }
32
+ const marker = pick(data, ['type', 'pushType', 'category', 'messageType', 'event']).toLowerCase();
33
+ if (marker === 'call' || marker === 'incoming-call' || marker === 'call-token' || marker === 'call-invite') {
34
+ return true;
35
+ }
36
+ const callId = pick(data, ['callId', 'callid', 'callID']);
37
+ const hasCallField = !!pick(data, ['callToken', 'livekitToken']) || !!pick(data, ['callKind']) || pick(data, ['kind']).toLowerCase() === 'audio' || pick(data, ['kind']).toLowerCase() === 'video';
38
+ return !!callId && hasCallField;
39
+ };
40
+ export const parseCallPush = data => {
41
+ const d = data || {};
42
+ const roomRef = pick(d, ['callRoom', 'room', 'roomJid', 'jid', 'chatId']) || null;
43
+ const roomBareName = roomRef ? roomRef.split('@')[0] || roomRef : null;
44
+ const kindRaw = pick(d, ['callKind', 'kind']).toLowerCase();
45
+ return {
46
+ callId: pick(d, ['callId', 'callid', 'callID']) || null,
47
+ token: pick(d, ['callToken', 'livekitToken', 'token']) || null,
48
+ kind: kindRaw === 'audio' ? 'audio' : 'video',
49
+ roomBareName,
50
+ roomRef,
51
+ callerName: pick(d, ['callerName', 'callerDisplayName', 'senderName', 'title']) || null,
52
+ callerXmppUsername: pick(d, ['callerXmppUsername', 'callerUsername', 'userJid', 'senderJid']).split('@')[0] || null
53
+ };
54
+ };
55
+ //# sourceMappingURL=callPush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pick","data","keys","k","v","undefined","String","trim","isCallPush","marker","toLowerCase","callId","hasCallField","parseCallPush","d","roomRef","roomBareName","split","kindRaw","token","kind","callerName","callerXmppUsername"],"sourceRoot":"../../../src","sources":["helpers/callPush.ts"],"mappings":"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","ignoreList":[]}
@@ -1,19 +1,31 @@
1
1
  "use strict";
2
2
 
3
+ /**
4
+ * Languages the in-chat globe picker offers.
5
+ *
6
+ * Names are AUTONYMS (each language written in itself), which is what
7
+ * every mainstream language picker does: a reader who only speaks French
8
+ * can find "Français" but not "French". Ids carry the region because the
9
+ * deployment's readers are Canadian and US, and the region is forwarded to
10
+ * the translation service so it can tell fr-CA from fr-FR. Base-language
11
+ * lookups (i18n tables, Translate-button visibility) strip it via
12
+ * toBaseLanguage, so both forms interoperate.
13
+ *
14
+ * Commented-out entries still have full string tables in i18n/strings.ts,
15
+ * they're just not offered to readers in the current deployment.
16
+ */
3
17
  export const LANGUAGE_OPTIONS = [{
4
18
  name: 'English',
5
- id: 'en'
19
+ id: 'en-CA'
6
20
  }, {
7
- name: 'Spanish',
8
- id: 'es'
21
+ name: 'Español',
22
+ id: 'es-US'
9
23
  }, {
10
- name: 'Portuguese',
11
- id: 'pt'
12
- }, {
13
- name: 'Haitian Creole',
14
- id: 'ht'
15
- }, {
16
- name: 'Chinese',
17
- id: 'zh'
18
- }];
24
+ name: 'Français',
25
+ id: 'fr-CA'
26
+ }
27
+ // { name: 'Português', id: 'pt' },
28
+ // { name: 'Kreyòl ayisyen', id: 'ht' },
29
+ // { name: '中文', id: 'zh' },
30
+ ];
19
31
  //# sourceMappingURL=LANGUAGE_OPTIONS.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LANGUAGE_OPTIONS","name","id"],"sourceRoot":"../../../../src","sources":["helpers/constants/LANGUAGE_OPTIONS.ts"],"mappings":";;AAOA,OAAO,MAAMA,gBAAkC,GAAG,CAChD;EAAEC,IAAI,EAAE,SAAS;EAAEC,EAAE,EAAE;AAAK,CAAC,EAC7B;EAAED,IAAI,EAAE,SAAS;EAAEC,EAAE,EAAE;AAAK,CAAC,EAC7B;EAAED,IAAI,EAAE,YAAY;EAAEC,EAAE,EAAE;AAAK,CAAC,EAChC;EAAED,IAAI,EAAE,gBAAgB;EAAEC,EAAE,EAAE;AAAK,CAAC,EACpC;EAAED,IAAI,EAAE,SAAS;EAAEC,EAAE,EAAE;AAAK,CAAC,CAC9B","ignoreList":[]}
1
+ {"version":3,"names":["LANGUAGE_OPTIONS","name","id"],"sourceRoot":"../../../../src","sources":["helpers/constants/LANGUAGE_OPTIONS.ts"],"mappings":";;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAkC,GAAG,CAChD;EAAEC,IAAI,EAAE,SAAS;EAAEC,EAAE,EAAE;AAAQ,CAAC,EAChC;EAAED,IAAI,EAAE,SAAS;EAAEC,EAAE,EAAE;AAAQ,CAAC,EAChC;EAAED,IAAI,EAAE,UAAU;EAAEC,EAAE,EAAE;AAAQ;AAChC;AACA;AACA;AAAA,CACD","ignoreList":[]}
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ /**
4
+ * Cache-only lookup. Returns the literal "Deleted User" as a MISS sentinel
5
+ * when `usersSet` has no entry for `userId` yet, callers that want a
6
+ * better fallback (e.g. resolveSenderDisplayName below) check for that
7
+ * exact string rather than treating it as a real name.
8
+ */
3
9
  export const createUserNameFromSetUser = (usersSet, userId) => {
4
10
  const user = usersSet[userId];
5
11
  if (!user) {
@@ -7,6 +13,48 @@ export const createUserNameFromSetUser = (usersSet, userId) => {
7
13
  }
8
14
  const firstName = user.firstName?.trim() || '';
9
15
  const lastName = user.lastName?.trim() || '';
10
- return `${firstName} ${lastName}`.trim() || userId;
16
+ // REST-loaded members carry firstName/lastName; XMPP-roster-only
17
+ // members (no REST match yet) carry just the roster `name` attr —
18
+ // fall back to that before giving up and returning the raw id.
19
+ const bareName = user.name?.trim() || '';
20
+ return `${firstName} ${lastName}`.trim() || bareName || userId;
21
+ };
22
+
23
+ /**
24
+ * The sender's display name, resolved WITHOUT depending on `usersSet`
25
+ * having already been hydrated.
26
+ *
27
+ * `usersSet` is populated by a separate fetch (member list / presence) that
28
+ * can still be in flight when a message arrives, most reliably right after
29
+ * reconnect, when a burst of catch-up messages can land before that fetch
30
+ * resolves. A cache-only lookup shows the literal "Deleted User" for every
31
+ * one of those messages, even though the sender is very much not deleted.
32
+ * On mobile this is the common case, not the rare one: every return from
33
+ * background reconnects.
34
+ *
35
+ * The message itself already carries the sender's name on the wire: every
36
+ * client that sends through this SDK stamps `senderFirstName` /
37
+ * `senderLastName` / `fullName` onto the outgoing stanza's `<data>` element
38
+ * (see sendTextMessage.xmpp.ts / sendTextMessageWithTranslateTag.xmpp.ts),
39
+ * and createMessageFromXml spreads those onto the top-level message object.
40
+ * Preferring that over the cache removes the timing dependency entirely for
41
+ * the common case, and "Deleted User" becomes what it should have always
42
+ * been: a rare last resort, not "usersSet hasn't loaded yet".
43
+ */
44
+ export const resolveSenderDisplayName = (message, usersSet) => {
45
+ const rawUserId = String(message?.user?.id || '');
46
+ const localUserId = rawUserId.split('@')[0];
47
+ const currentNameRaw = String(message?.user?.name || '').trim();
48
+ // A previously-resolved "Deleted User" is itself a miss sentinel, not a
49
+ // real name, don't let it short-circuit the fallback chain below.
50
+ const currentName = currentNameRaw === 'Deleted User' ? '' : currentNameRaw;
51
+ const dataFullName = String(message?.fullName || '').trim();
52
+ const dataFirst = String(message?.senderFirstName || '').trim();
53
+ const dataLast = String(message?.senderLastName || '').trim();
54
+ const composedFromData = dataFullName || `${dataFirst} ${dataLast}`.trim();
55
+ const usersSetName = createUserNameFromSetUser(usersSet, localUserId);
56
+ const usersSetNameAlt = createUserNameFromSetUser(usersSet, rawUserId);
57
+ const isUsersSetUseful = name => !!name && name !== 'Deleted User';
58
+ return currentName || isUsersSetUseful(usersSetName) && usersSetName || isUsersSetUseful(usersSetNameAlt) && usersSetNameAlt || composedFromData || localUserId || rawUserId || 'Deleted User';
11
59
  };
12
60
  //# sourceMappingURL=createUserNameFromSetUser.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createUserNameFromSetUser","usersSet","userId","user","firstName","trim","lastName"],"sourceRoot":"../../../src","sources":["helpers/createUserNameFromSetUser.ts"],"mappings":";;AAEA,OAAO,MAAMA,yBAAyB,GAAGA,CACvCC,QAAoC,EACpCC,MAAc,KACH;EACX,MAAMC,IAAI,GAAGF,QAAQ,CAACC,MAAM,CAAC;EAE7B,IAAI,CAACC,IAAI,EAAE;IAAC,OAAO,cAAc;EAAC;EAElC,MAAMC,SAAS,GAAGD,IAAI,CAACC,SAAS,EAAEC,IAAI,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,QAAQ,GAAGH,IAAI,CAACG,QAAQ,EAAED,IAAI,CAAC,CAAC,IAAI,EAAE;EAE5C,OAAO,GAAGD,SAAS,IAAIE,QAAQ,EAAE,CAACD,IAAI,CAAC,CAAC,IAAIH,MAAM;AACpD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createUserNameFromSetUser","usersSet","userId","user","firstName","trim","lastName","bareName","name","resolveSenderDisplayName","message","rawUserId","String","id","localUserId","split","currentNameRaw","currentName","dataFullName","fullName","dataFirst","senderFirstName","dataLast","senderLastName","composedFromData","usersSetName","usersSetNameAlt","isUsersSetUseful"],"sourceRoot":"../../../src","sources":["helpers/createUserNameFromSetUser.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,yBAAyB,GAAGA,CACvCC,QAAoC,EACpCC,MAAc,KACH;EACX,MAAMC,IAAI,GAAGF,QAAQ,CAACC,MAAM,CAAC;EAE7B,IAAI,CAACC,IAAI,EAAE;IAAC,OAAO,cAAc;EAAC;EAElC,MAAMC,SAAS,GAAGD,IAAI,CAACC,SAAS,EAAEC,IAAI,CAAC,CAAC,IAAI,EAAE;EAC9C,MAAMC,QAAQ,GAAGH,IAAI,CAACG,QAAQ,EAAED,IAAI,CAAC,CAAC,IAAI,EAAE;EAC5C;EACA;EACA;EACA,MAAME,QAAQ,GAAGJ,IAAI,CAACK,IAAI,EAAEH,IAAI,CAAC,CAAC,IAAI,EAAE;EAExC,OAAO,GAAGD,SAAS,IAAIE,QAAQ,EAAE,CAACD,IAAI,CAAC,CAAC,IAAIE,QAAQ,IAAIL,MAAM;AAChE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,wBAAwB,GAAGA,CACtCC,OAIC,EACDT,QAAoC,KACzB;EACX,MAAMU,SAAS,GAAGC,MAAM,CAACF,OAAO,EAAEP,IAAI,EAAEU,EAAE,IAAI,EAAE,CAAC;EACjD,MAAMC,WAAW,GAAGH,SAAS,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3C,MAAMC,cAAc,GAAGJ,MAAM,CAACF,OAAO,EAAEP,IAAI,EAAEK,IAAI,IAAI,EAAE,CAAC,CAACH,IAAI,CAAC,CAAC;EAC/D;EACA;EACA,MAAMY,WAAW,GAAGD,cAAc,KAAK,cAAc,GAAG,EAAE,GAAGA,cAAc;EAE3E,MAAME,YAAY,GAAGN,MAAM,CAACF,OAAO,EAAES,QAAQ,IAAI,EAAE,CAAC,CAACd,IAAI,CAAC,CAAC;EAC3D,MAAMe,SAAS,GAAGR,MAAM,CAACF,OAAO,EAAEW,eAAe,IAAI,EAAE,CAAC,CAAChB,IAAI,CAAC,CAAC;EAC/D,MAAMiB,QAAQ,GAAGV,MAAM,CAACF,OAAO,EAAEa,cAAc,IAAI,EAAE,CAAC,CAAClB,IAAI,CAAC,CAAC;EAC7D,MAAMmB,gBAAgB,GAAGN,YAAY,IAAI,GAAGE,SAAS,IAAIE,QAAQ,EAAE,CAACjB,IAAI,CAAC,CAAC;EAE1E,MAAMoB,YAAY,GAAGzB,yBAAyB,CAACC,QAAQ,EAAEa,WAAW,CAAC;EACrE,MAAMY,eAAe,GAAG1B,yBAAyB,CAACC,QAAQ,EAAEU,SAAS,CAAC;EACtE,MAAMgB,gBAAgB,GAAInB,IAAY,IAAK,CAAC,CAACA,IAAI,IAAIA,IAAI,KAAK,cAAc;EAE5E,OACES,WAAW,IACVU,gBAAgB,CAACF,YAAY,CAAC,IAAIA,YAAa,IAC/CE,gBAAgB,CAACD,eAAe,CAAC,IAAIA,eAAgB,IACtDF,gBAAgB,IAChBV,WAAW,IACXH,SAAS,IACT,cAAc;AAElB,CAAC","ignoreList":[]}
@@ -1,6 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  import { transformArrayToObject } from './transformTranslatations';
4
+
5
+ // Tolerant JSON parse: a malformed `translations` attr must not reject the
6
+ // whole stanza (which would silently drop the message). Mirrors the web
7
+ // SDK's safeJsonParse.
8
+ const safeJsonParse = (value, fallback) => {
9
+ if (typeof value !== 'string' || !value) {
10
+ return fallback;
11
+ }
12
+ try {
13
+ return JSON.parse(value);
14
+ } catch {
15
+ return fallback;
16
+ }
17
+ };
18
+
19
+ // Keep only well-formed translation entries (drops partial/garbage items),
20
+ // same shape guard the web SDK applies before transformArrayToObject.
21
+ const normalizeTranslations = value => Array.isArray(value) ? value.filter(item => !!item && typeof item === 'object' && typeof item.translatedText === 'string' && typeof item.language === 'string' && typeof item.languageName === 'string') : [];
4
22
  const extractTimestamp = (str, stanza) => {
5
23
  if (!str) {
6
24
  return null;
@@ -23,7 +41,8 @@ export const getDataFromXml = async stanza => {
23
41
  }
24
42
  const body = fullData?.getChild('body')?.getText() || undefined;
25
43
  const deleted = !!fullData?.getChild('deleted');
26
- const translations = fullData?.getChild('translations')?.attrs?.value ? transformArrayToObject(JSON.parse(fullData.getChild('translations').attrs.value).translates) : undefined;
44
+ const translationPayload = safeJsonParse(fullData?.getChild('translations')?.attrs?.value, {});
45
+ const translations = fullData?.getChild('translations')?.attrs?.value ? transformArrayToObject(normalizeTranslations(translationPayload.translates)) : undefined;
27
46
  const langSource = fullData?.getChild('translate')?.attrs?.source;
28
47
  const numericPart = /\d{13,}/.exec(id || '')?.[0];
29
48
  const date = numericPart ? new Date(+numericPart.slice(0, 13)).toISOString() : new Date().toISOString();
@@ -1 +1 @@
1
- {"version":3,"names":["transformArrayToObject","extractTimestamp","str","stanza","console","log","toString","timestamp","slice","getDataFromXml","fullData","getChild","xmppId","attrs","id","xmppFrom","from","roomJid","userWallet","split","Date","now","body","getText","undefined","deleted","translations","value","JSON","parse","translates","langSource","source","numericPart","exec","date","toISOString","data","photoURL","photo","user","dataAttrs"],"sourceRoot":"../../../src","sources":["helpers/getDataFromXml.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["transformArrayToObject","safeJsonParse","value","fallback","JSON","parse","normalizeTranslations","Array","isArray","filter","item","translatedText","language","languageName","extractTimestamp","str","stanza","console","log","toString","timestamp","slice","getDataFromXml","fullData","getChild","xmppId","attrs","id","xmppFrom","from","roomJid","userWallet","split","Date","now","body","getText","undefined","deleted","translationPayload","translations","translates","langSource","source","numericPart","exec","date","toISOString","data","photoURL","photo","user","dataAttrs"],"sourceRoot":"../../../src","sources":["helpers/getDataFromXml.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ import { store } from '../roomStore';
4
+ import { setIncomingCallToken } from '../roomStore/callSlice';
5
+ import { isCallPush, parseCallPush } from './callPush';
6
+
7
+ /**
8
+ * Turn an incoming-call push into a ringing call.
9
+ *
10
+ * On mobile the XMPP socket dies whenever the OS backgrounds or kills the
11
+ * app, and the `call-token` stanza that normally opens the ring screen is
12
+ * lost with it. The backend also delivers the call as a data push, so this
13
+ * is the path every call takes when the app was not in the foreground.
14
+ *
15
+ * Returns true when the payload WAS a call push (whether or not it could
16
+ * be rung), so the caller knows to stop and not also show it as a chat
17
+ * notification. A user should never get a "new message: call-state" toast.
18
+ */
19
+ export const handleCallPush = data => {
20
+ if (!isCallPush(data)) {
21
+ return false;
22
+ }
23
+ const parsed = parseCallPush(data);
24
+ const state = store.getState();
25
+
26
+ // Calls off in this deployment: swallow the push rather than ringing a
27
+ // screen the host never opted into.
28
+ if (state.chatSettingStore.config?.videoCalls?.enabled !== true) {
29
+ return true;
30
+ }
31
+
32
+ // Already ringing or in this exact call (the push raced the stanza, or
33
+ // two pushes arrived). Re-dispatching would reset startedAt and restart
34
+ // the ring, so leave the existing call alone.
35
+ const current = state.call;
36
+ if (current.phase !== 'idle') {
37
+ const sameCall = !!parsed.callId && parsed.callId === current.callId || !!parsed.roomBareName && parsed.roomBareName === current.roomBareName;
38
+ if (sameCall || current.phase === 'in-call') {
39
+ return true;
40
+ }
41
+ }
42
+
43
+ // Without a LiveKit token there is nothing to accept: the push is only
44
+ // an alert. Ringing anyway would give the user an Accept button that
45
+ // cannot work, so treat it as handled and let the stanza (once the
46
+ // socket is back up) open the real ring screen.
47
+ if (!parsed.token) {
48
+ return true;
49
+ }
50
+
51
+ // Resolve the full room JID from the local room map. The push carries
52
+ // the bare name; callSlice and the hangup signal both want the JID.
53
+ const rooms = state.rooms.rooms || {};
54
+ const resolved = Object.values(rooms).find(room => (room?.jid || '').split('@')[0] === parsed.roomBareName || room?.jid === parsed.roomRef);
55
+ const roomJid = resolved?.jid || (parsed.roomRef && parsed.roomRef.includes('@') ? parsed.roomRef : '');
56
+ if (!roomJid) {
57
+ return true;
58
+ }
59
+ store.dispatch(setIncomingCallToken({
60
+ roomJid,
61
+ roomName: parsed.callerName || resolved?.name || null,
62
+ roomBareName: parsed.roomBareName,
63
+ token: parsed.token,
64
+ kind: parsed.kind,
65
+ callId: parsed.callId,
66
+ peerXmppUsername: parsed.callerXmppUsername
67
+ }));
68
+ return true;
69
+ };
70
+ //# sourceMappingURL=incomingCallFromPush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["store","setIncomingCallToken","isCallPush","parseCallPush","handleCallPush","data","parsed","state","getState","chatSettingStore","config","videoCalls","enabled","current","call","phase","sameCall","callId","roomBareName","token","rooms","resolved","Object","values","find","room","jid","split","roomRef","roomJid","includes","dispatch","roomName","callerName","name","kind","peerXmppUsername","callerXmppUsername"],"sourceRoot":"../../../src","sources":["helpers/incomingCallFromPush.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,UAAU,EAAEC,aAAa,QAAQ,YAAY;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GACzBC,IAA4C,IAChC;EACZ,IAAI,CAACH,UAAU,CAACG,IAAI,CAAC,EAAE;IACrB,OAAO,KAAK;EACd;EAEA,MAAMC,MAAM,GAAGH,aAAa,CAACE,IAAI,CAAC;EAClC,MAAME,KAAK,GAAGP,KAAK,CAACQ,QAAQ,CAAC,CAAC;;EAE9B;EACA;EACA,IAAID,KAAK,CAACE,gBAAgB,CAACC,MAAM,EAAEC,UAAU,EAAEC,OAAO,KAAK,IAAI,EAAE;IAC/D,OAAO,IAAI;EACb;;EAEA;EACA;EACA;EACA,MAAMC,OAAO,GAAGN,KAAK,CAACO,IAAI;EAC1B,IAAID,OAAO,CAACE,KAAK,KAAK,MAAM,EAAE;IAC5B,MAAMC,QAAQ,GACX,CAAC,CAACV,MAAM,CAACW,MAAM,IAAIX,MAAM,CAACW,MAAM,KAAKJ,OAAO,CAACI,MAAM,IACnD,CAAC,CAACX,MAAM,CAACY,YAAY,IAAIZ,MAAM,CAACY,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,CAACT,MAAM,CAACa,KAAK,EAAE;IACjB,OAAO,IAAI;EACb;;EAEA;EACA;EACA,MAAMC,KAAK,GAAGb,KAAK,CAACa,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,KAAKrB,MAAM,CAACY,YAAY,IACvDO,IAAI,EAAEC,GAAG,KAAKpB,MAAM,CAACsB,OACzB,CAAgD;EAEhD,MAAMC,OAAO,GACXR,QAAQ,EAAEK,GAAG,KACZpB,MAAM,CAACsB,OAAO,IAAItB,MAAM,CAACsB,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,GAAGxB,MAAM,CAACsB,OAAO,GAAG,EAAE,CAAC;EACxE,IAAI,CAACC,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA7B,KAAK,CAAC+B,QAAQ,CACZ9B,oBAAoB,CAAC;IACnB4B,OAAO;IACPG,QAAQ,EAAE1B,MAAM,CAAC2B,UAAU,IAAIZ,QAAQ,EAAEa,IAAI,IAAI,IAAI;IACrDhB,YAAY,EAAEZ,MAAM,CAACY,YAAY;IACjCC,KAAK,EAAEb,MAAM,CAACa,KAAK;IACnBgB,IAAI,EAAE7B,MAAM,CAAC6B,IAAI;IACjBlB,MAAM,EAAEX,MAAM,CAACW,MAAM;IACrBmB,gBAAgB,EAAE9B,MAAM,CAAC+B;EAC3B,CAAC,CACH,CAAC;EAED,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
@@ -52,6 +52,18 @@ export function insertMessageWithDelimiter(roomMessages, message, lastViewedTime
52
52
  if (lastViewedTimestamp && !roomMessages.some(msg => msg.id === 'delimiter-new') && isDateAfter(newMessageDate.toString(), lastViewedTimestamp.toString())) {
53
53
  const delimiterIndex = roomMessages.findIndex(msg => isDateAfter(msg.date?.toString() ?? '', lastViewedTimestamp.toString()));
54
54
  if (delimiterIndex !== -1) {
55
+ // The divider's date is what ORDERS it: roomsSlice re-sorts every
56
+ // merged page by timestamp (see `byMs`), so a divider stamped with
57
+ // `new Date()` — i.e. now — sorted past every real message and
58
+ // rendered at the very bottom, BELOW the new messages it is
59
+ // supposed to introduce. Anchor it a hair before the first unread
60
+ // instead, which is where it belongs and where any later sort keeps
61
+ // it. Derived from that message rather than from
62
+ // lastViewedTimestamp so it works whatever format the caller passes.
63
+ const firstUnreadMs = Date.parse(String(roomMessages[delimiterIndex]?.date ?? ''));
64
+ const rawLastViewed = lastViewedTimestamp.toString();
65
+ const lastViewedMs = Date.parse(rawLastViewed) || Number(rawLastViewed) || Date.now();
66
+ const anchorMs = Number.isFinite(firstUnreadMs) ? firstUnreadMs - 1 : lastViewedMs;
55
67
  roomMessages.splice(delimiterIndex, 0, {
56
68
  id: 'delimiter-new',
57
69
  user: {
@@ -60,7 +72,7 @@ export function insertMessageWithDelimiter(roomMessages, message, lastViewedTime
60
72
  token: '',
61
73
  refreshToken: ''
62
74
  },
63
- date: new Date().toString(),
75
+ date: new Date(anchorMs).toISOString(),
64
76
  body: 'New Messages',
65
77
  roomJid: ''
66
78
  });