@ethora/chat-component-rn 26.9.1 → 26.10.0

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 (760) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +19 -0
  3. package/lib/commonjs/assets/icons.js +2 -2
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/Header/HeaderRoomList.js +22 -6
  6. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  7. package/lib/commonjs/components/InputComponents/Search.js +38 -1
  8. package/lib/commonjs/components/InputComponents/Search.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/ArchivedMessageCard.js +166 -0
  10. package/lib/commonjs/components/MainComponents/ArchivedMessageCard.js.map +1 -0
  11. package/lib/commonjs/components/MainComponents/ChatHeader.js +22 -5
  12. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/ChatRoom.js +56 -25
  14. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  15. package/lib/commonjs/components/MainComponents/ChatWrapper.js +31 -1
  16. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  17. package/lib/commonjs/components/MainComponents/MediaMessage.js +18 -3
  18. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  19. package/lib/commonjs/components/MainComponents/MessageList.js +739 -42
  20. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/MessageSearchButton.js +58 -0
  22. package/lib/commonjs/components/MainComponents/MessageSearchButton.js.map +1 -0
  23. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +15 -6
  24. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/RoomList.js +110 -1
  26. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  27. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +14 -3
  28. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  29. package/lib/commonjs/components/MessageBubble/BubbleHighlight.js +112 -0
  30. package/lib/commonjs/components/MessageBubble/BubbleHighlight.js.map +1 -0
  31. package/lib/commonjs/components/MessageBubble/Message.js +169 -125
  32. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  33. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +98 -78
  34. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  35. package/lib/commonjs/components/MessageBubble/messageMenuLayout.js +50 -0
  36. package/lib/commonjs/components/MessageBubble/messageMenuLayout.js.map +1 -0
  37. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +73 -37
  38. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  39. package/lib/commonjs/components/Modals/MessageSearchModal/MessageHitResults.js +253 -0
  40. package/lib/commonjs/components/Modals/MessageSearchModal/MessageHitResults.js.map +1 -0
  41. package/lib/commonjs/components/Modals/MessageSearchModal/MessageSearchModal.js +488 -0
  42. package/lib/commonjs/components/Modals/MessageSearchModal/MessageSearchModal.js.map +1 -0
  43. package/lib/commonjs/components/Modals/MessageSearchModal/openHit.js +51 -0
  44. package/lib/commonjs/components/Modals/MessageSearchModal/openHit.js.map +1 -0
  45. package/lib/commonjs/components/Modals/MessageSearchModal/resolveSender.js +47 -0
  46. package/lib/commonjs/components/Modals/MessageSearchModal/resolveSender.js.map +1 -0
  47. package/lib/commonjs/components/Modals/MessageSearchModal/searchFilters.js +83 -0
  48. package/lib/commonjs/components/Modals/MessageSearchModal/searchFilters.js.map +1 -0
  49. package/lib/commonjs/components/Modals/MessageSearchModal/snippet.js +61 -0
  50. package/lib/commonjs/components/Modals/MessageSearchModal/snippet.js.map +1 -0
  51. package/lib/commonjs/components/Modals/MessageSearchModal/useMessageSearch.js +136 -0
  52. package/lib/commonjs/components/Modals/MessageSearchModal/useMessageSearch.js.map +1 -0
  53. package/lib/commonjs/components/Modals/PublicChatsModal/PublicChatsModal.js +306 -0
  54. package/lib/commonjs/components/Modals/PublicChatsModal/PublicChatsModal.js.map +1 -0
  55. package/lib/commonjs/components/Modals/PublicChatsModal/publicChatsLogic.js +36 -0
  56. package/lib/commonjs/components/Modals/PublicChatsModal/publicChatsLogic.js.map +1 -0
  57. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +8 -1
  58. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  59. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +13 -2
  60. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  61. package/lib/commonjs/components/RoomComponents/SwipeableRoomRow.js +38 -6
  62. package/lib/commonjs/components/RoomComponents/SwipeableRoomRow.js.map +1 -1
  63. package/lib/commonjs/components/Thread/ThreadHeader.js +3 -1
  64. package/lib/commonjs/components/Thread/ThreadHeader.js.map +1 -1
  65. package/lib/commonjs/components/Thread/ThreadWrapper.js +90 -10
  66. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  67. package/lib/commonjs/components/styled/AudioDecoderHost.js +338 -0
  68. package/lib/commonjs/components/styled/AudioDecoderHost.js.map +1 -0
  69. package/lib/commonjs/components/styled/AudioMessage.js +493 -420
  70. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  71. package/lib/commonjs/components/styled/SendInput.js +31 -5
  72. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  73. package/lib/commonjs/context/MessageNotificationContext.js +14 -4
  74. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  75. package/lib/commonjs/context/xmppProvider.js +41 -77
  76. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  77. package/lib/commonjs/helpers/audioWaveform.js +165 -0
  78. package/lib/commonjs/helpers/audioWaveform.js.map +1 -0
  79. package/lib/commonjs/helpers/backgroundJoinSweep.js +36 -0
  80. package/lib/commonjs/helpers/backgroundJoinSweep.js.map +1 -0
  81. package/lib/commonjs/helpers/bubbleHighlight.js +44 -0
  82. package/lib/commonjs/helpers/bubbleHighlight.js.map +1 -0
  83. package/lib/commonjs/helpers/checkUniqueUsers.js +14 -12
  84. package/lib/commonjs/helpers/checkUniqueUsers.js.map +1 -1
  85. package/lib/commonjs/helpers/constants/MODAL_COMPONENTS.js +5 -1
  86. package/lib/commonjs/helpers/constants/MODAL_COMPONENTS.js.map +1 -1
  87. package/lib/commonjs/helpers/constants/MODAL_TYPES.js +3 -1
  88. package/lib/commonjs/helpers/constants/MODAL_TYPES.js.map +1 -1
  89. package/lib/commonjs/helpers/createRoomFromApi.js +40 -3
  90. package/lib/commonjs/helpers/createRoomFromApi.js.map +1 -1
  91. package/lib/commonjs/helpers/dedupeMembers.js +34 -0
  92. package/lib/commonjs/helpers/dedupeMembers.js.map +1 -0
  93. package/lib/commonjs/helpers/ethoraLogger.js +56 -0
  94. package/lib/commonjs/helpers/ethoraLogger.js.map +1 -0
  95. package/lib/commonjs/helpers/getUnnamedUsers.js +9 -4
  96. package/lib/commonjs/helpers/getUnnamedUsers.js.map +1 -1
  97. package/lib/commonjs/helpers/historyPreloadConfig.js +44 -0
  98. package/lib/commonjs/helpers/historyPreloadConfig.js.map +1 -0
  99. package/lib/commonjs/helpers/historyPreloadScheduler.js +372 -137
  100. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  101. package/lib/commonjs/helpers/initRoomsPresence.js +17 -5
  102. package/lib/commonjs/helpers/initRoomsPresence.js.map +1 -1
  103. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +5 -0
  104. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  105. package/lib/commonjs/helpers/isLikelyMucJid.js +67 -0
  106. package/lib/commonjs/helpers/isLikelyMucJid.js.map +1 -0
  107. package/lib/commonjs/helpers/isMessageSearchEnabled.js +18 -0
  108. package/lib/commonjs/helpers/isMessageSearchEnabled.js.map +1 -0
  109. package/lib/commonjs/helpers/joiningRoom.js +14 -0
  110. package/lib/commonjs/helpers/joiningRoom.js.map +1 -0
  111. package/lib/commonjs/helpers/jumpThread.js +100 -0
  112. package/lib/commonjs/helpers/jumpThread.js.map +1 -0
  113. package/lib/commonjs/helpers/jumpToMessage.js +58 -0
  114. package/lib/commonjs/helpers/jumpToMessage.js.map +1 -0
  115. package/lib/commonjs/helpers/jumpWindow.js +187 -0
  116. package/lib/commonjs/helpers/jumpWindow.js.map +1 -0
  117. package/lib/commonjs/helpers/loadRoomHistory.js +75 -0
  118. package/lib/commonjs/helpers/loadRoomHistory.js.map +1 -0
  119. package/lib/commonjs/helpers/notificationPolicy.js +77 -0
  120. package/lib/commonjs/helpers/notificationPolicy.js.map +1 -0
  121. package/lib/commonjs/helpers/openRoomAtMessage.js +47 -0
  122. package/lib/commonjs/helpers/openRoomAtMessage.js.map +1 -0
  123. package/lib/commonjs/helpers/openThreadForJump.js +72 -0
  124. package/lib/commonjs/helpers/openThreadForJump.js.map +1 -0
  125. package/lib/commonjs/helpers/parseMessageReference.js +27 -8
  126. package/lib/commonjs/helpers/parseMessageReference.js.map +1 -1
  127. package/lib/commonjs/helpers/publicChatsEntry.js +17 -0
  128. package/lib/commonjs/helpers/publicChatsEntry.js.map +1 -0
  129. package/lib/commonjs/helpers/roomActivityScore.js +37 -0
  130. package/lib/commonjs/helpers/roomActivityScore.js.map +1 -0
  131. package/lib/commonjs/helpers/roomUserCount.js +36 -0
  132. package/lib/commonjs/helpers/roomUserCount.js.map +1 -0
  133. package/lib/commonjs/helpers/runConfiguredHistoryPreload.js +68 -0
  134. package/lib/commonjs/helpers/runConfiguredHistoryPreload.js.map +1 -0
  135. package/lib/commonjs/helpers/sessionAppId.js +24 -0
  136. package/lib/commonjs/helpers/sessionAppId.js.map +1 -0
  137. package/lib/commonjs/helpers/timestamp.js +43 -0
  138. package/lib/commonjs/helpers/timestamp.js.map +1 -0
  139. package/lib/commonjs/helpers/userResolver.js +517 -0
  140. package/lib/commonjs/helpers/userResolver.js.map +1 -0
  141. package/lib/commonjs/helpers/xmppIdShape.js +52 -0
  142. package/lib/commonjs/helpers/xmppIdShape.js.map +1 -0
  143. package/lib/commonjs/hooks/useChatWrapperInit.js +27 -5
  144. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  145. package/lib/commonjs/hooks/useHeapSender.js +54 -3
  146. package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
  147. package/lib/commonjs/hooks/useJumpToMessage.js +411 -0
  148. package/lib/commonjs/hooks/useJumpToMessage.js.map +1 -0
  149. package/lib/commonjs/hooks/useMessageLoaderQueue.js +32 -5
  150. package/lib/commonjs/hooks/useMessageLoaderQueue.js.map +1 -1
  151. package/lib/commonjs/hooks/useMessageQueue.js +13 -5
  152. package/lib/commonjs/hooks/useMessageQueue.js.map +1 -1
  153. package/lib/commonjs/hooks/useRoomDirectory.js +29 -0
  154. package/lib/commonjs/hooks/useRoomDirectory.js.map +1 -0
  155. package/lib/commonjs/hooks/useRoomInitialization.js +27 -5
  156. package/lib/commonjs/hooks/useRoomInitialization.js.map +1 -1
  157. package/lib/commonjs/hooks/useRoomMute.js +62 -0
  158. package/lib/commonjs/hooks/useRoomMute.js.map +1 -0
  159. package/lib/commonjs/hooks/useRoomState.js +3 -1
  160. package/lib/commonjs/hooks/useRoomState.js.map +1 -1
  161. package/lib/commonjs/hooks/useSendMessage.js +13 -3
  162. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  163. package/lib/commonjs/i18n/strings.js +288 -6
  164. package/lib/commonjs/i18n/strings.js.map +1 -1
  165. package/lib/commonjs/networking/api-requests/messageSearch.api.js +87 -0
  166. package/lib/commonjs/networking/api-requests/messageSearch.api.js.map +1 -0
  167. package/lib/commonjs/networking/api-requests/publicChats.api.js +48 -0
  168. package/lib/commonjs/networking/api-requests/publicChats.api.js.map +1 -0
  169. package/lib/commonjs/networking/api-requests/roomMembers.api.js +253 -4
  170. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  171. package/lib/commonjs/networking/api-requests/rooms.api.js +48 -12
  172. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  173. package/lib/commonjs/networking/api-requests/xmppToken.api.js +71 -0
  174. package/lib/commonjs/networking/api-requests/xmppToken.api.js.map +1 -0
  175. package/lib/commonjs/networking/ethoraEvents.js +227 -0
  176. package/lib/commonjs/networking/ethoraEvents.js.map +1 -0
  177. package/lib/commonjs/networking/stanzaHandlers.js +153 -16
  178. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  179. package/lib/commonjs/networking/xmpp/allRoomPresences.xmpp.js +124 -3
  180. package/lib/commonjs/networking/xmpp/allRoomPresences.xmpp.js.map +1 -1
  181. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js +319 -35
  182. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js.map +1 -1
  183. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +7 -0
  184. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  185. package/lib/commonjs/networking/xmpp/historyCursor.js +101 -0
  186. package/lib/commonjs/networking/xmpp/historyCursor.js.map +1 -0
  187. package/lib/commonjs/networking/xmpp/mamQueryIds.js +17 -0
  188. package/lib/commonjs/networking/xmpp/mamQueryIds.js.map +1 -0
  189. package/lib/commonjs/networking/xmpp/mamRouter.js +24 -9
  190. package/lib/commonjs/networking/xmpp/mamRouter.js.map +1 -1
  191. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +70 -65
  192. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  193. package/lib/commonjs/networking/xmpp/roomJoinSweep.js +389 -0
  194. package/lib/commonjs/networking/xmpp/roomJoinSweep.js.map +1 -0
  195. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js +0 -1
  196. package/lib/commonjs/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  197. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +0 -1
  198. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  199. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +0 -1
  200. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  201. package/lib/commonjs/networking/xmppClient.js +269 -41
  202. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  203. package/lib/commonjs/networking/xmppCredentials.js +80 -0
  204. package/lib/commonjs/networking/xmppCredentials.js.map +1 -0
  205. package/lib/commonjs/roomStore/Middleware/jumpThreadMiddleware.js +158 -0
  206. package/lib/commonjs/roomStore/Middleware/jumpThreadMiddleware.js.map +1 -0
  207. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js +6 -0
  208. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  209. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +45 -7
  210. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  211. package/lib/commonjs/roomStore/chatSettingsSlice.js +15 -1
  212. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  213. package/lib/commonjs/roomStore/index.js +13 -3
  214. package/lib/commonjs/roomStore/index.js.map +1 -1
  215. package/lib/commonjs/roomStore/persistence.js +48 -1
  216. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  217. package/lib/commonjs/roomStore/roomsSlice.js +474 -60
  218. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  219. package/lib/commonjs/roomStore/safeKey.js +44 -0
  220. package/lib/commonjs/roomStore/safeKey.js.map +1 -0
  221. package/lib/commonjs/roomStore/usersSetCap.js +37 -0
  222. package/lib/commonjs/roomStore/usersSetCap.js.map +1 -0
  223. package/lib/commonjs/version.js +1 -1
  224. package/lib/commonjs/version.js.map +1 -1
  225. package/lib/module/assets/icons.js +1 -1
  226. package/lib/module/assets/icons.js.map +1 -1
  227. package/lib/module/components/Header/HeaderRoomList.js +23 -7
  228. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  229. package/lib/module/components/InputComponents/Search.js +39 -2
  230. package/lib/module/components/InputComponents/Search.js.map +1 -1
  231. package/lib/module/components/MainComponents/ArchivedMessageCard.js +161 -0
  232. package/lib/module/components/MainComponents/ArchivedMessageCard.js.map +1 -0
  233. package/lib/module/components/MainComponents/ChatHeader.js +22 -5
  234. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  235. package/lib/module/components/MainComponents/ChatRoom.js +57 -26
  236. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  237. package/lib/module/components/MainComponents/ChatWrapper.js +31 -1
  238. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  239. package/lib/module/components/MainComponents/MediaMessage.js +18 -3
  240. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  241. package/lib/module/components/MainComponents/MessageList.js +740 -42
  242. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  243. package/lib/module/components/MainComponents/MessageSearchButton.js +48 -0
  244. package/lib/module/components/MainComponents/MessageSearchButton.js.map +1 -0
  245. package/lib/module/components/MainComponents/ReduxWrapper.js +15 -7
  246. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  247. package/lib/module/components/MainComponents/RoomList.js +111 -2
  248. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  249. package/lib/module/components/Menu/HeaderRoomListMenu.js +15 -4
  250. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  251. package/lib/module/components/MessageBubble/BubbleHighlight.js +106 -0
  252. package/lib/module/components/MessageBubble/BubbleHighlight.js.map +1 -0
  253. package/lib/module/components/MessageBubble/Message.js +172 -127
  254. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  255. package/lib/module/components/MessageBubble/MessageInteractions.js +98 -78
  256. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  257. package/lib/module/components/MessageBubble/messageMenuLayout.js +45 -0
  258. package/lib/module/components/MessageBubble/messageMenuLayout.js.map +1 -0
  259. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +74 -38
  260. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  261. package/lib/module/components/Modals/MessageSearchModal/MessageHitResults.js +243 -0
  262. package/lib/module/components/Modals/MessageSearchModal/MessageHitResults.js.map +1 -0
  263. package/lib/module/components/Modals/MessageSearchModal/MessageSearchModal.js +482 -0
  264. package/lib/module/components/Modals/MessageSearchModal/MessageSearchModal.js.map +1 -0
  265. package/lib/module/components/Modals/MessageSearchModal/openHit.js +45 -0
  266. package/lib/module/components/Modals/MessageSearchModal/openHit.js.map +1 -0
  267. package/lib/module/components/Modals/MessageSearchModal/resolveSender.js +41 -0
  268. package/lib/module/components/Modals/MessageSearchModal/resolveSender.js.map +1 -0
  269. package/lib/module/components/Modals/MessageSearchModal/searchFilters.js +74 -0
  270. package/lib/module/components/Modals/MessageSearchModal/searchFilters.js.map +1 -0
  271. package/lib/module/components/Modals/MessageSearchModal/snippet.js +57 -0
  272. package/lib/module/components/Modals/MessageSearchModal/snippet.js.map +1 -0
  273. package/lib/module/components/Modals/MessageSearchModal/useMessageSearch.js +131 -0
  274. package/lib/module/components/Modals/MessageSearchModal/useMessageSearch.js.map +1 -0
  275. package/lib/module/components/Modals/PublicChatsModal/PublicChatsModal.js +300 -0
  276. package/lib/module/components/Modals/PublicChatsModal/PublicChatsModal.js.map +1 -0
  277. package/lib/module/components/Modals/PublicChatsModal/publicChatsLogic.js +30 -0
  278. package/lib/module/components/Modals/PublicChatsModal/publicChatsLogic.js.map +1 -0
  279. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +8 -1
  280. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  281. package/lib/module/components/RoomComponents/ChatRoomItem.js +14 -3
  282. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  283. package/lib/module/components/RoomComponents/SwipeableRoomRow.js +39 -7
  284. package/lib/module/components/RoomComponents/SwipeableRoomRow.js.map +1 -1
  285. package/lib/module/components/Thread/ThreadHeader.js +3 -1
  286. package/lib/module/components/Thread/ThreadHeader.js.map +1 -1
  287. package/lib/module/components/Thread/ThreadWrapper.js +89 -9
  288. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  289. package/lib/module/components/styled/AudioDecoderHost.js +332 -0
  290. package/lib/module/components/styled/AudioDecoderHost.js.map +1 -0
  291. package/lib/module/components/styled/AudioMessage.js +495 -422
  292. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  293. package/lib/module/components/styled/SendInput.js +32 -6
  294. package/lib/module/components/styled/SendInput.js.map +1 -1
  295. package/lib/module/context/MessageNotificationContext.js +15 -5
  296. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  297. package/lib/module/context/xmppProvider.js +42 -78
  298. package/lib/module/context/xmppProvider.js.map +1 -1
  299. package/lib/module/helpers/audioWaveform.js +153 -0
  300. package/lib/module/helpers/audioWaveform.js.map +1 -0
  301. package/lib/module/helpers/backgroundJoinSweep.js +30 -0
  302. package/lib/module/helpers/backgroundJoinSweep.js.map +1 -0
  303. package/lib/module/helpers/bubbleHighlight.js +38 -0
  304. package/lib/module/helpers/bubbleHighlight.js.map +1 -0
  305. package/lib/module/helpers/checkUniqueUsers.js +15 -13
  306. package/lib/module/helpers/checkUniqueUsers.js.map +1 -1
  307. package/lib/module/helpers/constants/MODAL_COMPONENTS.js +5 -1
  308. package/lib/module/helpers/constants/MODAL_COMPONENTS.js.map +1 -1
  309. package/lib/module/helpers/constants/MODAL_TYPES.js +3 -1
  310. package/lib/module/helpers/constants/MODAL_TYPES.js.map +1 -1
  311. package/lib/module/helpers/createRoomFromApi.js +37 -3
  312. package/lib/module/helpers/createRoomFromApi.js.map +1 -1
  313. package/lib/module/helpers/dedupeMembers.js +28 -0
  314. package/lib/module/helpers/dedupeMembers.js.map +1 -0
  315. package/lib/module/helpers/ethoraLogger.js +52 -0
  316. package/lib/module/helpers/ethoraLogger.js.map +1 -0
  317. package/lib/module/helpers/getUnnamedUsers.js +9 -4
  318. package/lib/module/helpers/getUnnamedUsers.js.map +1 -1
  319. package/lib/module/helpers/historyPreloadConfig.js +39 -0
  320. package/lib/module/helpers/historyPreloadConfig.js.map +1 -0
  321. package/lib/module/helpers/historyPreloadScheduler.js +368 -134
  322. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  323. package/lib/module/helpers/initRoomsPresence.js +18 -5
  324. package/lib/module/helpers/initRoomsPresence.js.map +1 -1
  325. package/lib/module/helpers/insertMessageWithDelimiter.js +5 -0
  326. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  327. package/lib/module/helpers/isLikelyMucJid.js +60 -0
  328. package/lib/module/helpers/isLikelyMucJid.js.map +1 -0
  329. package/lib/module/helpers/isMessageSearchEnabled.js +13 -0
  330. package/lib/module/helpers/isMessageSearchEnabled.js.map +1 -0
  331. package/lib/module/helpers/joiningRoom.js +9 -0
  332. package/lib/module/helpers/joiningRoom.js.map +1 -0
  333. package/lib/module/helpers/jumpThread.js +83 -0
  334. package/lib/module/helpers/jumpThread.js.map +1 -0
  335. package/lib/module/helpers/jumpToMessage.js +52 -0
  336. package/lib/module/helpers/jumpToMessage.js.map +1 -0
  337. package/lib/module/helpers/jumpWindow.js +177 -0
  338. package/lib/module/helpers/jumpWindow.js.map +1 -0
  339. package/lib/module/helpers/loadRoomHistory.js +69 -0
  340. package/lib/module/helpers/loadRoomHistory.js.map +1 -0
  341. package/lib/module/helpers/notificationPolicy.js +70 -0
  342. package/lib/module/helpers/notificationPolicy.js.map +1 -0
  343. package/lib/module/helpers/openRoomAtMessage.js +41 -0
  344. package/lib/module/helpers/openRoomAtMessage.js.map +1 -0
  345. package/lib/module/helpers/openThreadForJump.js +68 -0
  346. package/lib/module/helpers/openThreadForJump.js.map +1 -0
  347. package/lib/module/helpers/parseMessageReference.js +26 -6
  348. package/lib/module/helpers/parseMessageReference.js.map +1 -1
  349. package/lib/module/helpers/publicChatsEntry.js +12 -0
  350. package/lib/module/helpers/publicChatsEntry.js.map +1 -0
  351. package/lib/module/helpers/roomActivityScore.js +30 -0
  352. package/lib/module/helpers/roomActivityScore.js.map +1 -0
  353. package/lib/module/helpers/roomUserCount.js +29 -0
  354. package/lib/module/helpers/roomUserCount.js.map +1 -0
  355. package/lib/module/helpers/runConfiguredHistoryPreload.js +63 -0
  356. package/lib/module/helpers/runConfiguredHistoryPreload.js.map +1 -0
  357. package/lib/module/helpers/sessionAppId.js +20 -0
  358. package/lib/module/helpers/sessionAppId.js.map +1 -0
  359. package/lib/module/helpers/timestamp.js +37 -0
  360. package/lib/module/helpers/timestamp.js.map +1 -0
  361. package/lib/module/helpers/userResolver.js +503 -0
  362. package/lib/module/helpers/userResolver.js.map +1 -0
  363. package/lib/module/helpers/xmppIdShape.js +46 -0
  364. package/lib/module/helpers/xmppIdShape.js.map +1 -0
  365. package/lib/module/hooks/useChatWrapperInit.js +16 -5
  366. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  367. package/lib/module/hooks/useHeapSender.js +54 -3
  368. package/lib/module/hooks/useHeapSender.js.map +1 -1
  369. package/lib/module/hooks/useJumpToMessage.js +389 -0
  370. package/lib/module/hooks/useJumpToMessage.js.map +1 -0
  371. package/lib/module/hooks/useMessageLoaderQueue.js +32 -5
  372. package/lib/module/hooks/useMessageLoaderQueue.js.map +1 -1
  373. package/lib/module/hooks/useMessageQueue.js +13 -5
  374. package/lib/module/hooks/useMessageQueue.js.map +1 -1
  375. package/lib/module/hooks/useRoomDirectory.js +24 -0
  376. package/lib/module/hooks/useRoomDirectory.js.map +1 -0
  377. package/lib/module/hooks/useRoomInitialization.js +29 -7
  378. package/lib/module/hooks/useRoomInitialization.js.map +1 -1
  379. package/lib/module/hooks/useRoomMute.js +58 -0
  380. package/lib/module/hooks/useRoomMute.js.map +1 -0
  381. package/lib/module/hooks/useRoomState.js +3 -1
  382. package/lib/module/hooks/useRoomState.js.map +1 -1
  383. package/lib/module/hooks/useSendMessage.js +13 -3
  384. package/lib/module/hooks/useSendMessage.js.map +1 -1
  385. package/lib/module/i18n/strings.js +288 -6
  386. package/lib/module/i18n/strings.js.map +1 -1
  387. package/lib/module/networking/api-requests/messageSearch.api.js +81 -0
  388. package/lib/module/networking/api-requests/messageSearch.api.js.map +1 -0
  389. package/lib/module/networking/api-requests/publicChats.api.js +43 -0
  390. package/lib/module/networking/api-requests/publicChats.api.js.map +1 -0
  391. package/lib/module/networking/api-requests/roomMembers.api.js +248 -4
  392. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  393. package/lib/module/networking/api-requests/rooms.api.js +48 -12
  394. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  395. package/lib/module/networking/api-requests/xmppToken.api.js +66 -0
  396. package/lib/module/networking/api-requests/xmppToken.api.js.map +1 -0
  397. package/lib/module/networking/ethoraEvents.js +220 -0
  398. package/lib/module/networking/ethoraEvents.js.map +1 -0
  399. package/lib/module/networking/stanzaHandlers.js +155 -18
  400. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  401. package/lib/module/networking/xmpp/allRoomPresences.xmpp.js +125 -3
  402. package/lib/module/networking/xmpp/allRoomPresences.xmpp.js.map +1 -1
  403. package/lib/module/networking/xmpp/getHistory.xmpp.js +318 -35
  404. package/lib/module/networking/xmpp/getHistory.xmpp.js.map +1 -1
  405. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +7 -0
  406. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  407. package/lib/module/networking/xmpp/historyCursor.js +95 -0
  408. package/lib/module/networking/xmpp/historyCursor.js.map +1 -0
  409. package/lib/module/networking/xmpp/mamQueryIds.js +12 -0
  410. package/lib/module/networking/xmpp/mamQueryIds.js.map +1 -0
  411. package/lib/module/networking/xmpp/mamRouter.js +22 -8
  412. package/lib/module/networking/xmpp/mamRouter.js.map +1 -1
  413. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +68 -62
  414. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  415. package/lib/module/networking/xmpp/roomJoinSweep.js +385 -0
  416. package/lib/module/networking/xmpp/roomJoinSweep.js.map +1 -0
  417. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js +0 -1
  418. package/lib/module/networking/xmpp/sendMediaMessage.xmpp.js.map +1 -1
  419. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +0 -1
  420. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  421. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +0 -1
  422. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  423. package/lib/module/networking/xmppClient.js +269 -41
  424. package/lib/module/networking/xmppClient.js.map +1 -1
  425. package/lib/module/networking/xmppCredentials.js +76 -0
  426. package/lib/module/networking/xmppCredentials.js.map +1 -0
  427. package/lib/module/roomStore/Middleware/jumpThreadMiddleware.js +153 -0
  428. package/lib/module/roomStore/Middleware/jumpThreadMiddleware.js.map +1 -0
  429. package/lib/module/roomStore/Middleware/reactionsMiddleware.js +6 -0
  430. package/lib/module/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  431. package/lib/module/roomStore/Middleware/unreadMidlleware.js +46 -7
  432. package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  433. package/lib/module/roomStore/chatSettingsSlice.js +13 -0
  434. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  435. package/lib/module/roomStore/index.js +7 -3
  436. package/lib/module/roomStore/index.js.map +1 -1
  437. package/lib/module/roomStore/persistence.js +46 -1
  438. package/lib/module/roomStore/persistence.js.map +1 -1
  439. package/lib/module/roomStore/roomsSlice.js +459 -58
  440. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  441. package/lib/module/roomStore/safeKey.js +37 -0
  442. package/lib/module/roomStore/safeKey.js.map +1 -0
  443. package/lib/module/roomStore/usersSetCap.js +32 -0
  444. package/lib/module/roomStore/usersSetCap.js.map +1 -0
  445. package/lib/module/version.js +1 -1
  446. package/lib/module/version.js.map +1 -1
  447. package/lib/typescript/assets/icons.d.ts +4 -0
  448. package/lib/typescript/assets/icons.d.ts.map +1 -1
  449. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  450. package/lib/typescript/components/InputComponents/Search.d.ts.map +1 -1
  451. package/lib/typescript/components/MainComponents/ArchivedMessageCard.d.ts +12 -0
  452. package/lib/typescript/components/MainComponents/ArchivedMessageCard.d.ts.map +1 -0
  453. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  454. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  455. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  456. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  457. package/lib/typescript/components/MainComponents/MessageList.d.ts +22 -1
  458. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  459. package/lib/typescript/components/MainComponents/MessageSearchButton.d.ts +7 -0
  460. package/lib/typescript/components/MainComponents/MessageSearchButton.d.ts.map +1 -0
  461. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  462. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  463. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  464. package/lib/typescript/components/MessageBubble/BubbleHighlight.d.ts +12 -0
  465. package/lib/typescript/components/MessageBubble/BubbleHighlight.d.ts.map +1 -0
  466. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  467. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +5 -0
  468. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  469. package/lib/typescript/components/MessageBubble/messageMenuLayout.d.ts +29 -0
  470. package/lib/typescript/components/MessageBubble/messageMenuLayout.d.ts.map +1 -0
  471. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +2 -0
  472. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  473. package/lib/typescript/components/Modals/MessageSearchModal/MessageHitResults.d.ts +44 -0
  474. package/lib/typescript/components/Modals/MessageSearchModal/MessageHitResults.d.ts.map +1 -0
  475. package/lib/typescript/components/Modals/MessageSearchModal/MessageSearchModal.d.ts +12 -0
  476. package/lib/typescript/components/Modals/MessageSearchModal/MessageSearchModal.d.ts.map +1 -0
  477. package/lib/typescript/components/Modals/MessageSearchModal/openHit.d.ts +15 -0
  478. package/lib/typescript/components/Modals/MessageSearchModal/openHit.d.ts.map +1 -0
  479. package/lib/typescript/components/Modals/MessageSearchModal/resolveSender.d.ts +34 -0
  480. package/lib/typescript/components/Modals/MessageSearchModal/resolveSender.d.ts.map +1 -0
  481. package/lib/typescript/components/Modals/MessageSearchModal/searchFilters.d.ts +41 -0
  482. package/lib/typescript/components/Modals/MessageSearchModal/searchFilters.d.ts.map +1 -0
  483. package/lib/typescript/components/Modals/MessageSearchModal/snippet.d.ts +15 -0
  484. package/lib/typescript/components/Modals/MessageSearchModal/snippet.d.ts.map +1 -0
  485. package/lib/typescript/components/Modals/MessageSearchModal/useMessageSearch.d.ts +23 -0
  486. package/lib/typescript/components/Modals/MessageSearchModal/useMessageSearch.d.ts.map +1 -0
  487. package/lib/typescript/components/Modals/PublicChatsModal/PublicChatsModal.d.ts +16 -0
  488. package/lib/typescript/components/Modals/PublicChatsModal/PublicChatsModal.d.ts.map +1 -0
  489. package/lib/typescript/components/Modals/PublicChatsModal/publicChatsLogic.d.ts +14 -0
  490. package/lib/typescript/components/Modals/PublicChatsModal/publicChatsLogic.d.ts.map +1 -0
  491. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  492. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  493. package/lib/typescript/components/RoomComponents/SwipeableRoomRow.d.ts +5 -1
  494. package/lib/typescript/components/RoomComponents/SwipeableRoomRow.d.ts.map +1 -1
  495. package/lib/typescript/components/Thread/ThreadHeader.d.ts.map +1 -1
  496. package/lib/typescript/components/Thread/ThreadWrapper.d.ts +1 -0
  497. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  498. package/lib/typescript/components/styled/AudioDecoderHost.d.ts +39 -0
  499. package/lib/typescript/components/styled/AudioDecoderHost.d.ts.map +1 -0
  500. package/lib/typescript/components/styled/AudioMessage.d.ts +14 -1
  501. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  502. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  503. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  504. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  505. package/lib/typescript/helpers/audioWaveform.d.ts +54 -0
  506. package/lib/typescript/helpers/audioWaveform.d.ts.map +1 -0
  507. package/lib/typescript/helpers/backgroundJoinSweep.d.ts +14 -0
  508. package/lib/typescript/helpers/backgroundJoinSweep.d.ts.map +1 -0
  509. package/lib/typescript/helpers/bubbleHighlight.d.ts +17 -0
  510. package/lib/typescript/helpers/bubbleHighlight.d.ts.map +1 -0
  511. package/lib/typescript/helpers/checkUniqueUsers.d.ts +2 -2
  512. package/lib/typescript/helpers/checkUniqueUsers.d.ts.map +1 -1
  513. package/lib/typescript/helpers/constants/MODAL_COMPONENTS.d.ts.map +1 -1
  514. package/lib/typescript/helpers/constants/MODAL_TYPES.d.ts +2 -0
  515. package/lib/typescript/helpers/constants/MODAL_TYPES.d.ts.map +1 -1
  516. package/lib/typescript/helpers/createRoomFromApi.d.ts +25 -0
  517. package/lib/typescript/helpers/createRoomFromApi.d.ts.map +1 -1
  518. package/lib/typescript/helpers/dedupeMembers.d.ts +11 -0
  519. package/lib/typescript/helpers/dedupeMembers.d.ts.map +1 -0
  520. package/lib/typescript/helpers/ethoraLogger.d.ts +13 -0
  521. package/lib/typescript/helpers/ethoraLogger.d.ts.map +1 -0
  522. package/lib/typescript/helpers/getUnnamedUsers.d.ts.map +1 -1
  523. package/lib/typescript/helpers/historyPreloadConfig.d.ts +26 -0
  524. package/lib/typescript/helpers/historyPreloadConfig.d.ts.map +1 -0
  525. package/lib/typescript/helpers/historyPreloadScheduler.d.ts +8 -4
  526. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  527. package/lib/typescript/helpers/initRoomsPresence.d.ts +7 -0
  528. package/lib/typescript/helpers/initRoomsPresence.d.ts.map +1 -1
  529. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  530. package/lib/typescript/helpers/isLikelyMucJid.d.ts +19 -0
  531. package/lib/typescript/helpers/isLikelyMucJid.d.ts.map +1 -0
  532. package/lib/typescript/helpers/isMessageSearchEnabled.d.ts +12 -0
  533. package/lib/typescript/helpers/isMessageSearchEnabled.d.ts.map +1 -0
  534. package/lib/typescript/helpers/joiningRoom.d.ts +7 -0
  535. package/lib/typescript/helpers/joiningRoom.d.ts.map +1 -0
  536. package/lib/typescript/helpers/jumpThread.d.ts +48 -0
  537. package/lib/typescript/helpers/jumpThread.d.ts.map +1 -0
  538. package/lib/typescript/helpers/jumpToMessage.d.ts +26 -0
  539. package/lib/typescript/helpers/jumpToMessage.d.ts.map +1 -0
  540. package/lib/typescript/helpers/jumpWindow.d.ts +74 -0
  541. package/lib/typescript/helpers/jumpWindow.d.ts.map +1 -0
  542. package/lib/typescript/helpers/loadRoomHistory.d.ts +34 -0
  543. package/lib/typescript/helpers/loadRoomHistory.d.ts.map +1 -0
  544. package/lib/typescript/helpers/notificationPolicy.d.ts +42 -0
  545. package/lib/typescript/helpers/notificationPolicy.d.ts.map +1 -0
  546. package/lib/typescript/helpers/openRoomAtMessage.d.ts +17 -0
  547. package/lib/typescript/helpers/openRoomAtMessage.d.ts.map +1 -0
  548. package/lib/typescript/helpers/openThreadForJump.d.ts +27 -0
  549. package/lib/typescript/helpers/openThreadForJump.d.ts.map +1 -0
  550. package/lib/typescript/helpers/parseMessageReference.d.ts +18 -5
  551. package/lib/typescript/helpers/parseMessageReference.d.ts.map +1 -1
  552. package/lib/typescript/helpers/publicChatsEntry.d.ts +11 -0
  553. package/lib/typescript/helpers/publicChatsEntry.d.ts.map +1 -0
  554. package/lib/typescript/helpers/roomActivityScore.d.ts +5 -0
  555. package/lib/typescript/helpers/roomActivityScore.d.ts.map +1 -0
  556. package/lib/typescript/helpers/roomUserCount.d.ts +20 -0
  557. package/lib/typescript/helpers/roomUserCount.d.ts.map +1 -0
  558. package/lib/typescript/helpers/runConfiguredHistoryPreload.d.ts +21 -0
  559. package/lib/typescript/helpers/runConfiguredHistoryPreload.d.ts.map +1 -0
  560. package/lib/typescript/helpers/sessionAppId.d.ts +8 -0
  561. package/lib/typescript/helpers/sessionAppId.d.ts.map +1 -0
  562. package/lib/typescript/helpers/timestamp.d.ts +3 -0
  563. package/lib/typescript/helpers/timestamp.d.ts.map +1 -0
  564. package/lib/typescript/helpers/userResolver.d.ts +58 -0
  565. package/lib/typescript/helpers/userResolver.d.ts.map +1 -0
  566. package/lib/typescript/helpers/xmppIdShape.d.ts +10 -0
  567. package/lib/typescript/helpers/xmppIdShape.d.ts.map +1 -0
  568. package/lib/typescript/hooks/useChatWrapperInit.d.ts +2 -0
  569. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  570. package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
  571. package/lib/typescript/hooks/useJumpToMessage.d.ts +116 -0
  572. package/lib/typescript/hooks/useJumpToMessage.d.ts.map +1 -0
  573. package/lib/typescript/hooks/useMessageLoaderQueue.d.ts.map +1 -1
  574. package/lib/typescript/hooks/useMessageQueue.d.ts.map +1 -1
  575. package/lib/typescript/hooks/useRoomDirectory.d.ts +12 -0
  576. package/lib/typescript/hooks/useRoomDirectory.d.ts.map +1 -0
  577. package/lib/typescript/hooks/useRoomInitialization.d.ts.map +1 -1
  578. package/lib/typescript/hooks/useRoomMute.d.ts +8 -0
  579. package/lib/typescript/hooks/useRoomMute.d.ts.map +1 -0
  580. package/lib/typescript/hooks/useRoomState.d.ts +1 -0
  581. package/lib/typescript/hooks/useRoomState.d.ts.map +1 -1
  582. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  583. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  584. package/lib/typescript/networking/api-requests/messageSearch.api.d.ts +57 -0
  585. package/lib/typescript/networking/api-requests/messageSearch.api.d.ts.map +1 -0
  586. package/lib/typescript/networking/api-requests/publicChats.api.d.ts +24 -0
  587. package/lib/typescript/networking/api-requests/publicChats.api.d.ts.map +1 -0
  588. package/lib/typescript/networking/api-requests/roomMembers.api.d.ts +19 -1
  589. package/lib/typescript/networking/api-requests/roomMembers.api.d.ts.map +1 -1
  590. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  591. package/lib/typescript/networking/api-requests/xmppToken.api.d.ts +2 -0
  592. package/lib/typescript/networking/api-requests/xmppToken.api.d.ts.map +1 -0
  593. package/lib/typescript/networking/ethoraEvents.d.ts +45 -0
  594. package/lib/typescript/networking/ethoraEvents.d.ts.map +1 -0
  595. package/lib/typescript/networking/stanzaHandlers.d.ts +1 -1
  596. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  597. package/lib/typescript/networking/xmpp/allRoomPresences.xmpp.d.ts +32 -1
  598. package/lib/typescript/networking/xmpp/allRoomPresences.xmpp.d.ts.map +1 -1
  599. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts +64 -0
  600. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts.map +1 -1
  601. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  602. package/lib/typescript/networking/xmpp/historyCursor.d.ts +35 -0
  603. package/lib/typescript/networking/xmpp/historyCursor.d.ts.map +1 -0
  604. package/lib/typescript/networking/xmpp/mamQueryIds.d.ts +10 -0
  605. package/lib/typescript/networking/xmpp/mamQueryIds.d.ts.map +1 -0
  606. package/lib/typescript/networking/xmpp/mamRouter.d.ts +7 -0
  607. package/lib/typescript/networking/xmpp/mamRouter.d.ts.map +1 -1
  608. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts +13 -2
  609. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  610. package/lib/typescript/networking/xmpp/roomJoinSweep.d.ts +82 -0
  611. package/lib/typescript/networking/xmpp/roomJoinSweep.d.ts.map +1 -0
  612. package/lib/typescript/networking/xmpp/sendMediaMessage.xmpp.d.ts.map +1 -1
  613. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  614. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts.map +1 -1
  615. package/lib/typescript/networking/xmppClient.d.ts +90 -4
  616. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  617. package/lib/typescript/networking/xmppCredentials.d.ts +12 -0
  618. package/lib/typescript/networking/xmppCredentials.d.ts.map +1 -0
  619. package/lib/typescript/roomStore/Middleware/jumpThreadMiddleware.d.ts +3 -0
  620. package/lib/typescript/roomStore/Middleware/jumpThreadMiddleware.d.ts.map +1 -0
  621. package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts.map +1 -1
  622. package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
  623. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +8 -1
  624. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  625. package/lib/typescript/roomStore/index.d.ts +2 -1
  626. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  627. package/lib/typescript/roomStore/persistence.d.ts +8 -0
  628. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  629. package/lib/typescript/roomStore/roomsSlice.d.ts +138 -2
  630. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  631. package/lib/typescript/roomStore/safeKey.d.ts +13 -0
  632. package/lib/typescript/roomStore/safeKey.d.ts.map +1 -0
  633. package/lib/typescript/roomStore/usersSetCap.d.ts +16 -0
  634. package/lib/typescript/roomStore/usersSetCap.d.ts.map +1 -0
  635. package/lib/typescript/types/models/media.model.d.ts +2 -0
  636. package/lib/typescript/types/models/media.model.d.ts.map +1 -1
  637. package/lib/typescript/types/models/room.model.d.ts +18 -5
  638. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  639. package/lib/typescript/types/models/xmpp.model.d.ts +8 -1
  640. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  641. package/lib/typescript/types/types.d.ts +88 -5
  642. package/lib/typescript/types/types.d.ts.map +1 -1
  643. package/lib/typescript/version.d.ts +1 -1
  644. package/lib/typescript/version.d.ts.map +1 -1
  645. package/package.json +1 -1
  646. package/src/assets/icons.tsx +13 -0
  647. package/src/components/Header/HeaderRoomList.tsx +21 -4
  648. package/src/components/InputComponents/Search.tsx +33 -0
  649. package/src/components/MainComponents/ArchivedMessageCard.tsx +139 -0
  650. package/src/components/MainComponents/ChatHeader.tsx +19 -3
  651. package/src/components/MainComponents/ChatRoom.tsx +60 -23
  652. package/src/components/MainComponents/ChatWrapper.tsx +23 -4
  653. package/src/components/MainComponents/MediaMessage.tsx +17 -0
  654. package/src/components/MainComponents/MessageList.tsx +823 -84
  655. package/src/components/MainComponents/MessageSearchButton.tsx +48 -0
  656. package/src/components/MainComponents/ReduxWrapper.tsx +16 -5
  657. package/src/components/MainComponents/RoomList.tsx +125 -0
  658. package/src/components/Menu/HeaderRoomListMenu.tsx +26 -2
  659. package/src/components/MessageBubble/BubbleHighlight.tsx +106 -0
  660. package/src/components/MessageBubble/Message.tsx +265 -177
  661. package/src/components/MessageBubble/MessageInteractions.tsx +109 -86
  662. package/src/components/MessageBubble/messageMenuLayout.ts +59 -0
  663. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +92 -21
  664. package/src/components/Modals/MessageSearchModal/MessageHitResults.tsx +271 -0
  665. package/src/components/Modals/MessageSearchModal/MessageSearchModal.tsx +487 -0
  666. package/src/components/Modals/MessageSearchModal/openHit.ts +50 -0
  667. package/src/components/Modals/MessageSearchModal/resolveSender.ts +57 -0
  668. package/src/components/Modals/MessageSearchModal/searchFilters.ts +109 -0
  669. package/src/components/Modals/MessageSearchModal/snippet.ts +58 -0
  670. package/src/components/Modals/MessageSearchModal/useMessageSearch.ts +151 -0
  671. package/src/components/Modals/PublicChatsModal/PublicChatsModal.tsx +288 -0
  672. package/src/components/Modals/PublicChatsModal/publicChatsLogic.ts +36 -0
  673. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +8 -1
  674. package/src/components/RoomComponents/ChatRoomItem.tsx +16 -3
  675. package/src/components/RoomComponents/SwipeableRoomRow.tsx +39 -6
  676. package/src/components/Thread/ThreadHeader.tsx +3 -1
  677. package/src/components/Thread/ThreadWrapper.tsx +96 -10
  678. package/src/components/styled/AudioDecoderHost.tsx +351 -0
  679. package/src/components/styled/AudioMessage.tsx +482 -425
  680. package/src/components/styled/SendInput.tsx +42 -4
  681. package/src/context/MessageNotificationContext.tsx +19 -5
  682. package/src/context/xmppProvider.tsx +44 -91
  683. package/src/helpers/audioWaveform.ts +142 -0
  684. package/src/helpers/backgroundJoinSweep.ts +35 -0
  685. package/src/helpers/bubbleHighlight.ts +47 -0
  686. package/src/helpers/checkUniqueUsers.tsx +15 -17
  687. package/src/helpers/constants/MODAL_COMPONENTS.tsx +4 -0
  688. package/src/helpers/constants/MODAL_TYPES.ts +3 -0
  689. package/src/helpers/createRoomFromApi.tsx +45 -4
  690. package/src/helpers/dedupeMembers.ts +29 -0
  691. package/src/helpers/ethoraLogger.ts +50 -0
  692. package/src/helpers/getUnnamedUsers.ts +7 -4
  693. package/src/helpers/historyPreloadConfig.ts +68 -0
  694. package/src/helpers/historyPreloadScheduler.ts +437 -199
  695. package/src/helpers/initRoomsPresence.ts +20 -7
  696. package/src/helpers/insertMessageWithDelimiter.ts +3 -0
  697. package/src/helpers/isLikelyMucJid.ts +72 -0
  698. package/src/helpers/isMessageSearchEnabled.ts +18 -0
  699. package/src/helpers/joiningRoom.ts +13 -0
  700. package/src/helpers/jumpThread.ts +102 -0
  701. package/src/helpers/jumpToMessage.ts +57 -0
  702. package/src/helpers/jumpWindow.ts +212 -0
  703. package/src/helpers/loadRoomHistory.ts +83 -0
  704. package/src/helpers/notificationPolicy.ts +82 -0
  705. package/src/helpers/openRoomAtMessage.ts +38 -0
  706. package/src/helpers/openThreadForJump.ts +96 -0
  707. package/src/helpers/parseMessageReference.ts +37 -8
  708. package/src/helpers/publicChatsEntry.ts +15 -0
  709. package/src/helpers/roomActivityScore.ts +45 -0
  710. package/src/helpers/roomUserCount.ts +44 -0
  711. package/src/helpers/runConfiguredHistoryPreload.ts +76 -0
  712. package/src/helpers/sessionAppId.ts +17 -0
  713. package/src/helpers/timestamp.ts +44 -0
  714. package/src/helpers/userResolver.ts +542 -0
  715. package/src/helpers/xmppIdShape.ts +46 -0
  716. package/src/hooks/useChatWrapperInit.ts +22 -4
  717. package/src/hooks/useHeapSender.tsx +54 -3
  718. package/src/hooks/useJumpToMessage.ts +538 -0
  719. package/src/hooks/useMessageLoaderQueue.tsx +40 -4
  720. package/src/hooks/useMessageQueue.ts +9 -5
  721. package/src/hooks/useRoomDirectory.ts +39 -0
  722. package/src/hooks/useRoomInitialization.tsx +33 -7
  723. package/src/hooks/useRoomMute.ts +42 -0
  724. package/src/hooks/useRoomState.tsx +6 -0
  725. package/src/hooks/useSendMessage.tsx +14 -2
  726. package/src/i18n/strings.ts +282 -0
  727. package/src/networking/api-requests/messageSearch.api.ts +130 -0
  728. package/src/networking/api-requests/publicChats.api.ts +71 -0
  729. package/src/networking/api-requests/roomMembers.api.ts +263 -11
  730. package/src/networking/api-requests/rooms.api.ts +52 -12
  731. package/src/networking/api-requests/xmppToken.api.ts +62 -0
  732. package/src/networking/ethoraEvents.ts +262 -0
  733. package/src/networking/stanzaHandlers.ts +145 -19
  734. package/src/networking/xmpp/allRoomPresences.xmpp.ts +155 -5
  735. package/src/networking/xmpp/getHistory.xmpp.ts +433 -47
  736. package/src/networking/xmpp/handleStanzas.xmpp.ts +8 -0
  737. package/src/networking/xmpp/historyCursor.ts +124 -0
  738. package/src/networking/xmpp/mamQueryIds.ts +11 -0
  739. package/src/networking/xmpp/mamRouter.ts +24 -10
  740. package/src/networking/xmpp/presenceInRoom.xmpp.ts +91 -68
  741. package/src/networking/xmpp/roomJoinSweep.ts +412 -0
  742. package/src/networking/xmpp/sendMediaMessage.xmpp.ts +0 -1
  743. package/src/networking/xmpp/sendTextMessage.xmpp.ts +0 -1
  744. package/src/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.ts +0 -1
  745. package/src/networking/xmppClient.ts +323 -47
  746. package/src/networking/xmppCredentials.ts +87 -0
  747. package/src/roomStore/Middleware/jumpThreadMiddleware.ts +163 -0
  748. package/src/roomStore/Middleware/reactionsMiddleware.tsx +4 -0
  749. package/src/roomStore/Middleware/unreadMidlleware.tsx +59 -11
  750. package/src/roomStore/chatSettingsSlice.ts +11 -0
  751. package/src/roomStore/index.ts +10 -3
  752. package/src/roomStore/persistence.ts +54 -0
  753. package/src/roomStore/roomsSlice.ts +547 -65
  754. package/src/roomStore/safeKey.ts +49 -0
  755. package/src/roomStore/usersSetCap.ts +37 -0
  756. package/src/types/models/media.model.ts +4 -0
  757. package/src/types/models/room.model.ts +18 -5
  758. package/src/types/models/xmpp.model.ts +15 -1
  759. package/src/types/types.ts +93 -5
  760. package/src/version.ts +1 -1
