@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
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import React, { useState } from 'react';
4
+ import { StyleSheet, TouchableOpacity } from 'react-native';
5
+ import { useChatSettingState } from '../../hooks/useChatSettingState';
6
+ import { getIconColor } from '../../helpers/getIconColor';
7
+ import { useT } from '../../i18n/useT';
8
+ import { GlobeIcon, LanguageSelectorModal } from './LanguageSelectorModal';
9
+
10
+ /**
11
+ * Globe button in the chat header that opens the reader's language picker.
12
+ *
13
+ * Renders only when translation is on. A host that drives the reader's
14
+ * language from its own settings screen (via `config.translates
15
+ * .readerLocale`) can hide this with `showLanguageSelector: false` rather
16
+ * than shipping two competing controls.
17
+ */
18
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
19
+ export const LanguageSelectorButton = () => {
20
+ const {
21
+ config
22
+ } = useChatSettingState();
23
+ const t = useT();
24
+ const [open, setOpen] = useState(false);
25
+ const translates = config?.translates;
26
+ const enabled = Boolean(translates?.enabled || config?.enableTranslates);
27
+ if (!enabled || translates?.showLanguageSelector === false) {
28
+ return null;
29
+ }
30
+ return /*#__PURE__*/_jsxs(_Fragment, {
31
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
32
+ accessibilityRole: "button",
33
+ accessibilityLabel: t('language.select'),
34
+ onPress: () => setOpen(true),
35
+ style: styles.button,
36
+ hitSlop: 8,
37
+ children: /*#__PURE__*/_jsx(GlobeIcon, {
38
+ color: getIconColor(config),
39
+ size: 20
40
+ })
41
+ }), /*#__PURE__*/_jsx(LanguageSelectorModal, {
42
+ visible: open,
43
+ onClose: () => setOpen(false)
44
+ })]
45
+ });
46
+ };
47
+ const styles = StyleSheet.create({
48
+ button: {
49
+ width: 36,
50
+ height: 36,
51
+ borderRadius: 18,
52
+ alignItems: 'center',
53
+ justifyContent: 'center'
54
+ }
55
+ });
56
+ export default LanguageSelectorButton;
57
+ //# sourceMappingURL=LanguageSelectorButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","StyleSheet","TouchableOpacity","useChatSettingState","getIconColor","useT","GlobeIcon","LanguageSelectorModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","LanguageSelectorButton","config","t","open","setOpen","translates","enabled","Boolean","enableTranslates","showLanguageSelector","children","accessibilityRole","accessibilityLabel","onPress","style","styles","button","hitSlop","color","size","visible","onClose","create","width","height","borderRadius","alignItems","justifyContent"],"sourceRoot":"../../../../src","sources":["components/MainComponents/LanguageSelectorButton.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAQC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAC3D,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,YAAY,QAAQ,4BAA4B;AACzD,SAASC,IAAI,QAAQ,iBAAiB;AACtC,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,yBAAyB;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAQA,OAAO,MAAMC,sBAA0B,GAAGA,CAAA,KAAM;EAC9C,MAAM;IAAEC;EAAO,CAAC,GAAGZ,mBAAmB,CAAC,CAAC;EACxC,MAAMa,CAAC,GAAGX,IAAI,CAAC,CAAC;EAChB,MAAM,CAACY,IAAI,EAAEC,OAAO,CAAC,GAAGlB,QAAQ,CAAC,KAAK,CAAC;EAEvC,MAAMmB,UAAU,GAAGJ,MAAM,EAAEI,UAAU;EACrC,MAAMC,OAAO,GAAGC,OAAO,CAACF,UAAU,EAAEC,OAAO,IAAIL,MAAM,EAAEO,gBAAgB,CAAC;EACxE,IAAI,CAACF,OAAO,IAAID,UAAU,EAAEI,oBAAoB,KAAK,KAAK,EAAE;IAC1D,OAAO,IAAI;EACb;EAEA,oBACEV,KAAA,CAAAF,SAAA;IAAAa,QAAA,gBACEf,IAAA,CAACP,gBAAgB;MACfuB,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEV,CAAC,CAAC,iBAAiB,CAAE;MACzCW,OAAO,EAAEA,CAAA,KAAMT,OAAO,CAAC,IAAI,CAAE;MAC7BU,KAAK,EAAEC,MAAM,CAACC,MAAO;MACrBC,OAAO,EAAE,CAAE;MAAAP,QAAA,eAEXf,IAAA,CAACH,SAAS;QAAC0B,KAAK,EAAE5B,YAAY,CAACW,MAAM,CAAE;QAACkB,IAAI,EAAE;MAAG,CAAE;IAAC,CACpC,CAAC,eACnBxB,IAAA,CAACF,qBAAqB;MAAC2B,OAAO,EAAEjB,IAAK;MAACkB,OAAO,EAAEA,CAAA,KAAMjB,OAAO,CAAC,KAAK;IAAE,CAAE,CAAC;EAAA,CACvE,CAAC;AAEP,CAAC;AAED,MAAMW,MAAM,GAAG5B,UAAU,CAACmC,MAAM,CAAC;EAC/BN,MAAM,EAAE;IACNO,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,EAAE;IAChBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;AAEF,eAAe3B,sBAAsB","ignoreList":[]}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback } from 'react';
4
+ import { Modal, Pressable, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
+ import Svg, { Circle, Path } from 'react-native-svg';
6
+ import { useDispatch } from 'react-redux';
7
+ import { setLangSource, setTranslateMode } from '../../roomStore/chatSettingsSlice';
8
+ import { useChatSettingState } from '../../hooks/useChatSettingState';
9
+ import { LANGUAGE_OPTIONS } from '../../helpers/constants/LANGUAGE_OPTIONS';
10
+ import { canReaderChooseTranslateMode, resolveTranslateMode } from '../../utils/translateModePolicy';
11
+ import { useT } from '../../i18n/useT';
12
+ import { toBaseLanguage } from '../../i18n/strings';
13
+ import { getIconColor } from '../../helpers/getIconColor';
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ const TEXT_PRIMARY = '#141414';
16
+ const TEXT_MUTED = '#8C8C8C';
17
+ const DIVIDER = '#F0F0F0';
18
+
19
+ /**
20
+ * Ported verbatim from the web SDK's GlobeIcon (src/assets/icons.tsx) so
21
+ * both platforms draw the same mark. The previous RN shape was hand-rolled
22
+ * on a 24-box with two mirrored beziers whose meridian bulged only ~21% of
23
+ * the radius, which collapsed into a thin lens rather than reading as a
24
+ * sphere.
25
+ */
26
+ export const GlobeIcon = ({
27
+ color = '#8C8C8C',
28
+ size = 20
29
+ }) => /*#__PURE__*/_jsxs(Svg, {
30
+ width: size,
31
+ height: size,
32
+ viewBox: "0 0 20 20",
33
+ fill: "none",
34
+ children: [/*#__PURE__*/_jsx(Circle, {
35
+ cx: "10",
36
+ cy: "10",
37
+ r: "7.5",
38
+ stroke: color,
39
+ strokeWidth: 1.5
40
+ }), /*#__PURE__*/_jsx(Path, {
41
+ d: "M2.5 10h15M10 2.5c2 2.1 3 4.7 3 7.5s-1 5.4-3 7.5c-2-2.1-3-4.7-3-7.5s1-5.4 3-7.5Z",
42
+ stroke: color,
43
+ strokeWidth: 1.5,
44
+ strokeLinecap: "round",
45
+ strokeLinejoin: "round",
46
+ fill: "none"
47
+ })]
48
+ });
49
+
50
+ /**
51
+ * The reader's language control.
52
+ *
53
+ * One switch drives two things on purpose: the language messages get
54
+ * translated INTO, and (through useT falling back to `langSource`) the
55
+ * language the interface itself is in. A reader who picks Français expects
56
+ * the whole chat in French, not French messages inside an English UI.
57
+ *
58
+ * The auto/manual switcher only renders when the host hasn't pinned
59
+ * `config.translates.forceType`, and the language list only when
60
+ * `showLanguageList` isn't false, for hosts that drive the reader's
61
+ * language from their own settings screen via `readerLocale`.
62
+ */
63
+ export const LanguageSelectorModal = ({
64
+ visible,
65
+ onClose
66
+ }) => {
67
+ const dispatch = useDispatch();
68
+ const t = useT();
69
+ const {
70
+ config,
71
+ langSource,
72
+ translateMode
73
+ } = useChatSettingState();
74
+ const translates = config?.translates;
75
+ const effectiveMode = resolveTranslateMode(translates, translateMode);
76
+ const showModeSwitcher = canReaderChooseTranslateMode(translates);
77
+ const showLanguageList = translates?.showLanguageList !== false;
78
+ const activeLocale = translates?.readerLocale || langSource;
79
+ const selectLanguage = useCallback(id => {
80
+ dispatch(setLangSource(id));
81
+ onClose();
82
+ }, [dispatch, onClose]);
83
+ return /*#__PURE__*/_jsx(Modal, {
84
+ visible: visible,
85
+ transparent: true,
86
+ animationType: "fade",
87
+ onRequestClose: onClose,
88
+ children: /*#__PURE__*/_jsx(Pressable, {
89
+ style: styles.backdrop,
90
+ onPress: onClose,
91
+ children: /*#__PURE__*/_jsxs(Pressable, {
92
+ style: styles.card,
93
+ onPress: () => {},
94
+ children: [/*#__PURE__*/_jsx(Text, {
95
+ style: styles.title,
96
+ children: t('language.select')
97
+ }), showModeSwitcher && /*#__PURE__*/_jsxs(View, {
98
+ style: styles.section,
99
+ children: [/*#__PURE__*/_jsx(Text, {
100
+ style: styles.sectionLabel,
101
+ children: t('translation.modeLabel')
102
+ }), /*#__PURE__*/_jsx(View, {
103
+ style: styles.segmented,
104
+ children: ['auto', 'manual'].map(mode => {
105
+ const selected = effectiveMode === mode;
106
+ return /*#__PURE__*/_jsx(TouchableOpacity, {
107
+ accessibilityRole: "radio",
108
+ accessibilityState: {
109
+ selected
110
+ },
111
+ onPress: () => dispatch(setTranslateMode(mode)),
112
+ style: [styles.segment, selected && styles.segmentSelected],
113
+ children: /*#__PURE__*/_jsx(Text, {
114
+ style: [styles.segmentText, selected && styles.segmentTextSelected],
115
+ children: mode === 'auto' ? t('translation.modeAuto') : t('translation.modeManual')
116
+ })
117
+ }, mode);
118
+ })
119
+ })]
120
+ }), showLanguageList && /*#__PURE__*/_jsxs(View, {
121
+ style: styles.section,
122
+ children: [/*#__PURE__*/_jsx(Text, {
123
+ style: styles.sectionLabel,
124
+ children: t('language.select')
125
+ }), /*#__PURE__*/_jsx(ScrollView, {
126
+ style: styles.list,
127
+ children: LANGUAGE_OPTIONS.map(option => {
128
+ // Compare on the base language so a reader on "fr" still
129
+ // sees "Français" (id fr-CA) ticked.
130
+ const selected = !!activeLocale && toBaseLanguage(activeLocale) === toBaseLanguage(option.id);
131
+ return /*#__PURE__*/_jsxs(TouchableOpacity, {
132
+ accessibilityRole: "radio",
133
+ accessibilityState: {
134
+ selected
135
+ },
136
+ onPress: () => selectLanguage(option.id),
137
+ style: styles.listRow,
138
+ children: [/*#__PURE__*/_jsx(Text, {
139
+ style: [styles.listRowText, selected && styles.listRowTextSelected],
140
+ children: option.name
141
+ }), selected && /*#__PURE__*/_jsx(Text, {
142
+ style: [styles.check, {
143
+ color: getIconColor(config)
144
+ }],
145
+ children: "\u2713"
146
+ })]
147
+ }, option.id);
148
+ })
149
+ })]
150
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
151
+ onPress: onClose,
152
+ style: styles.closeButton,
153
+ children: /*#__PURE__*/_jsx(Text, {
154
+ style: [styles.closeText, {
155
+ color: getIconColor(config)
156
+ }],
157
+ children: t('action.cancel')
158
+ })
159
+ })]
160
+ })
161
+ })
162
+ });
163
+ };
164
+ const styles = StyleSheet.create({
165
+ backdrop: {
166
+ flex: 1,
167
+ backgroundColor: 'rgba(0,0,0,0.4)',
168
+ alignItems: 'center',
169
+ justifyContent: 'center',
170
+ padding: 24
171
+ },
172
+ card: {
173
+ width: '100%',
174
+ maxWidth: 420,
175
+ maxHeight: '80%',
176
+ backgroundColor: '#fff',
177
+ borderRadius: 20,
178
+ padding: 20,
179
+ gap: 16
180
+ },
181
+ title: {
182
+ fontSize: 18,
183
+ color: TEXT_PRIMARY
184
+ },
185
+ section: {
186
+ gap: 8
187
+ },
188
+ sectionLabel: {
189
+ fontSize: 13,
190
+ color: TEXT_MUTED
191
+ },
192
+ segmented: {
193
+ flexDirection: 'row',
194
+ borderRadius: 12,
195
+ backgroundColor: '#F5F7F9',
196
+ padding: 4,
197
+ gap: 4
198
+ },
199
+ segment: {
200
+ flex: 1,
201
+ paddingVertical: 10,
202
+ borderRadius: 9,
203
+ alignItems: 'center'
204
+ },
205
+ segmentSelected: {
206
+ backgroundColor: '#fff'
207
+ },
208
+ segmentText: {
209
+ fontSize: 14,
210
+ color: TEXT_MUTED
211
+ },
212
+ segmentTextSelected: {
213
+ color: TEXT_PRIMARY,
214
+ fontWeight: '600'
215
+ },
216
+ list: {
217
+ maxHeight: 260
218
+ },
219
+ listRow: {
220
+ flexDirection: 'row',
221
+ alignItems: 'center',
222
+ justifyContent: 'space-between',
223
+ paddingVertical: 14,
224
+ borderBottomWidth: 1,
225
+ borderBottomColor: DIVIDER
226
+ },
227
+ listRowText: {
228
+ fontSize: 16,
229
+ color: TEXT_PRIMARY
230
+ },
231
+ listRowTextSelected: {
232
+ fontWeight: '600'
233
+ },
234
+ check: {
235
+ fontSize: 16
236
+ },
237
+ closeButton: {
238
+ alignItems: 'center',
239
+ paddingVertical: 12
240
+ },
241
+ closeText: {
242
+ fontSize: 15
243
+ }
244
+ });
245
+ export default LanguageSelectorModal;
246
+ //# sourceMappingURL=LanguageSelectorModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","Modal","Pressable","ScrollView","StyleSheet","Text","TouchableOpacity","View","Svg","Circle","Path","useDispatch","setLangSource","setTranslateMode","useChatSettingState","LANGUAGE_OPTIONS","canReaderChooseTranslateMode","resolveTranslateMode","useT","toBaseLanguage","getIconColor","jsx","_jsx","jsxs","_jsxs","TEXT_PRIMARY","TEXT_MUTED","DIVIDER","GlobeIcon","color","size","width","height","viewBox","fill","children","cx","cy","r","stroke","strokeWidth","d","strokeLinecap","strokeLinejoin","LanguageSelectorModal","visible","onClose","dispatch","t","config","langSource","translateMode","translates","effectiveMode","showModeSwitcher","showLanguageList","activeLocale","readerLocale","selectLanguage","id","transparent","animationType","onRequestClose","style","styles","backdrop","onPress","card","title","section","sectionLabel","segmented","map","mode","selected","accessibilityRole","accessibilityState","segment","segmentSelected","segmentText","segmentTextSelected","list","option","listRow","listRowText","listRowTextSelected","name","check","closeButton","closeText","create","flex","backgroundColor","alignItems","justifyContent","padding","maxWidth","maxHeight","borderRadius","gap","fontSize","flexDirection","paddingVertical","fontWeight","borderBottomWidth","borderBottomColor"],"sourceRoot":"../../../../src","sources":["components/MainComponents/LanguageSelectorModal.tsx"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ import Button from '../styled/Button';
12
12
  import { HeaderRoomList } from '../Header/HeaderRoomList';
13
13
  import { HeaderRoomListMenu } from '../Menu/HeaderRoomListMenu';
14
14
  import { getIconColor } from '../../helpers/getIconColor';
15
+ import { useT } from '../../i18n/useT';
15
16
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
17
  const LONG_PRESS_THRESHOLD = 200;
17
18
  const RoomList = ({
@@ -22,6 +23,7 @@ const RoomList = ({
22
23
  const {
23
24
  config
24
25
  } = useChatSettingState();
26
+ const t = useT();
25
27
  const [open, setOpen] = useState(false);
26
28
  const [searchTerm, setSearchTerm] = useState('');
27
29
  const [isLongPress, setIsLongPress] = useState(false);
@@ -128,6 +130,16 @@ const RoomList = ({
128
130
  style: styles.scrollContainer,
129
131
  children: [/*#__PURE__*/_jsx(HeaderRoomList, {
130
132
  setDrawerOpen: toggleDrawer
133
+ }), /*#__PURE__*/_jsx(View, {
134
+ style: styles.searchBar,
135
+ children: /*#__PURE__*/_jsx(SearchInput, {
136
+ icon: /*#__PURE__*/_jsx(SearchIcon, {
137
+ height: 20
138
+ }),
139
+ value: searchTerm,
140
+ onChangeText: handleSearchChange,
141
+ placeholder: t('search.placeholder')
142
+ })
131
143
  }), /*#__PURE__*/_jsx(FlatList, {
132
144
  data: filteredChats,
133
145
  keyExtractor: item => item.jid,
@@ -148,14 +160,6 @@ const RoomList = ({
148
160
  config: config
149
161
  })
150
162
  }),
151
- ListHeaderComponent: /*#__PURE__*/_jsx(SearchInput, {
152
- icon: /*#__PURE__*/_jsx(SearchIcon, {
153
- height: 20
154
- }),
155
- value: searchTerm,
156
- onChangeText: handleSearchChange,
157
- placeholder: "Search..."
158
- }),
159
163
  style: styles.chatList
160
164
  }), /*#__PURE__*/_jsx(HeaderRoomListMenu, {
161
165
  closeDrawer: closeDrawer,
@@ -189,9 +193,19 @@ const styles = StyleSheet.create({
189
193
  padding: 16,
190
194
  justifyContent: 'space-between'
191
195
  },
196
+ searchBar: {
197
+ // `row` matters: SearchInputWrapper is `flex: 1` plus a fixed 44px
198
+ // height. In a column parent that flex resolves VERTICALLY against a
199
+ // parent with no height of its own and collapses the field to nothing
200
+ // but its magnifier. As a row it resolves to width, which is what it
201
+ // meant back when the field was a list-header child.
202
+ flexDirection: 'row',
203
+ paddingTop: 8,
204
+ paddingHorizontal: 16,
205
+ backgroundColor: '#FAFAFA'
206
+ },
192
207
  chatList: {
193
208
  flex: 1,
194
- paddingTop: 8,
195
209
  paddingHorizontal: 16,
196
210
  backgroundColor: '#FAFAFA'
197
211
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","useCallback","useMemo","useRef","View","StyleSheet","FlatList","Pressable","Animated","SearchInput","BurgerMenuIcon","SearchIcon","ChatRoomItem","useChatSettingState","Button","HeaderRoomList","HeaderRoomListMenu","getIconColor","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","LONG_PRESS_THRESHOLD","RoomList","chats","burgerMenu","onRoomClick","config","open","setOpen","searchTerm","setSearchTerm","isLongPress","setIsLongPress","isDrawerOpen","setDrawerOpen","pressTimer","containerRef","drawerAnimation","Value","current","overlayAnimation","handlePressIn","setTimeout","handlePressOut","clearTimeout","performClick","chat","handleSearchChange","text","getLastMessage","messages","length","filteredChats","lowerCaseSearchTerm","toLowerCase","chatsMap","Map","has","result","filter","hay","title","name","includes","sort","a","b","id","Number","set","get","toggleDrawer","closeDrawer","parallel","timing","toValue","duration","useNativeDriver","start","children","style","padding","borderRadius","backgroundColor","color","unstyled","EndIcon","onPress","ref","styles","container","roomListStyles","scrollContainer","data","keyExtractor","item","jid","renderItem","testID","split","accessibilityLabel","onPressIn","onPressOut","ListHeaderComponent","icon","height","value","onChangeText","placeholder","chatList","create","burgerButton","fontSize","width","flex","flexGrow","headerContainer","flexDirection","alignItems","justifyContent","paddingTop","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/MainComponents/RoomList.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","useEffect","useCallback","useMemo","useRef","View","StyleSheet","FlatList","Pressable","Animated","SearchInput","BurgerMenuIcon","SearchIcon","ChatRoomItem","useChatSettingState","Button","HeaderRoomList","HeaderRoomListMenu","getIconColor","useT","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","LONG_PRESS_THRESHOLD","RoomList","chats","burgerMenu","onRoomClick","config","t","open","setOpen","searchTerm","setSearchTerm","isLongPress","setIsLongPress","isDrawerOpen","setDrawerOpen","pressTimer","containerRef","drawerAnimation","Value","current","overlayAnimation","handlePressIn","setTimeout","handlePressOut","clearTimeout","performClick","chat","handleSearchChange","text","getLastMessage","messages","length","filteredChats","lowerCaseSearchTerm","toLowerCase","chatsMap","Map","has","result","filter","hay","title","name","includes","sort","a","b","id","Number","set","get","toggleDrawer","closeDrawer","parallel","timing","toValue","duration","useNativeDriver","start","children","style","padding","borderRadius","backgroundColor","color","unstyled","EndIcon","onPress","ref","styles","container","roomListStyles","scrollContainer","searchBar","icon","height","value","onChangeText","placeholder","data","keyExtractor","item","jid","renderItem","testID","split","accessibilityLabel","onPressIn","onPressOut","chatList","create","burgerButton","fontSize","width","flex","flexGrow","headerContainer","flexDirection","alignItems","justifyContent","paddingTop","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["components/MainComponents/RoomList.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React, { useRef, useState } from 'react';
4
4
  import { View, Pressable, StyleSheet, findNodeHandle, UIManager, Text, Keyboard } from 'react-native';
5
- import { useDispatch } from 'react-redux';
5
+ import { useDispatch, useSelector } from 'react-redux';
6
6
  import { Avatar } from './Avatar';
7
7
  import MessageInteractions from './MessageInteractions';
8
8
  import { BottomReplyContainer } from './BottomReplyContainer';
@@ -13,7 +13,11 @@ import { MODAL_TYPES } from '../../helpers/constants/MODAL_TYPES';
13
13
  import { setActiveMessage, setEditAction } from '../../roomStore/roomsSlice';
14
14
  import styled from 'styled-components/native';
15
15
  import MediaMessage from '../MainComponents/MediaMessage';
16
- import MessageTranslations from './MessageTranslations';
16
+ import MessageTranslate from './MessageTranslate';
17
+ import { isUnresolvedSenderId } from '../../helpers/isUnresolvedSenderId';
18
+ import TranslatedMessageBody from './TranslatedMessageBody';
19
+ import { useMessageTranslation } from '../../hooks/useMessageTranslation';
20
+ import { resolveTranslateMode } from '../../utils/translateModePolicy';
17
21
  import { useChatSettingState } from '../../hooks/useChatSettingState';
18
22
  import { parseMessageBody } from '../../helpers/parseMessageBody';
19
23
  import { chatTextStyle } from '../../helpers/typography';
@@ -142,8 +146,53 @@ const Message = ({
142
146
  const {
143
147
  config,
144
148
  langSource,
145
- user
149
+ user,
150
+ translateMode
146
151
  } = useChatSettingState();
152
+
153
+ // `enableTranslates` predates the `translates` config block; keep it
154
+ // working so existing hosts don't lose translations on upgrade.
155
+ const isTranslatesEnabled = Boolean(config?.translates?.enabled || config?.enableTranslates);
156
+ const effectiveTranslateMode = resolveTranslateMode(config?.translates, translateMode);
157
+
158
+ // Auto mode (the default): show the translation inline as the primary body,
159
+ // with the original quoted above. Own messages are never translated — the
160
+ // sender already knows what they wrote (TranslatedMessageBody skips the
161
+ // quote for isUser, and we simply render the original for them). Mirrors
162
+ // the web SDK's Message.tsx.
163
+ const isAutoTranslate = isTranslatesEnabled && effectiveTranslateMode !== 'manual';
164
+ const readerLocale = config?.translates?.readerLocale || config?.i18n?.locale || langSource;
165
+ const translationDisplay = useMessageTranslation(message, readerLocale, isAutoTranslate);
166
+
167
+ // `usersSet` is the canonical, continuously-updated identity store; the
168
+ // copy riding on a message is a snapshot of whoever sent it, whenever
169
+ // they sent it. Resolve both the avatar and the display name through
170
+ // usersSet first, falling back to the message for senders usersSet has
171
+ // never seen (broadcast/system accounts).
172
+ //
173
+ // This matters more since the persist layer stopped caching per-message
174
+ // avatars: a cache-restored message carries no profileImage at all (see
175
+ // PERSISTED_MESSAGE_USER_FIELDS), so reading only the message-level copy
176
+ // leaves a blank initials circle for senders whose name resolved fine.
177
+ const usersSet = useSelector(state => state.rooms.usersSet);
178
+ const senderRawId = String(message.user?.id || '');
179
+ const senderLocal = senderRawId.split('@')[0];
180
+ const senderEntry = usersSet?.[senderLocal] || usersSet?.[senderRawId];
181
+ // usersSet FIRST (mirrors the web SDK's Message.tsx): a message stored
182
+ // before usersSet hydrated carries the raw JID localpart as its
183
+ // `user.name`, so preferring `message.user.name` (as resolveSenderDisplayName
184
+ // does) would pin that JID on screen forever even after the real name is
185
+ // known. Reading usersSet first lets the name self-heal the moment the
186
+ // REST roster populates the cache. Falls back to the message's own name
187
+ // (which may carry senderFirstName/senderLastName from the wire) only when
188
+ // usersSet has never seen this sender.
189
+ const senderDisplayName = senderEntry ? `${senderEntry.firstName ?? ''} ${senderEntry.lastName ?? ''}`.trim() || senderEntry.name || senderLocal : message.user?.name || senderLocal || 'Unknown';
190
+ // A broadcast posted by the app itself arrives with the ROOM's own id as
191
+ // its occupant resource, so no roster ever resolves it and the name chain
192
+ // ends at 50 characters of hex. Captioning a bubble with that tells the
193
+ // reader strictly less than showing nothing.
194
+ const hasRealSenderName = !isUnresolvedSenderId(senderDisplayName);
195
+ const senderProfileImage = senderEntry?.profileImage || message.user?.profileImage || '';
147
196
  const {
148
197
  idSet,
149
198
  failedIdSet
@@ -257,7 +306,11 @@ const Message = ({
257
306
  // wraps content in <View>s which break Text-style inheritance, so the bubble
258
307
  // wrapper's fontSize alone never reached the actual text.
259
308
  const bodyTextStyle = chatTextStyle(config?.typography?.messageText);
260
- const messageText = config?.messageTextFilter?.enabled ? parseMessageBody(config?.messageTextFilter.filterFunction(message.body), bodyTextStyle) : parseMessageBody(message.body, bodyTextStyle);
309
+ // In auto mode, render the translation as the primary body — but NEVER for
310
+ // the reader's own messages (they wrote it; no point translating it back).
311
+ const showInlineTranslation = isAutoTranslate && translationDisplay.hasTranslation && !isUser;
312
+ const bodyToRender = showInlineTranslation ? translationDisplay.displayText : message.body;
313
+ const messageText = config?.messageTextFilter?.enabled ? parseMessageBody(config?.messageTextFilter.filterFunction(bodyToRender), bodyTextStyle) : parseMessageBody(bodyToRender, bodyTextStyle);
261
314
  const isFailed = failedIdSet.has(message.id);
262
315
  const isPending = !isFailed && (idSet.has(message.id) || message?.pending || false);
263
316
  const onRetryPress = () => {
@@ -293,12 +346,12 @@ const Message = ({
293
346
  onPress: config?.disableProfilesInteractions ? undefined : () => handleUserAvatarClick(message.user),
294
347
  disabled: !!config?.disableProfilesInteractions,
295
348
  accessible: !config?.disableProfilesInteractions,
296
- children: message.user?.profileImage ? /*#__PURE__*/_jsx(CustomMessagePhoto, {
349
+ children: senderProfileImage ? /*#__PURE__*/_jsx(CustomMessagePhoto, {
297
350
  source: {
298
- uri: message.user.profileImage
351
+ uri: senderProfileImage
299
352
  }
300
353
  }) : /*#__PURE__*/_jsx(Avatar, {
301
- username: message.user.name
354
+ username: senderDisplayName
302
355
  })
303
356
  }), /*#__PURE__*/_jsx(Pressable
304
357
  // The Pressable fills the row's content area, so the bubble
@@ -336,12 +389,12 @@ const Message = ({
336
389
  isMedia: message?.isMediafile === 'true' && !message?.isDeleted,
337
390
  backgroundMessageUser: config?.messageColor?.backgroundMessageUser,
338
391
  backgroundMessage: config?.messageColor?.backgroundMessage,
339
- children: [!isUser && /*#__PURE__*/_jsx(CustomUserName, {
392
+ children: [!isUser && hasRealSenderName && /*#__PURE__*/_jsx(CustomUserName, {
340
393
  color: config?.colors?.primary,
341
394
  media: message?.isMediafile === 'true',
342
395
  fontSize: config?.typography?.senderName?.fontSize,
343
396
  fontWeight: config?.typography?.senderName?.fontWeight,
344
- children: message.user.name
397
+ children: senderDisplayName
345
398
  }), !isReply && message.mainMessage && /*#__PURE__*/_jsx(MessageReply, {
346
399
  handleReplyMessage: handleReplyMessage,
347
400
  isUser: isUser,
@@ -360,14 +413,22 @@ const Message = ({
360
413
  color: config?.messageColor?.color,
361
414
  fontSize: config?.typography?.messageText?.fontSize,
362
415
  fontWeight: config?.typography?.messageText?.fontWeight,
363
- children: /*#__PURE__*/_jsx(Text, {
416
+ children: showInlineTranslation ? /*#__PURE__*/_jsx(TranslatedMessageBody, {
417
+ isUser: isUser,
418
+ originalText: translationDisplay.originalText,
419
+ accentColor: config?.colors?.primary,
420
+ children: /*#__PURE__*/_jsx(Text, {
421
+ children: messageText
422
+ })
423
+ }) : /*#__PURE__*/_jsx(Text, {
364
424
  children: messageText
365
425
  })
366
426
  })
367
- }), config?.enableTranslates && /*#__PURE__*/_jsx(MessageTranslations, {
427
+ }), !isUser && isTranslatesEnabled && effectiveTranslateMode === 'manual' && /*#__PURE__*/_jsx(MessageTranslate, {
368
428
  message: message,
369
429
  config: config,
370
- langSource: langSource
430
+ isUser: isUser,
431
+ readerLocale: readerLocale
371
432
  }), /*#__PURE__*/_jsxs(CustomTimestampRow, {
372
433
  media: message?.isMediafile === 'true',
373
434
  children: [!config?.disableSentLogic && isUser && isPending && /*#__PURE__*/_jsx(Text, {