@@ -70,6 +70,10 @@ const en: UiStringTable = {
70
70
  'media.sealedDownload': 'Download and decrypt',
71
71
  'media.sealedDownloading': 'Decrypting…',
72
72
  'media.sealedDownloadFailed': 'Download failed — tap to retry',
73
+ 'media.audioPlay': 'Play voice message',
74
+ 'media.audioPause': 'Pause voice message',
75
+ 'media.audioSpeed': 'Playback speed',
76
+ 'media.audioUnavailable': 'Audio unavailable',
73
77
  'message.newMessages': 'New messages',
74
78
  'notification.senderFallback': 'New message',
75
79
  'presence.online': 'online',
@@ -131,6 +135,8 @@ const en: UiStringTable = {
131
135
  'action.leave': 'Leave',
132
136
  'action.muted': 'Muted',
133
137
  'action.unmuted': 'Unmuted',
138
+ 'action.mute': 'Mute',
139
+ 'action.unmute': 'Unmute',
134
140
  'toast.muteFailed': 'Could not update notifications for this chat',
135
141
  'action.create': 'Create',
136
142
  'action.submit': 'Submit',
@@ -337,6 +343,47 @@ const en: UiStringTable = {
337
343
  'settings.manageData.deleteLabel': 'Delete your account',
338
344
  'settings.manageData.deleteDescription': 'Use this only if you want to permanently delete your account & data from our system.',
339
345
  'settings.manageData.deleteDisclosure': 'Due to the immutable nature of distributed ledger technology, network nodes operated by the community may still retain historical transactions generated by your account, however your personally identifiable information such as your name, e-mail, your key-value storage etc will be removed. Any of your digital assets will be lost.',
346
+ 'search.messages.title': 'Search messages',
347
+ 'search.messages.placeholderChat': 'Search in this chat',
348
+ 'search.messages.placeholderAll': 'Search all chats',
349
+ 'search.messages.scope': 'Where to search',
350
+ 'search.messages.scopeChat': 'This chat',
351
+ 'search.messages.scopeAll': 'All chats',
352
+ 'search.messages.hint': 'Type to search the conversation history',
353
+ 'search.messages.tooShort': 'Type at least {count} characters',
354
+ 'search.messages.searching': 'Searching...',
355
+ 'search.messages.empty': 'No messages found',
356
+ 'search.messages.error': 'Search failed.',
357
+ 'search.messages.retry': 'Try again',
358
+ 'search.messages.loadMore': 'Show more',
359
+ 'search.messages.count': '{count} found',
360
+ 'search.messages.you': 'You',
361
+ 'search.messages.someone': 'Someone',
362
+ 'search.messages.chat': 'Chat',
363
+ 'search.messages.notFound': 'That message is too far back to load.',
364
+ 'search.messages.filters': 'Filters',
365
+ 'search.messages.filterSender': 'From',
366
+ 'search.messages.filterSenderPlaceholder': 'Name of the sender',
367
+ 'search.messages.filterSince': 'From date',
368
+ 'search.messages.filterUntil': 'To date',
369
+ 'search.messages.filterClear': 'Remove filter',
370
+ 'search.messages.filterClearAll': 'Clear filters',
371
+ 'search.messages.dateOrder': 'The start date is after the end date.',
372
+ 'publicChats.title': 'Discover chats',
373
+ 'publicChats.filter': 'Filter chats',
374
+ 'publicChats.loading': 'Loading chats...',
375
+ 'publicChats.error': 'Could not load public chats.',
376
+ 'publicChats.empty': 'No public chats to show',
377
+ 'publicChats.emptyFilterMore': 'No match among the chats loaded so far. Show more to keep looking.',
378
+ 'publicChats.join': 'Join',
379
+ 'publicChats.open': 'Open',
380
+ 'action.jumpToLatest': 'Jump to latest messages',
381
+ 'action.close': 'Close',
382
+ 'user.unknown': 'Unknown user',
383
+ 'modal.chatProfile.membersLoadingAll': 'Loading all members...',
384
+ 'search.clear': 'Clear search',
385
+ 'search.messages.archivedTitle': 'Older message',
386
+ 'search.messages.archivedNote': 'This message is older than the history available in this chat, so it cannot be shown in place.',
340
387
  };
341
388
 
342
389
  const fr: UiStringTable = {
@@ -396,6 +443,10 @@ const fr: UiStringTable = {
396
443
  'media.sealedDownload': 'Télécharger et déchiffrer',
397
444
  'media.sealedDownloading': 'Déchiffrement…',
398
445
  'media.sealedDownloadFailed': 'Échec du téléchargement — appuyez pour réessayer',
446
+ 'media.audioPlay': 'Lire le message vocal',
447
+ 'media.audioPause': 'Mettre en pause le message vocal',
448
+ 'media.audioSpeed': 'Vitesse de lecture',
449
+ 'media.audioUnavailable': 'Audio indisponible',
399
450
  'message.newMessages': 'Nouveaux messages',
400
451
  'notification.senderFallback': 'Nouveau message',
401
452
  'presence.online': 'en ligne',
@@ -457,6 +508,8 @@ const fr: UiStringTable = {
457
508
  'action.leave': 'Quitter',
458
509
  'action.muted': 'En sourdine',
459
510
  'action.unmuted': 'Activé',
511
+ 'action.mute': 'Muet',
512
+ 'action.unmute': 'Réactiver',
460
513
  'toast.muteFailed': 'Impossible de modifier les notifications de ce chat',
461
514
  'action.create': 'Créer',
462
515
  'action.submit': 'Soumettre',
@@ -663,6 +716,47 @@ const fr: UiStringTable = {
663
716
  'settings.manageData.deleteLabel': 'Supprimer votre compte',
664
717
  'settings.manageData.deleteDescription': 'À utiliser uniquement si vous souhaitez supprimer définitivement votre compte et vos données de notre système.',
665
718
  'settings.manageData.deleteDisclosure': "En raison de la nature immuable de la technologie des registres distribués, les nœuds du réseau exploités par la communauté peuvent conserver des transactions historiques générées par votre compte ; toutefois, vos informations personnelles identifiables telles que votre nom, e-mail, stockage clé-valeur, etc. seront supprimées. Tous vos actifs numériques seront perdus.",
719
+ 'search.messages.title': 'Rechercher des messages',
720
+ 'search.messages.placeholderChat': 'Rechercher dans cette discussion',
721
+ 'search.messages.placeholderAll': 'Rechercher dans toutes les discussions',
722
+ 'search.messages.scope': 'Où chercher',
723
+ 'search.messages.scopeChat': 'Cette discussion',
724
+ 'search.messages.scopeAll': 'Toutes',
725
+ 'search.messages.hint': "Saisissez pour chercher dans l'historique",
726
+ 'search.messages.tooShort': 'Saisissez au moins {count} caractères',
727
+ 'search.messages.searching': 'Recherche...',
728
+ 'search.messages.empty': 'Aucun message trouvé',
729
+ 'search.messages.error': 'La recherche a échoué.',
730
+ 'search.messages.retry': 'Réessayer',
731
+ 'search.messages.loadMore': 'Afficher plus',
732
+ 'search.messages.count': '{count} trouvés',
733
+ 'search.messages.you': 'Vous',
734
+ 'search.messages.someone': "Quelqu'un",
735
+ 'search.messages.chat': 'Discussion',
736
+ 'search.messages.notFound': 'Ce message est trop ancien pour être chargé.',
737
+ 'search.messages.filters': 'Filtres',
738
+ 'search.messages.filterSender': 'De',
739
+ 'search.messages.filterSenderPlaceholder': "Nom de l'expéditeur",
740
+ 'search.messages.filterSince': 'Du',
741
+ 'search.messages.filterUntil': 'Au',
742
+ 'search.messages.filterClear': 'Retirer le filtre',
743
+ 'search.messages.filterClearAll': 'Effacer les filtres',
744
+ 'search.messages.dateOrder': 'La date de début est postérieure à la date de fin.',
745
+ 'publicChats.title': 'Découvrir des discussions',
746
+ 'publicChats.filter': 'Filtrer les discussions',
747
+ 'publicChats.loading': 'Chargement des discussions...',
748
+ 'publicChats.error': 'Impossible de charger les discussions publiques.',
749
+ 'publicChats.empty': 'Aucune discussion publique à afficher',
750
+ 'publicChats.emptyFilterMore': 'Aucun résultat parmi les discussions chargées. Affichez-en plus pour continuer.',
751
+ 'publicChats.join': 'Rejoindre',
752
+ 'publicChats.open': 'Ouvrir',
753
+ 'action.jumpToLatest': 'Aller aux derniers messages',
754
+ 'action.close': 'Fermer',
755
+ 'user.unknown': 'Utilisateur inconnu',
756
+ 'modal.chatProfile.membersLoadingAll': 'Chargement de tous les membres...',
757
+ 'search.clear': 'Effacer la recherche',
758
+ 'search.messages.archivedTitle': 'Message plus ancien',
759
+ 'search.messages.archivedNote': 'Ce message est plus ancien que l\'historique disponible dans cette discussion, il ne peut donc pas être affiché à sa place.',
666
760
  };
667
761
 
668
762
  const es: UiStringTable = {
@@ -722,6 +816,10 @@ const es: UiStringTable = {
722
816
  'media.sealedDownload': 'Descargar y descifrar',
723
817
  'media.sealedDownloading': 'Descifrando…',
724
818
  'media.sealedDownloadFailed': 'Error de descarga: toca para reintentar',
819
+ 'media.audioPlay': 'Reproducir mensaje de voz',
820
+ 'media.audioPause': 'Pausar mensaje de voz',
821
+ 'media.audioSpeed': 'Velocidad de reproducción',
822
+ 'media.audioUnavailable': 'Audio no disponible',
725
823
  'message.newMessages': 'Nuevos mensajes',
726
824
  'notification.senderFallback': 'Nuevo mensaje',
727
825
  'presence.online': 'en línea',
@@ -783,6 +881,8 @@ const es: UiStringTable = {
783
881
  'action.leave': 'Salir',
784
882
  'action.muted': 'Silenciado',
785
883
  'action.unmuted': 'Activado',
884
+ 'action.mute': 'Silenciar',
885
+ 'action.unmute': 'Activar',
786
886
  'toast.muteFailed': 'No se pudieron cambiar las notificaciones de este chat',
787
887
  'action.create': 'Crear',
788
888
  'action.submit': 'Enviar',
@@ -989,6 +1089,47 @@ const es: UiStringTable = {
989
1089
  'settings.manageData.deleteLabel': 'Elimina tu cuenta',
990
1090
  'settings.manageData.deleteDescription': 'Utiliza esto solo si deseas eliminar permanentemente tu cuenta y tus datos de nuestro sistema.',
991
1091
  'settings.manageData.deleteDisclosure': 'Debido a la naturaleza inmutable de la tecnología de registro distribuido, los nodos de red operados por la comunidad pueden seguir conservando transacciones históricas generadas por tu cuenta; sin embargo, tu información personal identificable, como tu nombre, correo electrónico y almacenamiento clave-valor, será eliminada. Se perderán todos tus activos digitales.',
1092
+ 'search.messages.title': 'Buscar mensajes',
1093
+ 'search.messages.placeholderChat': 'Buscar en este chat',
1094
+ 'search.messages.placeholderAll': 'Buscar en todos los chats',
1095
+ 'search.messages.scope': 'Dónde buscar',
1096
+ 'search.messages.scopeChat': 'Este chat',
1097
+ 'search.messages.scopeAll': 'Todos',
1098
+ 'search.messages.hint': 'Escribe para buscar en el historial',
1099
+ 'search.messages.tooShort': 'Escribe al menos {count} caracteres',
1100
+ 'search.messages.searching': 'Buscando...',
1101
+ 'search.messages.empty': 'No se encontraron mensajes',
1102
+ 'search.messages.error': 'La búsqueda falló.',
1103
+ 'search.messages.retry': 'Reintentar',
1104
+ 'search.messages.loadMore': 'Mostrar más',
1105
+ 'search.messages.count': '{count} encontrados',
1106
+ 'search.messages.you': 'Tú',
1107
+ 'search.messages.someone': 'Alguien',
1108
+ 'search.messages.chat': 'Chat',
1109
+ 'search.messages.notFound': 'Ese mensaje es demasiado antiguo para cargarlo.',
1110
+ 'search.messages.filters': 'Filtros',
1111
+ 'search.messages.filterSender': 'De',
1112
+ 'search.messages.filterSenderPlaceholder': 'Nombre del remitente',
1113
+ 'search.messages.filterSince': 'Desde',
1114
+ 'search.messages.filterUntil': 'Hasta',
1115
+ 'search.messages.filterClear': 'Quitar filtro',
1116
+ 'search.messages.filterClearAll': 'Borrar filtros',
1117
+ 'search.messages.dateOrder': 'La fecha de inicio es posterior a la de fin.',
1118
+ 'publicChats.title': 'Descubrir chats',
1119
+ 'publicChats.filter': 'Filtrar chats',
1120
+ 'publicChats.loading': 'Cargando chats...',
1121
+ 'publicChats.error': 'No se pudieron cargar los chats públicos.',
1122
+ 'publicChats.empty': 'No hay chats públicos para mostrar',
1123
+ 'publicChats.emptyFilterMore': 'Sin coincidencias entre los chats cargados. Muestra más para seguir buscando.',
1124
+ 'publicChats.join': 'Unirse',
1125
+ 'publicChats.open': 'Abrir',
1126
+ 'action.jumpToLatest': 'Ir a los últimos mensajes',
1127
+ 'action.close': 'Cerrar',
1128
+ 'user.unknown': 'Usuario desconocido',
1129
+ 'modal.chatProfile.membersLoadingAll': 'Cargando todos los miembros...',
1130
+ 'search.clear': 'Borrar búsqueda',
1131
+ 'search.messages.archivedTitle': 'Mensaje anterior',
1132
+ 'search.messages.archivedNote': 'Este mensaje es anterior al historial disponible en este chat, por lo que no se puede mostrar en su lugar.',
992
1133
  };
993
1134
 
994
1135
  const pt: UiStringTable = {
@@ -1048,6 +1189,10 @@ const pt: UiStringTable = {
1048
1189
  'media.sealedDownload': 'Baixar e descriptografar',
1049
1190
  'media.sealedDownloading': 'Descriptografando…',
1050
1191
  'media.sealedDownloadFailed': 'Falha no download — toque para tentar novamente',
1192
+ 'media.audioPlay': 'Reproduzir mensagem de voz',
1193
+ 'media.audioPause': 'Pausar mensagem de voz',
1194
+ 'media.audioSpeed': 'Velocidade de reprodução',
1195
+ 'media.audioUnavailable': 'Áudio indisponível',
1051
1196
  'message.newMessages': 'Novas mensagens',
1052
1197
  'notification.senderFallback': 'Nova mensagem',
1053
1198
  'presence.online': 'online',
@@ -1109,6 +1254,8 @@ const pt: UiStringTable = {
1109
1254
  'action.leave': 'Sair',
1110
1255
  'action.muted': 'Muted',
1111
1256
  'action.unmuted': 'Unmuted',
1257
+ 'action.mute': 'Silenciar',
1258
+ 'action.unmute': 'Ativar som',
1112
1259
  'toast.muteFailed': 'Could not update notifications for this chat',
1113
1260
  'action.create': 'Criar',
1114
1261
  'action.submit': 'Enviar',
@@ -1315,6 +1462,47 @@ const pt: UiStringTable = {
1315
1462
  'settings.manageData.deleteLabel': 'Eliminar a sua conta',
1316
1463
  'settings.manageData.deleteDescription': 'Use isto apenas se quiser eliminar permanentemente a sua conta e os seus dados do nosso sistema.',
1317
1464
  'settings.manageData.deleteDisclosure': 'Devido à natureza imutável da tecnologia de registo distribuído, os nós da rede operados pela comunidade podem manter transações históricas geradas pela sua conta; no entanto, as suas informações de identificação pessoal, como nome, email e armazenamento chave-valor, serão removidas. Todos os seus ativos digitais serão perdidos.',
1465
+ 'search.messages.title': 'Pesquisar mensagens',
1466
+ 'search.messages.placeholderChat': 'Pesquisar nesta conversa',
1467
+ 'search.messages.placeholderAll': 'Pesquisar em todas as conversas',
1468
+ 'search.messages.scope': 'Onde pesquisar',
1469
+ 'search.messages.scopeChat': 'Esta conversa',
1470
+ 'search.messages.scopeAll': 'Todas',
1471
+ 'search.messages.hint': 'Digite para pesquisar o histórico',
1472
+ 'search.messages.tooShort': 'Digite pelo menos {count} caracteres',
1473
+ 'search.messages.searching': 'Pesquisando...',
1474
+ 'search.messages.empty': 'Nenhuma mensagem encontrada',
1475
+ 'search.messages.error': 'A pesquisa falhou.',
1476
+ 'search.messages.retry': 'Tentar novamente',
1477
+ 'search.messages.loadMore': 'Mostrar mais',
1478
+ 'search.messages.count': '{count} encontradas',
1479
+ 'search.messages.you': 'Você',
1480
+ 'search.messages.someone': 'Alguém',
1481
+ 'search.messages.chat': 'Conversa',
1482
+ 'search.messages.notFound': 'Essa mensagem é antiga demais para ser carregada.',
1483
+ 'search.messages.filters': 'Filtros',
1484
+ 'search.messages.filterSender': 'De',
1485
+ 'search.messages.filterSenderPlaceholder': 'Nome do remetente',
1486
+ 'search.messages.filterSince': 'Desde',
1487
+ 'search.messages.filterUntil': 'Até',
1488
+ 'search.messages.filterClear': 'Remover filtro',
1489
+ 'search.messages.filterClearAll': 'Limpar filtros',
1490
+ 'search.messages.dateOrder': 'A data inicial é posterior à data final.',
1491
+ 'publicChats.title': 'Descobrir conversas',
1492
+ 'publicChats.filter': 'Filtrar conversas',
1493
+ 'publicChats.loading': 'Carregando conversas...',
1494
+ 'publicChats.error': 'Não foi possível carregar as conversas públicas.',
1495
+ 'publicChats.empty': 'Nenhuma conversa pública para mostrar',
1496
+ 'publicChats.emptyFilterMore': 'Nenhuma correspondência entre as conversas carregadas. Mostre mais para continuar.',
1497
+ 'publicChats.join': 'Entrar',
1498
+ 'publicChats.open': 'Abrir',
1499
+ 'action.jumpToLatest': 'Ir para as últimas mensagens',
1500
+ 'action.close': 'Fechar',
1501
+ 'user.unknown': 'Utilizador desconhecido',
1502
+ 'modal.chatProfile.membersLoadingAll': 'Carregando todos os membros...',
1503
+ 'search.clear': 'Limpar pesquisa',
1504
+ 'search.messages.archivedTitle': 'Mensagem antiga',
1505
+ 'search.messages.archivedNote': 'Esta mensagem é anterior ao histórico disponível nesta conversa, por isso não pode ser exibida no lugar.',
1318
1506
  };
1319
1507
 
1320
1508
  const ht: UiStringTable = {
@@ -1374,6 +1562,10 @@ const ht: UiStringTable = {
1374
1562
  'media.sealedDownload': 'Telechaje epi dechifre',
1375
1563
  'media.sealedDownloading': 'Ap dechifre…',
1376
1564
  'media.sealedDownloadFailed': 'Telechajman echwe — peze pou reeseye',
1565
+ 'media.audioPlay': 'Jwe mesaj vokal la',
1566
+ 'media.audioPause': 'Poze mesaj vokal la',
1567
+ 'media.audioSpeed': 'Vitès lekti',
1568
+ 'media.audioUnavailable': 'Odyo pa disponib',
1377
1569
  'message.newMessages': 'Nouvo mesaj yo',
1378
1570
  'notification.senderFallback': 'Nouvo mesaj',
1379
1571
  'presence.online': 'an liy',
@@ -1435,6 +1627,8 @@ const ht: UiStringTable = {
1435
1627
  'action.leave': 'Kite',
1436
1628
  'action.muted': 'Muted',
1437
1629
  'action.unmuted': 'Unmuted',
1630
+ 'action.mute': 'Mete an silans',
1631
+ 'action.unmute': 'Retire silans',
1438
1632
  'toast.muteFailed': 'Could not update notifications for this chat',
1439
1633
  'action.create': 'Kreye',
1440
1634
  'action.submit': 'Soumèt',
@@ -1641,6 +1835,47 @@ const ht: UiStringTable = {
1641
1835
  'settings.manageData.deleteLabel': 'Efase kont ou',
1642
1836
  'settings.manageData.deleteDescription': 'Sèvi ak sa a sèlman si ou vle efase kont ou ak done ou yo nèt nan sistèm nou an.',
1643
1837
  'settings.manageData.deleteDisclosure': 'Akoz nati imityab teknoloji rejis distribiye a, nœud rezo kominote a opere yo ka toujou kenbe tranzaksyon istorik kont ou an te jenere; sepandan, enfòmasyon idantifyab pèsonèl ou yo tankou non ou, imèl ou ak depo kle-valè ou yo ap retire. Tout byen dijital ou yo ap pèdi.',
1838
+ 'search.messages.title': 'Chèche mesaj',
1839
+ 'search.messages.placeholderChat': 'Chèche nan chat sa a',
1840
+ 'search.messages.placeholderAll': 'Chèche nan tout chat yo',
1841
+ 'search.messages.scope': 'Ki kote pou chèche',
1842
+ 'search.messages.scopeChat': 'Chat sa a',
1843
+ 'search.messages.scopeAll': 'Tout',
1844
+ 'search.messages.hint': 'Tape pou chèche nan istwa a',
1845
+ 'search.messages.tooShort': 'Tape omwen {count} karaktè',
1846
+ 'search.messages.searching': 'Y ap chèche...',
1847
+ 'search.messages.empty': 'Pa gen mesaj jwenn',
1848
+ 'search.messages.error': 'Rechèch la echwe.',
1849
+ 'search.messages.retry': 'Eseye ankò',
1850
+ 'search.messages.loadMore': 'Montre plis',
1851
+ 'search.messages.count': '{count} jwenn',
1852
+ 'search.messages.you': 'Ou',
1853
+ 'search.messages.someone': 'Yon moun',
1854
+ 'search.messages.chat': 'Chat',
1855
+ 'search.messages.notFound': 'Mesaj sa a twò ansyen pou chaje.',
1856
+ 'search.messages.filters': 'Filt',
1857
+ 'search.messages.filterSender': 'Soti kay',
1858
+ 'search.messages.filterSenderPlaceholder': 'Non moun ki voye a',
1859
+ 'search.messages.filterSince': 'Depi',
1860
+ 'search.messages.filterUntil': 'Jiska',
1861
+ 'search.messages.filterClear': 'Retire filt la',
1862
+ 'search.messages.filterClearAll': 'Efase filt yo',
1863
+ 'search.messages.dateOrder': 'Dat kòmansman an pi ta pase dat fen an.',
1864
+ 'publicChats.title': 'Dekouvri chat',
1865
+ 'publicChats.filter': 'Filtre chat yo',
1866
+ 'publicChats.loading': 'Y ap chaje chat yo...',
1867
+ 'publicChats.error': 'Nou pa t ka chaje chat piblik yo.',
1868
+ 'publicChats.empty': 'Pa gen chat piblik pou montre',
1869
+ 'publicChats.emptyFilterMore': 'Pa gen rezilta nan chat ki chaje yo. Montre plis pou kontinye.',
1870
+ 'publicChats.join': 'Antre',
1871
+ 'publicChats.open': 'Louvri',
1872
+ 'action.jumpToLatest': 'Ale nan dènye mesaj yo',
1873
+ 'action.close': 'Fèmen',
1874
+ 'user.unknown': 'Itilizatè enkoni',
1875
+ 'modal.chatProfile.membersLoadingAll': 'N ap chaje tout manm yo...',
1876
+ 'search.clear': 'Efase rechèch',
1877
+ 'search.messages.archivedTitle': 'Mesaj ki pi ansyen',
1878
+ 'search.messages.archivedNote': 'Mesaj sa a pi ansyen pase istwa ki disponib nan chat sa a, kidonk nou pa ka montre l kote li ye a.',
1644
1879
  };
1645
1880
 
1646
1881
  const zh: UiStringTable = {
@@ -1700,6 +1935,10 @@ const zh: UiStringTable = {
1700
1935
  'media.sealedDownload': '下载并解密',
1701
1936
  'media.sealedDownloading': '正在解密…',
1702
1937
  'media.sealedDownloadFailed': '下载失败 — 点击重试',
1938
+ 'media.audioPlay': '播放语音消息',
1939
+ 'media.audioPause': '暂停语音消息',
1940
+ 'media.audioSpeed': '播放速度',
1941
+ 'media.audioUnavailable': '音频不可用',
1703
1942
  'message.newMessages': '新消息',
1704
1943
  'notification.senderFallback': '新消息',
1705
1944
  'presence.online': '在线',
@@ -1761,6 +2000,8 @@ const zh: UiStringTable = {
1761
2000
  'action.leave': '退出',
1762
2001
  'action.muted': 'Muted',
1763
2002
  'action.unmuted': 'Unmuted',
2003
+ 'action.mute': '静音',
2004
+ 'action.unmute': '取消静音',
1764
2005
  'toast.muteFailed': 'Could not update notifications for this chat',
1765
2006
  'action.create': '创建',
1766
2007
  'action.submit': '提交',
@@ -1967,6 +2208,47 @@ const zh: UiStringTable = {
1967
2208
  'settings.manageData.deleteLabel': '删除您的账户',
1968
2209
  'settings.manageData.deleteDescription': '仅当您希望从我们的系统中永久删除您的账户及数据时才使用此功能。',
1969
2210
  'settings.manageData.deleteDisclosure': '由于分布式账本技术的不可篡改特性,社区运营的网络节点可能仍会保留您账户生成的历史交易记录;但您的个人身份信息,如姓名、电子邮箱、键值存储等将被移除。您的所有数字资产都将丢失。',
2211
+ 'search.messages.title': '搜索消息',
2212
+ 'search.messages.placeholderChat': '在此聊天中搜索',
2213
+ 'search.messages.placeholderAll': '在所有聊天中搜索',
2214
+ 'search.messages.scope': '搜索范围',
2215
+ 'search.messages.scopeChat': '此聊天',
2216
+ 'search.messages.scopeAll': '全部',
2217
+ 'search.messages.hint': '输入以搜索聊天记录',
2218
+ 'search.messages.tooShort': '请至少输入 {count} 个字符',
2219
+ 'search.messages.searching': '搜索中...',
2220
+ 'search.messages.empty': '未找到消息',
2221
+ 'search.messages.error': '搜索失败。',
2222
+ 'search.messages.retry': '重试',
2223
+ 'search.messages.loadMore': '显示更多',
2224
+ 'search.messages.count': '找到 {count} 条',
2225
+ 'search.messages.you': '你',
2226
+ 'search.messages.someone': '某人',
2227
+ 'search.messages.chat': '聊天',
2228
+ 'search.messages.notFound': '该消息太久远,无法加载。',
2229
+ 'search.messages.filters': '筛选',
2230
+ 'search.messages.filterSender': '发送者',
2231
+ 'search.messages.filterSenderPlaceholder': '发送者姓名',
2232
+ 'search.messages.filterSince': '开始日期',
2233
+ 'search.messages.filterUntil': '结束日期',
2234
+ 'search.messages.filterClear': '移除筛选',
2235
+ 'search.messages.filterClearAll': '清除筛选',
2236
+ 'search.messages.dateOrder': '开始日期晚于结束日期。',
2237
+ 'publicChats.title': '发现聊天',
2238
+ 'publicChats.filter': '筛选聊天',
2239
+ 'publicChats.loading': '正在加载聊天...',
2240
+ 'publicChats.error': '无法加载公共聊天。',
2241
+ 'publicChats.empty': '没有可显示的公共聊天',
2242
+ 'publicChats.emptyFilterMore': '已加载的聊天中没有匹配项。显示更多以继续查找。',
2243
+ 'publicChats.join': '加入',
2244
+ 'publicChats.open': '打开',
2245
+ 'action.jumpToLatest': '跳到最新消息',
2246
+ 'action.close': '关闭',
2247
+ 'user.unknown': '未知用户',
2248
+ 'modal.chatProfile.membersLoadingAll': '正在加载全部成员...',
2249
+ 'search.clear': '清除搜索',
2250
+ 'search.messages.archivedTitle': '较早的消息',
2251
+ 'search.messages.archivedNote': '这条消息早于此聊天中可用的历史记录,因此无法在原位显示。',
1970
2252
  };
1971
2253
 
1972
2254
  // Built-in tables keyed by base language. Add a language here (plus the code
@@ -0,0 +1,130 @@
1
+ import http from '../apiClient';
2
+ import { store } from '../../roomStore';
3
+
4
+ /**
5
+ * GET /v2/apps/{appId}/messages/search: full-text / substring search over
6
+ * the chat archive. For a user token the server restricts it to chats the
7
+ * caller can see, so no client-side filtering is needed for privacy.
8
+ */
9
+ export interface MessageSearchHit {
10
+ /** The archive row's own id: the only identifier every hit is guaranteed to have. */
11
+ id: string;
12
+ /** Room name, the local part of the room JID. */
13
+ chatId: string;
14
+ chatType: string;
15
+ /** Full room JID. */
16
+ room: string;
17
+ /** Sender's full JID, WITH the xmpp host: `appId_userId@xmpp.host`. */
18
+ from: string;
19
+ fromUserId: string;
20
+ body: string;
21
+ messageId: string;
22
+ stanzaId: string;
23
+ createdAt: string;
24
+ }
25
+
26
+ export interface MessageSearchPage {
27
+ items: MessageSearchHit[];
28
+ /** Total matches on the server, not the size of this page. */
29
+ total: number;
30
+ offset: number;
31
+ limit: number;
32
+ /**
33
+ * Where the next page starts. Counted in SERVER rows, not in `items`:
34
+ * deleted messages are dropped from `items`, and paging by the filtered
35
+ * count would re-request rows already seen.
36
+ */
37
+ nextOffset: number;
38
+ }
39
+
40
+ export interface SearchMessagesParams {
41
+ q: string;
42
+ /** Room name (local part of the JID). Omit to search every visible chat. */
43
+ chatId?: string;
44
+ /** Only messages from this user (a room member's `_id`). */
45
+ fromUserId?: string;
46
+ /** ISO 8601 bounds; the server rejects anything else. */
47
+ since?: string;
48
+ until?: string;
49
+ limit?: number;
50
+ offset?: number;
51
+ signal?: AbortSignal;
52
+ }
53
+
54
+ export const MESSAGE_SEARCH_PAGE_SIZE = 20;
55
+
56
+ type RawHit = Partial<Omit<MessageSearchHit, 'id'>> & {
57
+ _id?: string;
58
+ deletedAt?: string | null;
59
+ };
60
+
61
+ export async function searchMessages({
62
+ q,
63
+ chatId,
64
+ fromUserId,
65
+ since,
66
+ until,
67
+ limit = MESSAGE_SEARCH_PAGE_SIZE,
68
+ offset = 0,
69
+ signal,
70
+ }: SearchMessagesParams): Promise<MessageSearchPage> {
71
+ const state = store.getState().chatSettingStore;
72
+ const appId = state.config?.appId;
73
+ const token = state.user?.token || '';
74
+ if (!appId) throw new Error('message_search_no_app_id');
75
+
76
+ const response = await http.get(
77
+ `/v2/apps/${encodeURIComponent(appId)}/messages/search`,
78
+ {
79
+ params: {
80
+ q,
81
+ limit,
82
+ offset,
83
+ ...(chatId ? { chatId } : {}),
84
+ ...(fromUserId ? { fromUserId } : {}),
85
+ ...(since ? { since } : {}),
86
+ ...(until ? { until } : {}),
87
+ },
88
+ headers: { Authorization: token },
89
+ signal,
90
+ }
91
+ );
92
+
93
+ const data = response?.data || {};
94
+ const raw: RawHit[] = Array.isArray(data.items) ? data.items : [];
95
+
96
+ return {
97
+ // A deleted message is still in the archive with `deletedAt` set; showing
98
+ // it would let a search resurrect text the author removed.
99
+ items: raw
100
+ .filter(
101
+ (hit) => !hit.deletedAt && typeof hit.body === 'string' && hit.body
102
+ )
103
+ .map((hit) => ({
104
+ id: String(hit._id ?? ''),
105
+ chatId: String(hit.chatId ?? ''),
106
+ chatType: String(hit.chatType ?? ''),
107
+ room: String(hit.room ?? ''),
108
+ from: String(hit.from ?? ''),
109
+ fromUserId: String(hit.fromUserId ?? ''),
110
+ body: hit.body as string,
111
+ messageId: String(hit.messageId ?? ''),
112
+ stanzaId: String(hit.stanzaId ?? ''),
113
+ createdAt: String(hit.createdAt ?? ''),
114
+ })),
115
+ total: Number(data.total) || 0,
116
+ offset: Number(data.offset) || offset,
117
+ limit: Number(data.limit) || limit,
118
+ nextOffset: offset + raw.length,
119
+ };
120
+ }
121
+
122
+ /**
123
+ * A key that is unique per hit. stanzaId and messageId are NOT: on QA whole
124
+ * pages of older hits come back with both empty, which made every React key
125
+ * `chatId:` (rows were left behind when the list changed) and made a
126
+ * duplicate check by those ids throw real hits away.
127
+ */
128
+ export const hitKey = (hit: MessageSearchHit): string =>
129
+ hit.id ||
130
+ `${hit.chatId}:${hit.stanzaId}:${hit.messageId}:${hit.createdAt}:${hit.body.slice(0, 24)}`;
@@ -0,0 +1,71 @@
1
+ import http from '../apiClient';
2
+ import { store } from '../../roomStore';
3
+
4
+ /** One entry of GET /v1/chats/public: a chat anyone in the app may join. */
5
+ export interface PublicChat {
6
+ /** Room name: the local part of its JID. */
7
+ name: string;
8
+ title: string;
9
+ description: string;
10
+ picture: string;
11
+ e2ee: boolean;
12
+ }
13
+
14
+ export interface PublicChatsPage {
15
+ items: PublicChat[];
16
+ total: number;
17
+ offset: number;
18
+ limit: number;
19
+ /** Server rows consumed so far, not counting hidden ones. */
20
+ nextOffset: number;
21
+ }
22
+
23
+ // The endpoint rejects anything above 50 with a validation error.
24
+ export const PUBLIC_CHATS_PAGE_SIZE = 50;
25
+
26
+ interface RawPublicChat {
27
+ name?: string;
28
+ title?: string;
29
+ description?: string;
30
+ picture?: string;
31
+ type?: string;
32
+ e2ee?: boolean;
33
+ reported?: boolean;
34
+ }
35
+
36
+ export async function getPublicChats({
37
+ offset = 0,
38
+ limit = PUBLIC_CHATS_PAGE_SIZE,
39
+ signal,
40
+ }: {
41
+ offset?: number;
42
+ limit?: number;
43
+ signal?: AbortSignal;
44
+ } = {}): Promise<PublicChatsPage> {
45
+ const token = store.getState().chatSettingStore.user?.token || '';
46
+ const response = await http.get('/v1/chats/public', {
47
+ params: { limit: Math.min(limit, PUBLIC_CHATS_PAGE_SIZE), offset },
48
+ headers: { Authorization: token },
49
+ signal,
50
+ });
51
+
52
+ const data = response?.data || {};
53
+ const raw: RawPublicChat[] = Array.isArray(data.items) ? data.items : [];
54
+
55
+ return {
56
+ // A chat that has been reported is not one to advertise in a directory.
57
+ items: raw
58
+ .filter((chat) => chat.name && !chat.reported)
59
+ .map((chat) => ({
60
+ name: String(chat.name),
61
+ title: String(chat.title || '').trim(),
62
+ description: String(chat.description || '').trim(),
63
+ picture: String(chat.picture || ''),
64
+ e2ee: Boolean(chat.e2ee),
65
+ })),
66
+ total: Number(data.total) || 0,
67
+ offset: Number(data.offset) || offset,
68
+ limit: Number(data.limit) || limit,
69
+ nextOffset: offset + raw.length,
70
+ };
71
+ }