@ethora/chat-component-rn 26.8.4 → 26.8.6

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 (417) hide show
  1. package/README.md +55 -0
  2. package/lib/commonjs/assets/emojiData.js +40 -0
  3. package/lib/commonjs/assets/emojiData.js.map +1 -0
  4. package/lib/commonjs/assets/icons.js +1 -1
  5. package/lib/commonjs/assets/icons.js.map +1 -1
  6. package/lib/commonjs/components/Header/HeaderRoomList.js +12 -7
  7. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  8. package/lib/commonjs/components/MainComponents/ChatHeader.js +7 -9
  9. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  10. package/lib/commonjs/components/MainComponents/ChatRoom.js +47 -26
  11. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  12. package/lib/commonjs/components/MainComponents/ChatWrapper.js +58 -21
  13. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  14. package/lib/commonjs/components/MainComponents/KeyboardInputDock.js +40 -0
  15. package/lib/commonjs/components/MainComponents/KeyboardInputDock.js.map +1 -0
  16. package/lib/commonjs/components/MainComponents/MessageContainer.js +4 -12
  17. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  18. package/lib/commonjs/components/MainComponents/MessageList.js +110 -35
  19. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  20. package/lib/commonjs/components/MainComponents/RoomList.js +32 -29
  21. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  22. package/lib/commonjs/components/MainComponents/RoomStack.js +270 -0
  23. package/lib/commonjs/components/MainComponents/RoomStack.js.map +1 -0
  24. package/lib/commonjs/components/MainComponents/SystemMessage.js +6 -2
  25. package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
  26. package/lib/commonjs/components/MessageBubble/Avatar.js +5 -1
  27. package/lib/commonjs/components/MessageBubble/Avatar.js.map +1 -1
  28. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +17 -21
  29. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  30. package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js +447 -0
  31. package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
  32. package/lib/commonjs/components/MessageBubble/Message.js +200 -132
  33. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  34. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +213 -12
  35. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  36. package/lib/commonjs/components/MessageBubble/MessageReaction.js +113 -94
  37. package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
  38. package/lib/commonjs/components/MessageBubble/MessageReply.js +66 -24
  39. package/lib/commonjs/components/MessageBubble/MessageReply.js.map +1 -1
  40. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +6 -1
  41. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  42. package/lib/commonjs/components/Modals/Modal/Modal.js +24 -0
  43. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  44. package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js +178 -0
  45. package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js.map +1 -0
  46. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +28 -10
  47. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
  48. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +9 -3
  49. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  50. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +5 -4
  51. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  52. package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
  53. package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
  54. package/lib/commonjs/components/Thread/ThreadWrapper.js +265 -152
  55. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  56. package/lib/commonjs/components/styled/DateLabel.js +6 -3
  57. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  58. package/lib/commonjs/context/MessageNotificationContext.js +188 -9
  59. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  60. package/lib/commonjs/context/xmppProvider.js +22 -7
  61. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  62. package/lib/commonjs/helpers/createRoomFromApi.js +36 -2
  63. package/lib/commonjs/helpers/createRoomFromApi.js.map +1 -1
  64. package/lib/commonjs/helpers/emoji.js +51 -0
  65. package/lib/commonjs/helpers/emoji.js.map +1 -0
  66. package/lib/commonjs/helpers/haptics.js +29 -0
  67. package/lib/commonjs/helpers/haptics.js.map +1 -0
  68. package/lib/commonjs/helpers/historyPreloadScheduler.js +32 -66
  69. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  70. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +21 -12
  71. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  72. package/lib/commonjs/helpers/keyboardLayout.js +23 -1
  73. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
  74. package/lib/commonjs/helpers/mamReactions.js +57 -0
  75. package/lib/commonjs/helpers/mamReactions.js.map +1 -0
  76. package/lib/commonjs/helpers/parseMessageReference.js +42 -0
  77. package/lib/commonjs/helpers/parseMessageReference.js.map +1 -0
  78. package/lib/commonjs/helpers/reactionsConfig.js +17 -0
  79. package/lib/commonjs/helpers/reactionsConfig.js.map +1 -0
  80. package/lib/commonjs/helpers/updateMessagesTillLast.js +17 -2
  81. package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
  82. package/lib/commonjs/hooks/useHeapSender.js +3 -1
  83. package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
  84. package/lib/commonjs/hooks/useMessageHeapState.js +3 -2
  85. package/lib/commonjs/hooks/useMessageHeapState.js.map +1 -1
  86. package/lib/commonjs/hooks/useRoomInitialization.js +16 -7
  87. package/lib/commonjs/hooks/useRoomInitialization.js.map +1 -1
  88. package/lib/commonjs/hooks/useSendMessage.js +14 -8
  89. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  90. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -1
  91. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  92. package/lib/commonjs/networking/stanzaHandlers.js +106 -50
  93. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  94. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js +29 -74
  95. package/lib/commonjs/networking/xmpp/getHistory.xmpp.js.map +1 -1
  96. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +4 -0
  97. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  98. package/lib/commonjs/networking/xmpp/mamRouter.js +186 -0
  99. package/lib/commonjs/networking/xmpp/mamRouter.js.map +1 -0
  100. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +41 -4
  101. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  102. package/lib/commonjs/networking/xmppClient.js +98 -23
  103. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  104. package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js +29 -34
  105. package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
  106. package/lib/commonjs/roomStore/Middleware/perfMiddleware.js +51 -0
  107. package/lib/commonjs/roomStore/Middleware/perfMiddleware.js.map +1 -0
  108. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js +66 -43
  109. package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  110. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +88 -68
  111. package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  112. package/lib/commonjs/roomStore/index.js +18 -14
  113. package/lib/commonjs/roomStore/index.js.map +1 -1
  114. package/lib/commonjs/roomStore/persistBackend.js +96 -0
  115. package/lib/commonjs/roomStore/persistBackend.js.map +1 -0
  116. package/lib/commonjs/roomStore/persistence.js +245 -50
  117. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  118. package/lib/commonjs/roomStore/roomsSlice.js +282 -136
  119. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  120. package/lib/commonjs/theme/theme.js +3 -0
  121. package/lib/commonjs/theme/theme.js.map +1 -1
  122. package/lib/commonjs/utils/devLogger.js +14 -0
  123. package/lib/commonjs/utils/devLogger.js.map +1 -1
  124. package/lib/commonjs/version.js +1 -1
  125. package/lib/module/assets/emojiData.js +36 -0
  126. package/lib/module/assets/emojiData.js.map +1 -0
  127. package/lib/module/assets/icons.js +1 -1
  128. package/lib/module/assets/icons.js.map +1 -1
  129. package/lib/module/components/Header/HeaderRoomList.js +12 -7
  130. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  131. package/lib/module/components/MainComponents/ChatHeader.js +8 -10
  132. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  133. package/lib/module/components/MainComponents/ChatRoom.js +49 -28
  134. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  135. package/lib/module/components/MainComponents/ChatWrapper.js +60 -23
  136. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  137. package/lib/module/components/MainComponents/KeyboardInputDock.js +33 -0
  138. package/lib/module/components/MainComponents/KeyboardInputDock.js.map +1 -0
  139. package/lib/module/components/MainComponents/MessageContainer.js +7 -14
  140. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  141. package/lib/module/components/MainComponents/MessageList.js +110 -35
  142. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  143. package/lib/module/components/MainComponents/RoomList.js +32 -29
  144. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  145. package/lib/module/components/MainComponents/RoomStack.js +266 -0
  146. package/lib/module/components/MainComponents/RoomStack.js.map +1 -0
  147. package/lib/module/components/MainComponents/SystemMessage.js +6 -2
  148. package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
  149. package/lib/module/components/MessageBubble/Avatar.js +5 -1
  150. package/lib/module/components/MessageBubble/Avatar.js.map +1 -1
  151. package/lib/module/components/MessageBubble/BottomReplyContainer.js +18 -22
  152. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  153. package/lib/module/components/MessageBubble/EmojiPickerSheet.js +438 -0
  154. package/lib/module/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
  155. package/lib/module/components/MessageBubble/Message.js +203 -134
  156. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  157. package/lib/module/components/MessageBubble/MessageInteractions.js +215 -14
  158. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  159. package/lib/module/components/MessageBubble/MessageReaction.js +115 -94
  160. package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
  161. package/lib/module/components/MessageBubble/MessageReply.js +65 -24
  162. package/lib/module/components/MessageBubble/MessageReply.js.map +1 -1
  163. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +6 -1
  164. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  165. package/lib/module/components/Modals/Modal/Modal.js +25 -1
  166. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  167. package/lib/module/components/Modals/Modal/SwipeBackLayer.js +172 -0
  168. package/lib/module/components/Modals/Modal/SwipeBackLayer.js.map +1 -0
  169. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +29 -11
  170. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
  171. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +10 -4
  172. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  173. package/lib/module/components/RoomComponents/ChatRoomItem.js +5 -4
  174. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  175. package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
  176. package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
  177. package/lib/module/components/Thread/ThreadWrapper.js +264 -152
  178. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  179. package/lib/module/components/styled/DateLabel.js +6 -3
  180. package/lib/module/components/styled/DateLabel.js.map +1 -1
  181. package/lib/module/context/MessageNotificationContext.js +190 -11
  182. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  183. package/lib/module/context/xmppProvider.js +22 -7
  184. package/lib/module/context/xmppProvider.js.map +1 -1
  185. package/lib/module/helpers/createRoomFromApi.js +36 -2
  186. package/lib/module/helpers/createRoomFromApi.js.map +1 -1
  187. package/lib/module/helpers/emoji.js +44 -0
  188. package/lib/module/helpers/emoji.js.map +1 -0
  189. package/lib/module/helpers/haptics.js +24 -0
  190. package/lib/module/helpers/haptics.js.map +1 -0
  191. package/lib/module/helpers/historyPreloadScheduler.js +32 -66
  192. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  193. package/lib/module/helpers/insertMessageWithDelimiter.js +21 -12
  194. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  195. package/lib/module/helpers/keyboardLayout.js +20 -0
  196. package/lib/module/helpers/keyboardLayout.js.map +1 -1
  197. package/lib/module/helpers/mamReactions.js +51 -0
  198. package/lib/module/helpers/mamReactions.js.map +1 -0
  199. package/lib/module/helpers/parseMessageReference.js +37 -0
  200. package/lib/module/helpers/parseMessageReference.js.map +1 -0
  201. package/lib/module/helpers/reactionsConfig.js +10 -0
  202. package/lib/module/helpers/reactionsConfig.js.map +1 -0
  203. package/lib/module/helpers/updateMessagesTillLast.js +17 -2
  204. package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
  205. package/lib/module/hooks/useHeapSender.js +3 -1
  206. package/lib/module/hooks/useHeapSender.js.map +1 -1
  207. package/lib/module/hooks/useMessageHeapState.js +3 -2
  208. package/lib/module/hooks/useMessageHeapState.js.map +1 -1
  209. package/lib/module/hooks/useRoomInitialization.js +17 -8
  210. package/lib/module/hooks/useRoomInitialization.js.map +1 -1
  211. package/lib/module/hooks/useSendMessage.js +14 -8
  212. package/lib/module/hooks/useSendMessage.js.map +1 -1
  213. package/lib/module/hooks/useUnreadMessagesCounter.js +1 -1
  214. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  215. package/lib/module/networking/stanzaHandlers.js +107 -51
  216. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  217. package/lib/module/networking/xmpp/getHistory.xmpp.js +29 -74
  218. package/lib/module/networking/xmpp/getHistory.xmpp.js.map +1 -1
  219. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +4 -0
  220. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  221. package/lib/module/networking/xmpp/mamRouter.js +175 -0
  222. package/lib/module/networking/xmpp/mamRouter.js.map +1 -0
  223. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +38 -2
  224. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  225. package/lib/module/networking/xmppClient.js +99 -24
  226. package/lib/module/networking/xmppClient.js.map +1 -1
  227. package/lib/module/roomStore/Middleware/newMessageMidlleware.js +29 -34
  228. package/lib/module/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
  229. package/lib/module/roomStore/Middleware/perfMiddleware.js +45 -0
  230. package/lib/module/roomStore/Middleware/perfMiddleware.js.map +1 -0
  231. package/lib/module/roomStore/Middleware/reactionsMiddleware.js +66 -43
  232. package/lib/module/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
  233. package/lib/module/roomStore/Middleware/unreadMidlleware.js +89 -69
  234. package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
  235. package/lib/module/roomStore/index.js +19 -15
  236. package/lib/module/roomStore/index.js.map +1 -1
  237. package/lib/module/roomStore/persistBackend.js +89 -0
  238. package/lib/module/roomStore/persistBackend.js.map +1 -0
  239. package/lib/module/roomStore/persistence.js +245 -48
  240. package/lib/module/roomStore/persistence.js.map +1 -1
  241. package/lib/module/roomStore/roomsSlice.js +275 -134
  242. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  243. package/lib/module/theme/theme.js +3 -0
  244. package/lib/module/theme/theme.js.map +1 -1
  245. package/lib/module/utils/devLogger.js +13 -0
  246. package/lib/module/utils/devLogger.js.map +1 -1
  247. package/lib/module/version.js +1 -1
  248. package/lib/typescript/assets/emojiData.d.ts +8 -0
  249. package/lib/typescript/assets/emojiData.d.ts.map +1 -0
  250. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  251. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  252. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  253. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  254. package/lib/typescript/components/MainComponents/KeyboardInputDock.d.ts +16 -0
  255. package/lib/typescript/components/MainComponents/KeyboardInputDock.d.ts.map +1 -0
  256. package/lib/typescript/components/MainComponents/MessageContainer.d.ts +2 -2
  257. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  258. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  259. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  260. package/lib/typescript/components/MainComponents/RoomStack.d.ts +42 -0
  261. package/lib/typescript/components/MainComponents/RoomStack.d.ts.map +1 -0
  262. package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
  263. package/lib/typescript/components/MessageBubble/Avatar.d.ts +2 -0
  264. package/lib/typescript/components/MessageBubble/Avatar.d.ts.map +1 -1
  265. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  266. package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts +11 -0
  267. package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts.map +1 -0
  268. package/lib/typescript/components/MessageBubble/Message.d.ts +2 -2
  269. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  270. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +2 -0
  271. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  272. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts +1 -0
  273. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
  274. package/lib/typescript/components/MessageBubble/MessageReply.d.ts +7 -7
  275. package/lib/typescript/components/MessageBubble/MessageReply.d.ts.map +1 -1
  276. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  277. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  278. package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts +16 -0
  279. package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts.map +1 -0
  280. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -1
  281. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  282. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts +2 -2
  283. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  284. package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts +3 -6
  285. package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts.map +1 -1
  286. package/lib/typescript/components/Thread/ThreadWrapper.d.ts +7 -1
  287. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  288. package/lib/typescript/components/styled/DateLabel.d.ts +1 -0
  289. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  290. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  291. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  292. package/lib/typescript/helpers/createRoomFromApi.d.ts.map +1 -1
  293. package/lib/typescript/helpers/emoji.d.ts +6 -0
  294. package/lib/typescript/helpers/emoji.d.ts.map +1 -0
  295. package/lib/typescript/helpers/haptics.d.ts +3 -0
  296. package/lib/typescript/helpers/haptics.d.ts.map +1 -0
  297. package/lib/typescript/helpers/historyPreloadScheduler.d.ts +1 -0
  298. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  299. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  300. package/lib/typescript/helpers/keyboardLayout.d.ts +6 -0
  301. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
  302. package/lib/typescript/helpers/mamReactions.d.ts +13 -0
  303. package/lib/typescript/helpers/mamReactions.d.ts.map +1 -0
  304. package/lib/typescript/helpers/parseMessageReference.d.ts +16 -0
  305. package/lib/typescript/helpers/parseMessageReference.d.ts.map +1 -0
  306. package/lib/typescript/helpers/reactionsConfig.d.ts +5 -0
  307. package/lib/typescript/helpers/reactionsConfig.d.ts.map +1 -0
  308. package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
  309. package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
  310. package/lib/typescript/hooks/useMessageHeapState.d.ts.map +1 -1
  311. package/lib/typescript/hooks/useRoomInitialization.d.ts +2 -2
  312. package/lib/typescript/hooks/useRoomInitialization.d.ts.map +1 -1
  313. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  314. package/lib/typescript/networking/stanzaHandlers.d.ts +4 -2
  315. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  316. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts +3 -1
  317. package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts.map +1 -1
  318. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  319. package/lib/typescript/networking/xmpp/mamRouter.d.ts +23 -0
  320. package/lib/typescript/networking/xmpp/mamRouter.d.ts.map +1 -0
  321. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts +1 -0
  322. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  323. package/lib/typescript/networking/xmppClient.d.ts +22 -1
  324. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  325. package/lib/typescript/roomStore/Middleware/newMessageMidlleware.d.ts.map +1 -1
  326. package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts +4 -0
  327. package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts.map +1 -0
  328. package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts +9 -0
  329. package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts.map +1 -1
  330. package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
  331. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  332. package/lib/typescript/roomStore/persistBackend.d.ts +11 -0
  333. package/lib/typescript/roomStore/persistBackend.d.ts.map +1 -0
  334. package/lib/typescript/roomStore/persistence.d.ts +5 -6
  335. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  336. package/lib/typescript/roomStore/roomsSlice.d.ts +41 -1
  337. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  338. package/lib/typescript/theme/theme.d.ts +4 -1
  339. package/lib/typescript/theme/theme.d.ts.map +1 -1
  340. package/lib/typescript/types/models/message.model.d.ts +4 -0
  341. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  342. package/lib/typescript/types/models/room.model.d.ts +16 -0
  343. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  344. package/lib/typescript/types/models/xmpp.model.d.ts +6 -1
  345. package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
  346. package/lib/typescript/types/types.d.ts +15 -3
  347. package/lib/typescript/types/types.d.ts.map +1 -1
  348. package/lib/typescript/utils/devLogger.d.ts +8 -0
  349. package/lib/typescript/utils/devLogger.d.ts.map +1 -1
  350. package/lib/typescript/version.d.ts +1 -1
  351. package/package.json +10 -1
  352. package/src/assets/emojiData.ts +2146 -0
  353. package/src/assets/icons.tsx +5 -5
  354. package/src/components/Header/HeaderRoomList.tsx +7 -5
  355. package/src/components/MainComponents/ChatHeader.tsx +16 -7
  356. package/src/components/MainComponents/ChatRoom.tsx +64 -32
  357. package/src/components/MainComponents/ChatWrapper.tsx +73 -21
  358. package/src/components/MainComponents/KeyboardInputDock.tsx +47 -0
  359. package/src/components/MainComponents/MessageContainer.tsx +7 -15
  360. package/src/components/MainComponents/MessageList.tsx +96 -43
  361. package/src/components/MainComponents/RoomList.tsx +28 -29
  362. package/src/components/MainComponents/RoomStack.tsx +309 -0
  363. package/src/components/MainComponents/SystemMessage.tsx +6 -2
  364. package/src/components/MessageBubble/Avatar.tsx +7 -1
  365. package/src/components/MessageBubble/BottomReplyContainer.tsx +19 -21
  366. package/src/components/MessageBubble/EmojiPickerSheet.tsx +468 -0
  367. package/src/components/MessageBubble/Message.tsx +146 -87
  368. package/src/components/MessageBubble/MessageInteractions.tsx +213 -12
  369. package/src/components/MessageBubble/MessageReaction.tsx +120 -96
  370. package/src/components/MessageBubble/MessageReply.tsx +65 -32
  371. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +4 -0
  372. package/src/components/Modals/Modal/Modal.tsx +32 -1
  373. package/src/components/Modals/Modal/SwipeBackLayer.tsx +221 -0
  374. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +29 -8
  375. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +6 -3
  376. package/src/components/RoomComponents/ChatRoomItem.tsx +11 -4
  377. package/src/components/RoomComponents/styled/LastMessageEmoji.tsx +7 -8
  378. package/src/components/Thread/ThreadWrapper.tsx +274 -198
  379. package/src/components/styled/DateLabel.tsx +7 -3
  380. package/src/context/MessageNotificationContext.tsx +205 -7
  381. package/src/context/xmppProvider.tsx +29 -9
  382. package/src/helpers/createRoomFromApi.tsx +37 -1
  383. package/src/helpers/emoji.ts +39 -0
  384. package/src/helpers/haptics.ts +19 -0
  385. package/src/helpers/historyPreloadScheduler.ts +37 -69
  386. package/src/helpers/insertMessageWithDelimiter.ts +23 -16
  387. package/src/helpers/keyboardLayout.ts +26 -0
  388. package/src/helpers/mamReactions.ts +59 -0
  389. package/src/helpers/parseMessageReference.ts +38 -0
  390. package/src/helpers/reactionsConfig.ts +13 -0
  391. package/src/helpers/updateMessagesTillLast.tsx +14 -2
  392. package/src/hooks/useHeapSender.tsx +3 -2
  393. package/src/hooks/useMessageHeapState.tsx +6 -2
  394. package/src/hooks/useRoomInitialization.tsx +32 -15
  395. package/src/hooks/useSendMessage.tsx +18 -11
  396. package/src/hooks/useUnreadMessagesCounter.ts +1 -1
  397. package/src/networking/stanzaHandlers.ts +116 -60
  398. package/src/networking/xmpp/getHistory.xmpp.ts +44 -106
  399. package/src/networking/xmpp/handleStanzas.xmpp.ts +2 -0
  400. package/src/networking/xmpp/mamRouter.ts +176 -0
  401. package/src/networking/xmpp/presenceInRoom.xmpp.ts +46 -3
  402. package/src/networking/xmppClient.ts +105 -20
  403. package/src/roomStore/Middleware/newMessageMidlleware.tsx +35 -38
  404. package/src/roomStore/Middleware/perfMiddleware.ts +50 -0
  405. package/src/roomStore/Middleware/reactionsMiddleware.tsx +53 -52
  406. package/src/roomStore/Middleware/unreadMidlleware.tsx +92 -80
  407. package/src/roomStore/index.ts +28 -27
  408. package/src/roomStore/persistBackend.ts +96 -0
  409. package/src/roomStore/persistence.ts +280 -73
  410. package/src/roomStore/roomsSlice.ts +304 -155
  411. package/src/theme/theme.ts +10 -1
  412. package/src/types/models/message.model.ts +4 -0
  413. package/src/types/models/room.model.ts +17 -0
  414. package/src/types/models/xmpp.model.ts +4 -2
  415. package/src/types/types.ts +15 -3
  416. package/src/utils/devLogger.ts +16 -0
  417. package/src/version.ts +1 -1
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ // expo-haptics is an OPTIONAL peer, probed the same way as expo-blur: the JS
4
+ // package alone is not enough, the native module has to be in the binary,
5
+ // otherwise the call throws. Without it the gesture simply has no feedback.
6
+ let Haptics = null;
7
+ try {
8
+ const {
9
+ requireNativeModule
10
+ } = require('expo-modules-core');
11
+ requireNativeModule('ExpoHaptics');
12
+ Haptics = require('expo-haptics');
13
+ } catch {
14
+ Haptics = null;
15
+ }
16
+
17
+ /** Short tap, the messenger "I got your long-press" feedback. Never throws. */
18
+ export const hapticTap = () => {
19
+ if (!Haptics) {
20
+ return;
21
+ }
22
+ Haptics.impactAsync?.(Haptics.ImpactFeedbackStyle?.Medium).catch?.(() => {});
23
+ };
24
+ //# sourceMappingURL=haptics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Haptics","requireNativeModule","require","hapticTap","impactAsync","ImpactFeedbackStyle","Medium","catch"],"sourceRoot":"../../../src","sources":["helpers/haptics.ts"],"mappings":";;AAAA;AACA;AACA;AACA,IAAIA,OAAY,GAAG,IAAI;AACvB,IAAI;EACF,MAAM;IAAEC;EAAoB,CAAC,GAAGC,OAAO,CAAC,mBAAmB,CAAC;EAC5DD,mBAAmB,CAAC,aAAa,CAAC;EAClCD,OAAO,GAAGE,OAAO,CAAC,cAAc,CAAC;AACnC,CAAC,CAAC,MAAM;EACNF,OAAO,GAAG,IAAI;AAChB;;AAEA;AACA,OAAO,MAAMG,SAAS,GAAGA,CAAA,KAAM;EAC7B,IAAI,CAACH,OAAO,EAAE;IACZ;EACF;EACAA,OAAO,CAACI,WAAW,GAAGJ,OAAO,CAACK,mBAAmB,EAAEC,MAAM,CAAC,CAACC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC","ignoreList":[]}
@@ -4,18 +4,10 @@ import { AppState } from 'react-native';
4
4
  import { store } from '../roomStore';
5
5
  import { applyRoomsPreloadBatch, setUnreadSyncing, RUNTIME_MESSAGE_LIMIT } from '../roomStore/roomsSlice';
6
6
  const DEFAULT_CONCURRENCY = 3;
7
- // Fetch the most recent ~20 on re-entry (mirrors web). A larger first page
8
- // also means more id-overlap with cache, so the merge in
9
- // `mergeHistoryIntoCache` rarely has to fall back to clear-and-replace.
10
- const DEFAULT_PAGE_SIZE = 20;
7
+ const DEFAULT_PAGE_SIZE = 10;
11
8
  const DEFAULT_RETRY_LIMIT = 2;
12
- // When the first page is entirely unread (every fetched message is newer
13
- // than `lastViewedTimestamp`), the true unread count could be far bigger
14
- // than `pageSize` — `useUnread()` only ever sees what's been loaded. Page
15
- // further back, up to this many extra fetches, until we either find the
16
- // boundary or give up (`unreadCapped` then stays true so callers at least
17
- // know the count is a floor, not exact). Customer-reported #34.
18
- const MAX_UNREAD_CATCHUP_PAGES = 8;
9
+ const DEFAULT_FIRST_WAVE = 30;
10
+ const BACKGROUND_BATCH_PAUSE_MS = 400;
19
11
  const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
20
12
  const messageTimestamp = m => {
21
13
  if (!m) {
@@ -32,10 +24,10 @@ const messageTimestamp = m => {
32
24
  return 0;
33
25
  };
34
26
  const getRoomLastActivityScore = room => {
35
- if (!room?.messages?.length) {
36
- return 0;
37
- }
38
- return room.messages.reduce((max, m) => Math.max(max, messageTimestamp(m)), 0);
27
+ const fromMessages = room?.messages?.length ? room.messages.reduce((max, m) => Math.max(max, messageTimestamp(m)), 0) : 0;
28
+ const fromStamp = Number(room?.lastMessageTimestamp) || 0;
29
+ const fromSeed = Number(room?.lastMessage?.id) || 0;
30
+ return Math.max(fromMessages, fromStamp, fromSeed);
39
31
  };
40
32
  const computeUnreadCapped = (room, messages, pageSize) => {
41
33
  if (!room) {
@@ -52,8 +44,11 @@ const computeUnreadCapped = (room, messages, pageSize) => {
52
44
  return false;
53
45
  }
54
46
  const lastViewed = Number(room.lastViewedTimestamp) || 0;
47
+ // No read marker yet (the private-store markers often land after the
48
+ // first preload page): the count is unknown, not "more than a page".
49
+ // Claiming capped here showed "10+" on rooms with a single unread.
55
50
  if (lastViewed <= 0) {
56
- return true;
51
+ return false;
57
52
  }
58
53
  const oldestTs = countable.reduce((minTs, m) => {
59
54
  const ts = messageTimestamp(m);
@@ -94,6 +89,7 @@ export const runHistoryPreloadScheduler = async options => {
94
89
  pageSize = DEFAULT_PAGE_SIZE,
95
90
  retryLimit = DEFAULT_RETRY_LIMIT,
96
91
  roomLimit,
92
+ firstWave = DEFAULT_FIRST_WAVE,
97
93
  selectedRoomJid = null,
98
94
  defaultRoomJids = [],
99
95
  forceReload = false
@@ -101,6 +97,13 @@ export const runHistoryPreloadScheduler = async options => {
101
97
  if (signal?.aborted) {
102
98
  return;
103
99
  }
100
+ const startedAt = Date.now();
101
+ let firstWaveLogged = false;
102
+ const devLog = msg => {
103
+ if (typeof __DEV__ !== 'undefined' && __DEV__) {
104
+ console.log(msg);
105
+ }
106
+ };
104
107
  store.dispatch(setUnreadSyncing(true));
105
108
  try {
106
109
  const state = store.getState();
@@ -124,6 +127,8 @@ export const runHistoryPreloadScheduler = async options => {
124
127
  const queue = roomLimit && roomLimit > 0 ? sortedQueue.slice(0, roomLimit) : sortedQueue;
125
128
  const inFlightByRoom = new Map();
126
129
  let consecutiveErrorCount = 0;
130
+ let started = 0;
131
+ devLog(`[preload] ${queue.length} rooms queued, first wave ${Math.min(firstWave, queue.length)}, page ${pageSize}`);
127
132
  while (queue.length > 0) {
128
133
  if (signal?.aborted) {
129
134
  return;
@@ -143,6 +148,12 @@ export const runHistoryPreloadScheduler = async options => {
143
148
  continue;
144
149
  }
145
150
  const batch = readyItems.slice(0, Math.max(1, concurrency));
151
+ const inBackgroundWave = started >= firstWave;
152
+ if (inBackgroundWave && !firstWaveLogged) {
153
+ firstWaveLogged = true;
154
+ devLog(`[preload] first wave done in ${Date.now() - startedAt}ms`);
155
+ }
156
+ started += batch.length;
146
157
 
147
158
  // Snapshot each room's historyPreloadState BEFORE marking the
148
159
  // batch as 'loading'. Without this snapshot the per-task
@@ -178,7 +189,8 @@ export const runHistoryPreloadScheduler = async options => {
178
189
  const fetchedMessages = await client.getHistoryStanza(item.jid, pageSize, undefined, undefined, {
179
190
  coalesceRoom: true,
180
191
  skipIfPreloaded: !forceReload,
181
- source: 'background'
192
+ source: 'background',
193
+ selfApplied: true
182
194
  });
183
195
  if (signal?.aborted) {
184
196
  return;
@@ -187,52 +199,7 @@ export const runHistoryPreloadScheduler = async options => {
187
199
  throw new Error('history_timeout');
188
200
  }
189
201
  const nextRoom = store.getState().rooms.rooms[item.jid];
190
- let combined = fetchedMessages || [];
191
- const lastViewed = Number(nextRoom?.lastViewedTimestamp) || 0;
192
-
193
- // The first page was entirely unread — keep paging older until
194
- // we find a message at/before `lastViewedTimestamp` (the true
195
- // boundary) or run out of catch-up budget, so the count isn't
196
- // silently truncated at `pageSize`.
197
- if (lastViewed > 0 && computeUnreadCapped(nextRoom, combined, pageSize)) {
198
- let lastPageLen = combined.length;
199
- let extraPages = 0;
200
- while (extraPages < MAX_UNREAD_CATCHUP_PAGES && lastPageLen >= pageSize && !signal?.aborted) {
201
- const oldestId = combined.reduce((min, m) => {
202
- const idNum = Number(m?.id);
203
- if (!Number.isFinite(idNum)) {
204
- return min;
205
- }
206
- return min === null || idNum < min ? idNum : min;
207
- }, null);
208
- if (oldestId === null) {
209
- break;
210
- }
211
- let older;
212
- try {
213
- older = await client.getHistoryStanza(item.jid, pageSize, oldestId, undefined, {
214
- coalesceRoom: true,
215
- skipIfPreloaded: !forceReload,
216
- source: 'background'
217
- });
218
- } catch {
219
- break;
220
- }
221
- if (!older || !older.length) {
222
- break;
223
- }
224
- combined = [...older, ...combined];
225
- lastPageLen = older.length;
226
- extraPages++;
227
- const oldestTs = combined.reduce((minTs, m) => {
228
- const ts = messageTimestamp(m);
229
- return ts > 0 ? Math.min(minTs, ts) : minTs;
230
- }, Number.MAX_SAFE_INTEGER);
231
- if (oldestTs !== Number.MAX_SAFE_INTEGER && oldestTs <= lastViewed) {
232
- break;
233
- }
234
- }
235
- }
202
+ const combined = fetchedMessages || [];
236
203
 
237
204
  // `mergeHistoryIntoCache` (roomsSlice) caps whatever we dispatch
238
205
  // here to the newest RUNTIME_MESSAGE_LIMIT messages before it
@@ -282,11 +249,10 @@ export const runHistoryPreloadScheduler = async options => {
282
249
  inFlightByRoom.set(item.jid, task);
283
250
  await task.finally(() => inFlightByRoom.delete(item.jid));
284
251
  }));
285
-
286
- // Yield to JS event loop (no requestIdleCallback in RN).
287
- await new Promise(r => setTimeout(r, 0));
252
+ await sleep(inBackgroundWave ? BACKGROUND_BATCH_PAUSE_MS : 0);
288
253
  }
289
254
  } finally {
255
+ devLog(`[preload] finished in ${Date.now() - startedAt}ms`);
290
256
  store.dispatch(setUnreadSyncing(false));
291
257
  }
292
258
  };
@@ -1 +1 @@
1
- {"version":3,"names":["AppState","store","applyRoomsPreloadBatch","setUnreadSyncing","RUNTIME_MESSAGE_LIMIT","DEFAULT_CONCURRENCY","DEFAULT_PAGE_SIZE","DEFAULT_RETRY_LIMIT","MAX_UNREAD_CATCHUP_PAGES","sleep","ms","Promise","resolve","setTimeout","messageTimestamp","m","t","timestamp","Number","isFinite","id","getRoomLastActivityScore","room","messages","length","reduce","max","Math","computeUnreadCapped","pageSize","historyComplete","countable","filter","msg","pending","lastViewed","lastViewedTimestamp","oldestTs","minTs","ts","min","MAX_SAFE_INTEGER","getRoomPriority","jid","_room","selectedRoomJid","defaultRoomJids","has","shouldPauseForVisibility","currentState","runHistoryPreloadScheduler","options","client","signal","concurrency","retryLimit","roomLimit","forceReload","aborted","dispatch","state","getState","rooms","defaultSet","Set","sortedQueue","Object","entries","map","priority","activityScore","attempts","readyAt","Date","now","sort","a","b","localeCompare","queue","slice","inFlightByRoom","Map","consecutiveErrorCount","isActiveRoomGateOpen","readyItems","item","batch","preBatchPreloadStateByJid","historyPreloadState","all","queueIndex","findIndex","queued","splice","task","currentRoom","preState","get","fetchedMessages","getHistoryStanza","undefined","coalesceRoom","skipIfPreloaded","source","Error","nextRoom","combined","lastPageLen","extraPages","oldestId","idNum","older","simulatedStored","unreadCapped","retries","canRetry","jitter","floor","random","backoff","push","set","finally","delete","r"],"sourceRoot":"../../../src","sources":["helpers/historyPreloadScheduler.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,SAASC,KAAK,QAAQ,cAAc;AACpC,SACEC,sBAAsB,EACtBC,gBAAgB,EAChBC,qBAAqB,QAChB,yBAAyB;AAuBhC,MAAMC,mBAAmB,GAAG,CAAC;AAC7B;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,EAAE;AAC5B,MAAMC,mBAAmB,GAAG,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,GAAG,CAAC;AAElC,MAAMC,KAAK,GAAIC,EAAU,IAAK,IAAIC,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,EAAE,CAAC,CAAC;AAE/E,MAAMI,gBAAgB,GAAIC,CAAW,IAAa;EAChD,IAAI,CAACA,CAAC,EAAE;IAAC,OAAO,CAAC;EAAC;EAClB,MAAMC,CAAC,GAAID,CAAC,CAASE,SAAS;EAC9B,IAAIC,MAAM,CAACC,QAAQ,CAACH,CAAC,CAAC,IAAIA,CAAC,GAAG,CAAC,EAAE;IAAC,OAAOE,MAAM,CAACF,CAAC,CAAC;EAAC;EACnD,MAAMI,EAAE,GAAGF,MAAM,CAACH,CAAC,CAACK,EAAE,CAAC;EACvB,IAAIF,MAAM,CAACC,QAAQ,CAACC,EAAE,CAAC,IAAIA,EAAE,GAAG,CAAC,EAAE;IAAC,OAAOA,EAAE;EAAC;EAC9C,OAAO,CAAC;AACV,CAAC;AAED,MAAMC,wBAAwB,GAAIC,IAAW,IAAa;EACxD,IAAI,CAACA,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IAAC,OAAO,CAAC;EAAC;EACvC,OAAOF,IAAI,CAACC,QAAQ,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEX,CAAC,KAAKY,IAAI,CAACD,GAAG,CAACA,GAAG,EAAEZ,gBAAgB,CAACC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAMa,mBAAmB,GAAGA,CAC1BN,IAAW,EACXC,QAAoB,EACpBM,QAAgB,KACJ;EACZ,IAAI,CAACP,IAAI,EAAE;IAAC,OAAO,KAAK;EAAC;EACzB,IAAI,CAACC,QAAQ,IAAIA,QAAQ,CAACC,MAAM,GAAGK,QAAQ,EAAE;IAAC,OAAO,KAAK;EAAC;EAC3D,IAAIP,IAAI,CAACQ,eAAe,KAAK,IAAI,EAAE;IAAC,OAAO,KAAK;EAAC;EAEjD,MAAMC,SAAS,GAAGR,QAAQ,CAACS,MAAM,CAC9BC,GAAG,IAAK,CAAC,CAACA,GAAG,IAAIA,GAAG,CAACb,EAAE,KAAK,eAAe,IAAI,CAACa,GAAG,CAACC,OACvD,CAAC;EACD,IAAIH,SAAS,CAACP,MAAM,GAAGK,QAAQ,EAAE;IAAC,OAAO,KAAK;EAAC;EAE/C,MAAMM,UAAU,GAAGjB,MAAM,CAACI,IAAI,CAACc,mBAAmB,CAAC,IAAI,CAAC;EACxD,IAAID,UAAU,IAAI,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EAElC,MAAME,QAAQ,GAAGN,SAAS,CAACN,MAAM,CAAS,CAACa,KAAK,EAAEvB,CAAC,KAAK;IACtD,MAAMwB,EAAE,GAAGzB,gBAAgB,CAACC,CAAC,CAAC;IAC9B,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACoB,EAAE,CAAC,IAAIA,EAAE,IAAI,CAAC,EAAE;MAAC,OAAOD,KAAK;IAAC;IACnD,OAAOX,IAAI,CAACa,GAAG,CAACF,KAAK,EAAEC,EAAE,CAAC;EAC5B,CAAC,EAAErB,MAAM,CAACuB,gBAAgB,CAAC;EAC3B,IAAI,CAACvB,MAAM,CAACC,QAAQ,CAACkB,QAAQ,CAAC,IAAIA,QAAQ,KAAKnB,MAAM,CAACuB,gBAAgB,EACpE;IAAC,OAAO,KAAK;EAAC;EAChB,OAAOJ,QAAQ,GAAGF,UAAU;AAC9B,CAAC;AAED,MAAMO,eAAe,GAAGA,CACtBC,GAAW,EACXC,KAAY,EACZC,eAA8B,EAC9BC,eAA4B,KACjB;EACX,IAAID,eAAe,IAAIA,eAAe,KAAKF,GAAG,EAAE;IAAC,OAAO,CAAC;EAAC;EAC1D,IAAIG,eAAe,CAACC,GAAG,CAACJ,GAAG,CAAC,EAAE;IAAC,OAAO,CAAC;EAAC;EACxC,OAAO,CAAC;AACV,CAAC;AAED,MAAMK,wBAAwB,GAAGA,CAAA,KAAe;EAC9C,OAAOhD,QAAQ,CAACiD,YAAY,KAAK,QAAQ;AAC3C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAG,MACxCC,OAAuC,IACrB;EAClB,MAAM;IACJC,MAAM;IACNC,MAAM;IACNC,WAAW,GAAGjD,mBAAmB;IACjCwB,QAAQ,GAAGvB,iBAAiB;IAC5BiD,UAAU,GAAGhD,mBAAmB;IAChCiD,SAAS;IACTX,eAAe,GAAG,IAAI;IACtBC,eAAe,GAAG,EAAE;IACpBW,WAAW,GAAG;EAChB,CAAC,GAAGN,OAAO;EAEX,IAAIE,MAAM,EAAEK,OAAO,EAAE;IAAC;EAAO;EAE7BzD,KAAK,CAAC0D,QAAQ,CAACxD,gBAAgB,CAAC,IAAI,CAAC,CAAC;EACtC,IAAI;IAEJ,MAAMyD,KAAK,GAAG3D,KAAK,CAAC4D,QAAQ,CAAC,CAAC;IAC9B,MAAMC,KAAK,GAAIF,KAAK,CAACE,KAAK,CAACA,KAAK,IAAI,CAAC,CAA2B;IAChE,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAClB,eAAe,CAAC;IAE3C,MAAMmB,WAAwB,GAAGC,MAAM,CAACC,OAAO,CAACL,KAAK,CAAC,CACnDM,GAAG,CAAC,CAAC,CAACzB,GAAG,EAAErB,IAAI,CAAkB,MAAM;MACtCqB,GAAG;MACH0B,QAAQ,EAAE3B,eAAe,CAACC,GAAG,EAAErB,IAAI,EAAEuB,eAAe,EAAEkB,UAAU,CAAC;MACjEO,aAAa,EAAEjD,wBAAwB,CAACC,IAAI,CAAC;MAC7CiD,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAEC,IAAI,CAACC,GAAG,CAAC;IACpB,CAAC,CAAC,CAAC,CACFC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;MACd,IAAID,CAAC,CAACP,QAAQ,KAAKQ,CAAC,CAACR,QAAQ,EAAE;QAAC,OAAOO,CAAC,CAACP,QAAQ,GAAGQ,CAAC,CAACR,QAAQ;MAAC;MAC/D,IAAIO,CAAC,CAACN,aAAa,KAAKO,CAAC,CAACP,aAAa,EAAE;QACvC,OAAOO,CAAC,CAACP,aAAa,GAAGM,CAAC,CAACN,aAAa;MAC1C;MACA,OAAOM,CAAC,CAACjC,GAAG,CAACmC,aAAa,CAACD,CAAC,CAAClC,GAAG,CAAC;IACnC,CAAC,CAAC;IAEJ,MAAMoC,KAAkB,GACtBvB,SAAS,IAAIA,SAAS,GAAG,CAAC,GACtBS,WAAW,CAACe,KAAK,CAAC,CAAC,EAAExB,SAAS,CAAC,GAC/BS,WAAW;IAEjB,MAAMgB,cAAc,GAAG,IAAIC,GAAG,CAAwB,CAAC;IACvD,IAAIC,qBAAqB,GAAG,CAAC;IAE7B,OAAOJ,KAAK,CAACvD,MAAM,GAAG,CAAC,EAAE;MACvB,IAAI6B,MAAM,EAAEK,OAAO,EAAE;QAAC;MAAO;MAE7B,IAAI,CAACN,MAAM,CAACgC,oBAAoB,CAAC,CAAC,EAAE;QAClC,MAAM3E,KAAK,CAAC,EAAE,CAAC;QACf;MACF;MACA,IAAIuC,wBAAwB,CAAC,CAAC,EAAE;QAC9B,MAAMvC,KAAK,CAAC,GAAG,CAAC;QAChB;MACF;MAEA,MAAMiE,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;MACtB,MAAMW,UAAU,GAAGN,KAAK,CAAC/C,MAAM,CAC5BsD,IAAI,IAAKA,IAAI,CAACd,OAAO,IAAIE,GAAG,IAAI,CAACO,cAAc,CAAClC,GAAG,CAACuC,IAAI,CAAC3C,GAAG,CAC/D,CAAC;MACD,IAAI0C,UAAU,CAAC7D,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAMf,KAAK,CAAC,EAAE,CAAC;QACf;MACF;MAEA,MAAM8E,KAAK,GAAGF,UAAU,CAACL,KAAK,CAAC,CAAC,EAAErD,IAAI,CAACD,GAAG,CAAC,CAAC,EAAE4B,WAAW,CAAC,CAAC;;MAE3D;MACA;MACA;MACA;MACA;MACA;MACA,MAAMkC,yBAAyB,GAAG,IAAIN,GAAG,CACvCK,KAAK,CAACnB,GAAG,CAAEkB,IAAI,IAAK,CAClBA,IAAI,CAAC3C,GAAG,EACR1C,KAAK,CAAC4D,QAAQ,CAAC,CAAC,CAACC,KAAK,CAACA,KAAK,CAACwB,IAAI,CAAC3C,GAAG,CAAC,EAAE8C,mBAAmB,CAC5D,CACH,CAAC;MAEDxF,KAAK,CAAC0D,QAAQ,CACZzD,sBAAsB,CAAC;QACrB4D,KAAK,EAAEyB,KAAK,CAACnB,GAAG,CAAEkB,IAAI,KAAM;UAC1B3C,GAAG,EAAE2C,IAAI,CAAC3C,GAAG;UACb8C,mBAAmB,EAAE;QACvB,CAAC,CAAC;MACJ,CAAC,CACH,CAAC;MAED,MAAM9E,OAAO,CAAC+E,GAAG,CACfH,KAAK,CAACnB,GAAG,CAAC,MAAOkB,IAAI,IAAK;QACxB,MAAMK,UAAU,GAAGZ,KAAK,CAACa,SAAS,CAAEC,MAAM,IAAKA,MAAM,CAAClD,GAAG,KAAK2C,IAAI,CAAC3C,GAAG,CAAC;QACvE,IAAIgD,UAAU,KAAK,CAAC,CAAC,EAAE;UAACZ,KAAK,CAACe,MAAM,CAACH,UAAU,EAAE,CAAC,CAAC;QAAC;QAEpD,MAAMI,IAAI,GAAG,CAAC,YAAY;UACxB,MAAMC,WAAW,GAAG/F,KAAK,CAAC4D,QAAQ,CAAC,CAAC,CAACC,KAAK,CAACA,KAAK,CAACwB,IAAI,CAAC3C,GAAG,CAAC;UAC1D,MAAMsD,QAAQ,GAAGT,yBAAyB,CAACU,GAAG,CAACZ,IAAI,CAAC3C,GAAG,CAAC;UACxD,IACE,CAACqD,WAAW,IACX,CAACvC,WAAW,IAAIwC,QAAQ,KAAK,MAAO,EACrC;YACAhG,KAAK,CAAC0D,QAAQ,CACZzD,sBAAsB,CAAC;cACrB4D,KAAK,EAAE,CAAC;gBAAEnB,GAAG,EAAE2C,IAAI,CAAC3C,GAAG;gBAAE8C,mBAAmB,EAAE;cAAO,CAAC;YACxD,CAAC,CACH,CAAC;YACD;UACF;UAEA,IAAI;YACF,MAAMU,eAAe,GAAG,MAAM/C,MAAM,CAACgD,gBAAgB,CACnDd,IAAI,CAAC3C,GAAG,EACRd,QAAQ,EACRwE,SAAS,EACTA,SAAS,EACT;cACEC,YAAY,EAAE,IAAI;cAClBC,eAAe,EAAE,CAAC9C,WAAW;cAC7B+C,MAAM,EAAE;YACV,CACF,CAAC;YACD,IAAInD,MAAM,EAAEK,OAAO,EAAE;cAAC;YAAO;YAC7B,IAAI,OAAOyC,eAAe,KAAK,WAAW,EAAE;cAC1C,MAAM,IAAIM,KAAK,CAAC,iBAAiB,CAAC;YACpC;YAEA,MAAMC,QAAQ,GAAGzG,KAAK,CAAC4D,QAAQ,CAAC,CAAC,CAACC,KAAK,CAACA,KAAK,CAACwB,IAAI,CAAC3C,GAAG,CAAC;YACvD,IAAIgE,QAAoB,GAAGR,eAAe,IAAI,EAAE;YAChD,MAAMhE,UAAU,GAAGjB,MAAM,CAACwF,QAAQ,EAAEtE,mBAAmB,CAAC,IAAI,CAAC;;YAE7D;YACA;YACA;YACA;YACA,IAAID,UAAU,GAAG,CAAC,IAAIP,mBAAmB,CAAC8E,QAAQ,EAAEC,QAAQ,EAAE9E,QAAQ,CAAC,EAAE;cACvE,IAAI+E,WAAW,GAAGD,QAAQ,CAACnF,MAAM;cACjC,IAAIqF,UAAU,GAAG,CAAC;cAClB,OACEA,UAAU,GAAGrG,wBAAwB,IACrCoG,WAAW,IAAI/E,QAAQ,IACvB,CAACwB,MAAM,EAAEK,OAAO,EAChB;gBACA,MAAMoD,QAAQ,GAAGH,QAAQ,CAAClF,MAAM,CAAgB,CAACe,GAAG,EAAEzB,CAAC,KAAK;kBAC1D,MAAMgG,KAAK,GAAG7F,MAAM,CAAEH,CAAC,EAAUK,EAAE,CAAC;kBACpC,IAAI,CAACF,MAAM,CAACC,QAAQ,CAAC4F,KAAK,CAAC,EAAE;oBAAC,OAAOvE,GAAG;kBAAC;kBACzC,OAAOA,GAAG,KAAK,IAAI,IAAIuE,KAAK,GAAGvE,GAAG,GAAGuE,KAAK,GAAGvE,GAAG;gBAClD,CAAC,EAAE,IAAI,CAAC;gBACR,IAAIsE,QAAQ,KAAK,IAAI,EAAE;kBAAC;gBAAM;gBAE9B,IAAIE,KAA6B;gBACjC,IAAI;kBACFA,KAAK,GAAG,MAAM5D,MAAM,CAACgD,gBAAgB,CACnCd,IAAI,CAAC3C,GAAG,EACRd,QAAQ,EACRiF,QAAQ,EACRT,SAAS,EACT;oBACEC,YAAY,EAAE,IAAI;oBAClBC,eAAe,EAAE,CAAC9C,WAAW;oBAC7B+C,MAAM,EAAE;kBACV,CACF,CAAC;gBACH,CAAC,CAAC,MAAM;kBACN;gBACF;gBACA,IAAI,CAACQ,KAAK,IAAI,CAACA,KAAK,CAACxF,MAAM,EAAE;kBAAC;gBAAM;gBAEpCmF,QAAQ,GAAG,CAAC,GAAGK,KAAK,EAAE,GAAGL,QAAQ,CAAC;gBAClCC,WAAW,GAAGI,KAAK,CAACxF,MAAM;gBAC1BqF,UAAU,EAAE;gBAEZ,MAAMxE,QAAQ,GAAGsE,QAAQ,CAAClF,MAAM,CAAS,CAACa,KAAK,EAAEvB,CAAC,KAAK;kBACrD,MAAMwB,EAAE,GAAGzB,gBAAgB,CAACC,CAAC,CAAC;kBAC9B,OAAOwB,EAAE,GAAG,CAAC,GAAGZ,IAAI,CAACa,GAAG,CAACF,KAAK,EAAEC,EAAE,CAAC,GAAGD,KAAK;gBAC7C,CAAC,EAAEpB,MAAM,CAACuB,gBAAgB,CAAC;gBAC3B,IAAIJ,QAAQ,KAAKnB,MAAM,CAACuB,gBAAgB,IAAIJ,QAAQ,IAAIF,UAAU,EAAE;kBAClE;gBACF;cACF;YACF;;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA,MAAM8E,eAAe,GACnBN,QAAQ,CAACnF,MAAM,GAAGpB,qBAAqB,GACnCuG,QAAQ,CAAC3B,KAAK,CAAC,CAAC5E,qBAAqB,CAAC,GACtCuG,QAAQ;YACd,MAAMO,YAAY,GAAGtF,mBAAmB,CACtC8E,QAAQ,EACRO,eAAe,EACfpF,QACF,CAAC;YAED5B,KAAK,CAAC0D,QAAQ,CACZzD,sBAAsB,CAAC;cACrB4D,KAAK,EAAE,CACL;gBACEnB,GAAG,EAAE2C,IAAI,CAAC3C,GAAG;gBACbpB,QAAQ,EAAEoF,QAAQ;gBAClBO,YAAY;gBACZzB,mBAAmB,EAAE;cACvB,CAAC;YAEL,CAAC,CACH,CAAC;YACDN,qBAAqB,GAAG,CAAC;UAC3B,CAAC,CAAC,MAAM;YACN,MAAMgC,OAAO,GAAG7B,IAAI,CAACf,QAAQ,GAAG,CAAC;YACjC,MAAM6C,QAAQ,GAAGD,OAAO,IAAI5D,UAAU;YACtC,IAAI6D,QAAQ,EAAE;cACZ,MAAMC,MAAM,GAAG1F,IAAI,CAAC2F,KAAK,CAAC3F,IAAI,CAAC4F,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;cAC9C,MAAMC,OAAO,GAAG7F,IAAI,CAACa,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI8C,IAAI,CAACf,QAAQ,CAAC,GAAG8C,MAAM;cACjEtC,KAAK,CAAC0C,IAAI,CAAC;gBACT,GAAGnC,IAAI;gBACPf,QAAQ,EAAE4C,OAAO;gBACjB3C,OAAO,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG8C;cACxB,CAAC,CAAC;YACJ,CAAC,MAAM;cACLvH,KAAK,CAAC0D,QAAQ,CACZzD,sBAAsB,CAAC;gBACrB4D,KAAK,EAAE,CAAC;kBAAEnB,GAAG,EAAE2C,IAAI,CAAC3C,GAAG;kBAAE8C,mBAAmB,EAAE;gBAAQ,CAAC;cACzD,CAAC,CACH,CAAC;YACH;YACAN,qBAAqB,IAAI,CAAC;YAC1B,IAAIA,qBAAqB,IAAI,CAAC,EAAE;cAC9B,MAAM1E,KAAK,CAAC,GAAG,CAAC;cAChB0E,qBAAqB,GAAG,CAAC;YAC3B;UACF;QACF,CAAC,EAAE,CAAC;QAEJF,cAAc,CAACyC,GAAG,CAACpC,IAAI,CAAC3C,GAAG,EAAEoD,IAAI,CAAC;QAClC,MAAMA,IAAI,CAAC4B,OAAO,CAAC,MAAM1C,cAAc,CAAC2C,MAAM,CAACtC,IAAI,CAAC3C,GAAG,CAAC,CAAC;MAC3D,CAAC,CACH,CAAC;;MAED;MACA,MAAM,IAAIhC,OAAO,CAAEkH,CAAC,IAAKhH,UAAU,CAACgH,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C;EACA,CAAC,SAAS;IACR5H,KAAK,CAAC0D,QAAQ,CAACxD,gBAAgB,CAAC,KAAK,CAAC,CAAC;EACzC;AACF,CAAC;AAED,eAAe+C,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":["AppState","store","applyRoomsPreloadBatch","setUnreadSyncing","RUNTIME_MESSAGE_LIMIT","DEFAULT_CONCURRENCY","DEFAULT_PAGE_SIZE","DEFAULT_RETRY_LIMIT","DEFAULT_FIRST_WAVE","BACKGROUND_BATCH_PAUSE_MS","sleep","ms","Promise","resolve","setTimeout","messageTimestamp","m","t","timestamp","Number","isFinite","id","getRoomLastActivityScore","room","fromMessages","messages","length","reduce","max","Math","fromStamp","lastMessageTimestamp","fromSeed","lastMessage","computeUnreadCapped","pageSize","historyComplete","countable","filter","msg","pending","lastViewed","lastViewedTimestamp","oldestTs","minTs","ts","min","MAX_SAFE_INTEGER","getRoomPriority","jid","_room","selectedRoomJid","defaultRoomJids","has","shouldPauseForVisibility","currentState","runHistoryPreloadScheduler","options","client","signal","concurrency","retryLimit","roomLimit","firstWave","forceReload","aborted","startedAt","Date","now","firstWaveLogged","devLog","__DEV__","console","log","dispatch","state","getState","rooms","defaultSet","Set","sortedQueue","Object","entries","map","priority","activityScore","attempts","readyAt","sort","a","b","localeCompare","queue","slice","inFlightByRoom","Map","consecutiveErrorCount","started","isActiveRoomGateOpen","readyItems","item","batch","inBackgroundWave","preBatchPreloadStateByJid","historyPreloadState","all","queueIndex","findIndex","queued","splice","task","currentRoom","preState","get","fetchedMessages","getHistoryStanza","undefined","coalesceRoom","skipIfPreloaded","source","selfApplied","Error","nextRoom","combined","simulatedStored","unreadCapped","retries","canRetry","jitter","floor","random","backoff","push","set","finally","delete"],"sourceRoot":"../../../src","sources":["helpers/historyPreloadScheduler.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { isDateAfter, isDateBefore } from './dateComparison';
4
3
  import { msgSortableMs } from './msgSortableMs';
5
4
 
6
5
  // Robustly resolve a caller-supplied read marker to epoch milliseconds.
@@ -80,16 +79,26 @@ export function insertMessageWithDelimiter(roomMessages, message, lastViewedTime
80
79
  roomMessages[existingIndex] = merged;
81
80
  return;
82
81
  }
83
- const newMessageDate = message.date;
84
82
  const lastMessage = roomMessages[roomMessages.length - 1];
85
- const firstMessage = roomMessages[0];
86
- if (isDateAfter(newMessageDate.toString(), lastMessage?.date?.toString() ?? '')) {
83
+ // Ordered by the id-encoded server timestamp (msgSortableMs), the same
84
+ // key the list and the unread logic use. The old `date` string compare
85
+ // had a hole: a message neither strictly after the last one nor
86
+ // strictly before the first (same second, or an unparseable date) fell
87
+ // through every branch and was silently DROPPED.
88
+ const newMs = msgSortableMs(message);
89
+ const lastMs = lastMessage ? msgSortableMs(lastMessage) : 0;
90
+ if (!lastMessage || !newMs || newMs >= lastMs) {
87
91
  const index = roomMessages.findIndex(msg => msg.id === message.xmppId || msg.id === message.id);
88
92
  if (index !== -1) {
93
+ // Keep an open thread open when its parent is replaced by the echo.
94
+ const keepThread = roomMessages[index]?.activeMessage;
89
95
  roomMessages[index] = {
90
96
  ...message,
91
97
  id: message.id,
92
- pending: false
98
+ pending: false,
99
+ ...(keepThread ? {
100
+ activeMessage: true
101
+ } : {})
93
102
  };
94
103
  } else {
95
104
  roomMessages.push(message);
@@ -134,14 +143,14 @@ export function insertMessageWithDelimiter(roomMessages, message, lastViewedTime
134
143
  });
135
144
  }
136
145
  }
137
- } else if (isDateBefore(newMessageDate.toString(), firstMessage?.date?.toString() ?? '')) {
138
- roomMessages.unshift(message);
139
146
  } else {
140
- for (let i = 0; i < roomMessages.length; i++) {
141
- if (isDateBefore(newMessageDate.toString(), roomMessages[i].date?.toString() ?? '')) {
142
- roomMessages.splice(i, 0, message);
143
- break;
144
- }
147
+ // Before the first message strictly newer than it; equal keys keep
148
+ // arrival order.
149
+ const at = roomMessages.findIndex(msg => msgSortableMs(msg) > newMs);
150
+ if (at === -1) {
151
+ roomMessages.push(message);
152
+ } else {
153
+ roomMessages.splice(at, 0, message);
145
154
  }
146
155
  }
147
156
  }
@@ -1 +1 @@
1
- {"version":3,"names":["isDateAfter","isDateBefore","msgSortableMs","resolveMarkerMs","marker","Number","isFinite","raw","toString","trim","asNumber","parsed","Date","parse","deepMerge","target","source","key","undefined","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","newMessageDate","date","lastMessage","length","firstMessage","index","push","lastViewedMs","newMessageMs","some","delimiterIndex","firstUnreadMs","anchorMs","splice","name","token","refreshToken","toISOString","body","roomJid","unshift","i"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["msgSortableMs","resolveMarkerMs","marker","Number","isFinite","raw","toString","trim","asNumber","parsed","Date","parse","deepMerge","target","source","key","undefined","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","lastMessage","length","newMs","lastMs","index","keepThread","activeMessage","push","lastViewedMs","newMessageMs","some","delimiterIndex","firstUnreadMs","anchorMs","splice","name","token","refreshToken","date","toISOString","body","roomJid","at"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  export const ANDROID_INPUT_DOCK_GAP = 12;
4
+ // Bottom padding the dock keeps while the iOS keyboard is open, so the
5
+ // composer is glued to the keyboard without touching its edge.
6
+ export const IOS_KEYBOARD_DOCK_GAP = 4;
4
7
  export const getKeyboardVerticalOffset = ({
5
8
  platform,
6
9
  configuredOffset = 0,
7
10
  bottomInset = 0
8
11
  }) => configuredOffset + (platform === 'ios' ? bottomInset : 0);
12
+
13
+ // Offset for the KeyboardAvoidingView strategy. Unlike KeyboardStickyView
14
+ // (where a positive `opened` offset pushes the dock DOWN into the keyboard),
15
+ // a positive value here ADDS bottom padding above the keyboard — so the
16
+ // safe-area inset must not be added: the avoiding view already ends exactly
17
+ // at the keyboard's top edge.
18
+ export const getKeyboardAvoidingOffset = ({
19
+ configuredOffset = 0
20
+ }) => configuredOffset;
21
+
22
+ // Dock bottom padding while the keyboard is open (KeyboardAvoidingView
23
+ // strategy). On iOS the safe-area padding collapses to a small gap; Android
24
+ // keeps its fixed gap.
25
+ export const getInputDockKeyboardPadding = ({
26
+ platform,
27
+ inputDockPaddingBottom
28
+ }) => platform === 'ios' ? Math.min(inputDockPaddingBottom, IOS_KEYBOARD_DOCK_GAP) : inputDockPaddingBottom;
9
29
  export const getInputDockPaddingBottom = ({
10
30
  platform,
11
31
  bottomInset = 0,
@@ -1 +1 @@
1
- {"version":3,"names":["ANDROID_INPUT_DOCK_GAP","getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","getInputDockPaddingBottom","keyboardVisible","configuredPadding","hostOwnsLayout"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;AAOA,OAAO,MAAMA,sBAAsB,GAAG,EAAE;AAExC,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCC,QAAQ;EACRC,gBAAgB,GAAG,CAAC;EACpBC,WAAW,GAAG;AACI,CAAC,KACnBD,gBAAgB,IAAID,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC,CAAC;AAc3D,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCH,QAAQ;EACRE,WAAW,GAAG,CAAC;EACfE,eAAe,GAAG,KAAK;EACvBC,iBAAiB;EACjBC,cAAc,GAAG;AACG,CAAC,KAAa;EAClC,IAAI,OAAOD,iBAAiB,KAAK,QAAQ,EAAE;IACzC,OAAOA,iBAAiB;EAC1B;EACA,IAAIC,cAAc,EAAE;IAClB,OAAO,CAAC;EACV;EACA,OAAON,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAGJ,sBAAsB;AAClE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ANDROID_INPUT_DOCK_GAP","IOS_KEYBOARD_DOCK_GAP","getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","getKeyboardAvoidingOffset","getInputDockKeyboardPadding","inputDockPaddingBottom","Math","min","getInputDockPaddingBottom","keyboardVisible","configuredPadding","hostOwnsLayout"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;AAOA,OAAO,MAAMA,sBAAsB,GAAG,EAAE;AACxC;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAG,CAAC;AAEtC,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCC,QAAQ;EACRC,gBAAgB,GAAG,CAAC;EACpBC,WAAW,GAAG;AACI,CAAC,KACnBD,gBAAgB,IAAID,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCF,gBAAgB,GAAG;AACyB,CAAC,KAAaA,gBAAgB;;AAE5E;AACA;AACA;AACA,OAAO,MAAMG,2BAA2B,GAAGA,CAAC;EAC1CJ,QAAQ;EACRK;AAIF,CAAC,KACCL,QAAQ,KAAK,KAAK,GACdM,IAAI,CAACC,GAAG,CAACF,sBAAsB,EAAEP,qBAAqB,CAAC,GACvDO,sBAAsB;AAc5B,OAAO,MAAMG,yBAAyB,GAAGA,CAAC;EACxCR,QAAQ;EACRE,WAAW,GAAG,CAAC;EACfO,eAAe,GAAG,KAAK;EACvBC,iBAAiB;EACjBC,cAAc,GAAG;AACG,CAAC,KAAa;EAClC,IAAI,OAAOD,iBAAiB,KAAK,QAAQ,EAAE;IACzC,OAAOA,iBAAiB;EAC1B;EACA,IAAIC,cAAc,EAAE;IAClB,OAAO,CAAC;EACV;EACA,OAAOX,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAGL,sBAAsB;AAClE,CAAC","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import { applyReactionToMessage, compareStanzaIds } from '../roomStore/roomsSlice';
4
+ export const extractReaction = (msg, fallbackRoomJID, archiveId) => {
5
+ const reactionsEl = msg?.getChild?.('reactions');
6
+ if (!reactionsEl) {
7
+ return null;
8
+ }
9
+ const messageId = reactionsEl.attrs?.id;
10
+ const from = String(reactionsEl.attrs?.from || '');
11
+ if (!messageId || !from.split('@')[0]) {
12
+ return null;
13
+ }
14
+ const emoji = (reactionsEl.getChildren?.('reaction') || []).map(reaction => reaction.text ? reaction.text() : '').filter(Boolean);
15
+ const data = msg.getChild?.('data')?.attrs || {};
16
+ const stanzaId = msg.getChild?.('stanza-id');
17
+ const roomJID = String(stanzaId?.attrs?.by || fallbackRoomJID || msg.attrs?.from || '').split('/')[0];
18
+ const rawTs = String(archiveId || stanzaId?.attrs?.id || '');
19
+ const ts = /^\d+$/.test(rawTs) ? rawTs : undefined;
20
+ return {
21
+ messageId,
22
+ from,
23
+ emoji,
24
+ data,
25
+ roomJID,
26
+ ...(ts ? {
27
+ ts
28
+ } : {})
29
+ };
30
+ };
31
+ export const applyMamReactions = (messages, reactions) => {
32
+ const byId = new Map();
33
+ for (const message of messages) {
34
+ if (message?.id) {
35
+ byId.set(String(message.id), message);
36
+ }
37
+ }
38
+ const deferred = [];
39
+ // Oldest first, so the newest state of each reactor wins.
40
+ const ordered = reactions.slice().sort((a, b) => a.ts && b.ts ? compareStanzaIds(a.ts, b.ts) : 0);
41
+ for (const reaction of ordered) {
42
+ const target = byId.get(String(reaction.messageId));
43
+ if (target) {
44
+ applyReactionToMessage(target, reaction.from, reaction.emoji, reaction.data, reaction.ts);
45
+ } else {
46
+ deferred.push(reaction);
47
+ }
48
+ }
49
+ return deferred;
50
+ };
51
+ //# sourceMappingURL=mamReactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["applyReactionToMessage","compareStanzaIds","extractReaction","msg","fallbackRoomJID","archiveId","reactionsEl","getChild","messageId","attrs","id","from","String","split","emoji","getChildren","map","reaction","text","filter","Boolean","data","stanzaId","roomJID","by","rawTs","ts","test","undefined","applyMamReactions","messages","reactions","byId","Map","message","set","deferred","ordered","slice","sort","a","b","target","get","push"],"sourceRoot":"../../../src","sources":["helpers/mamReactions.ts"],"mappings":";;AACA,SAASA,sBAAsB,EAAEC,gBAAgB,QAAQ,yBAAyB;AAYlF,OAAO,MAAMC,eAAe,GAAGA,CAC7BC,GAAQ,EACRC,eAAwB,EACxBC,SAAkB,KACW;EAC7B,MAAMC,WAAW,GAAGH,GAAG,EAAEI,QAAQ,GAAG,WAAW,CAAC;EAChD,IAAI,CAACD,WAAW,EAAE;IAAC,OAAO,IAAI;EAAC;EAC/B,MAAME,SAAS,GAAGF,WAAW,CAACG,KAAK,EAAEC,EAAE;EACvC,MAAMC,IAAI,GAAGC,MAAM,CAACN,WAAW,CAACG,KAAK,EAAEE,IAAI,IAAI,EAAE,CAAC;EAClD,IAAI,CAACH,SAAS,IAAI,CAACG,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EACpD,MAAMC,KAAe,GAAG,CAACR,WAAW,CAACS,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,EACjEC,GAAG,CAAEC,QAAa,IAAMA,QAAQ,CAACC,IAAI,GAAGD,QAAQ,CAACC,IAAI,CAAC,CAAC,GAAG,EAAG,CAAC,CAC9DC,MAAM,CAACC,OAAO,CAAC;EAClB,MAAMC,IAAI,GAAIlB,GAAG,CAACI,QAAQ,GAAG,MAAM,CAAC,EAAEE,KAAK,IAAI,CAAC,CAA4B;EAC5E,MAAMa,QAAQ,GAAGnB,GAAG,CAACI,QAAQ,GAAG,WAAW,CAAC;EAC5C,MAAMgB,OAAO,GAAGX,MAAM,CACpBU,QAAQ,EAAEb,KAAK,EAAEe,EAAE,IAAIpB,eAAe,IAAID,GAAG,CAACM,KAAK,EAAEE,IAAI,IAAI,EAC/D,CAAC,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACf,MAAMY,KAAK,GAAGb,MAAM,CAACP,SAAS,IAAIiB,QAAQ,EAAEb,KAAK,EAAEC,EAAE,IAAI,EAAE,CAAC;EAC5D,MAAMgB,EAAE,GAAG,OAAO,CAACC,IAAI,CAACF,KAAK,CAAC,GAAGA,KAAK,GAAGG,SAAS;EAClD,OAAO;IAAEpB,SAAS;IAAEG,IAAI;IAAEG,KAAK;IAAEO,IAAI;IAAEE,OAAO;IAAE,IAAIG,EAAE,GAAG;MAAEA;IAAG,CAAC,GAAG,CAAC,CAAC;EAAE,CAAC;AACzE,CAAC;AAED,OAAO,MAAMG,iBAAiB,GAAGA,CAC/BC,QAAoB,EACpBC,SAA8B,KACN;EACxB,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAmB,CAAC;EACxC,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9B,IAAII,OAAO,EAAExB,EAAE,EAAE;MAACsB,IAAI,CAACG,GAAG,CAACvB,MAAM,CAACsB,OAAO,CAACxB,EAAE,CAAC,EAAEwB,OAAO,CAAC;IAAC;EAC1D;EACA,MAAME,QAA6B,GAAG,EAAE;EACxC;EACA,MAAMC,OAAO,GAAGN,SAAS,CACtBO,KAAK,CAAC,CAAC,CACPC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACd,EAAE,IAAIe,CAAC,CAACf,EAAE,GAAGzB,gBAAgB,CAACuC,CAAC,CAACd,EAAE,EAAEe,CAAC,CAACf,EAAE,CAAC,GAAG,CAAE,CAAC;EACpE,KAAK,MAAMT,QAAQ,IAAIoB,OAAO,EAAE;IAC9B,MAAMK,MAAM,GAAGV,IAAI,CAACW,GAAG,CAAC/B,MAAM,CAACK,QAAQ,CAACT,SAAS,CAAC,CAAC;IACnD,IAAIkC,MAAM,EAAE;MACV1C,sBAAsB,CAAC0C,MAAM,EAAEzB,QAAQ,CAACN,IAAI,EAAEM,QAAQ,CAACH,KAAK,EAAEG,QAAQ,CAACI,IAAI,EAAEJ,QAAQ,CAACS,EAAE,CAAC;IAC3F,CAAC,MAAM;MACLU,QAAQ,CAACQ,IAAI,CAAC3B,QAAQ,CAAC;IACzB;EACF;EACA,OAAOmB,QAAQ;AACjB,CAAC","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ /** The parent a reply points at, read from its `mainMessage` JSON. */
4
+
5
+ const cache = new WeakMap();
6
+
7
+ /**
8
+ * Safe read of `message.mainMessage` (a JSON string on the wire). Null for
9
+ * a missing or malformed value — a bad payload must not crash a bubble.
10
+ * Cached per message object.
11
+ */
12
+ export const parseMessageReference = message => {
13
+ if (!message?.mainMessage) {
14
+ return null;
15
+ }
16
+ const cached = cache.get(message);
17
+ if (cached !== undefined) {
18
+ return cached;
19
+ }
20
+ let ref = null;
21
+ try {
22
+ const parsed = JSON.parse(message.mainMessage);
23
+ if (parsed && parsed.id != null) {
24
+ ref = {
25
+ id: String(parsed.id),
26
+ text: typeof parsed.text === 'string' ? parsed.text : '',
27
+ roomJid: typeof parsed.roomJid === 'string' ? parsed.roomJid : '',
28
+ userName: typeof parsed.userName === 'string' ? parsed.userName : undefined
29
+ };
30
+ }
31
+ } catch {
32
+ ref = null;
33
+ }
34
+ cache.set(message, ref);
35
+ return ref;
36
+ };
37
+ //# sourceMappingURL=parseMessageReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cache","WeakMap","parseMessageReference","message","mainMessage","cached","get","undefined","ref","parsed","JSON","parse","id","String","text","roomJid","userName","set"],"sourceRoot":"../../../src","sources":["helpers/parseMessageReference.ts"],"mappings":";;AAAA;;AAQA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAAkC,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAIC,OAElB,IAA8B;EAChD,IAAI,CAACA,OAAO,EAAEC,WAAW,EAAE;IAAC,OAAO,IAAI;EAAC;EACxC,MAAMC,MAAM,GAAGL,KAAK,CAACM,GAAG,CAACH,OAAO,CAAC;EACjC,IAAIE,MAAM,KAAKE,SAAS,EAAE;IAAC,OAAOF,MAAM;EAAC;EACzC,IAAIG,GAA4B,GAAG,IAAI;EACvC,IAAI;IACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACR,OAAO,CAACC,WAAW,CAAC;IAC9C,IAAIK,MAAM,IAAIA,MAAM,CAACG,EAAE,IAAI,IAAI,EAAE;MAC/BJ,GAAG,GAAG;QACJI,EAAE,EAAEC,MAAM,CAACJ,MAAM,CAACG,EAAE,CAAC;QACrBE,IAAI,EAAE,OAAOL,MAAM,CAACK,IAAI,KAAK,QAAQ,GAAGL,MAAM,CAACK,IAAI,GAAG,EAAE;QACxDC,OAAO,EAAE,OAAON,MAAM,CAACM,OAAO,KAAK,QAAQ,GAAGN,MAAM,CAACM,OAAO,GAAG,EAAE;QACjEC,QAAQ,EAAE,OAAOP,MAAM,CAACO,QAAQ,KAAK,QAAQ,GAAGP,MAAM,CAACO,QAAQ,GAAGT;MACpE,CAAC;IACH;EACF,CAAC,CAAC,MAAM;IACNC,GAAG,GAAG,IAAI;EACZ;EACAR,KAAK,CAACiB,GAAG,CAACd,OAAO,EAAEK,GAAG,CAAC;EACvB,OAAOA,GAAG;AACZ,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { DEFAULT_QUICK_REACTIONS } from './emoji';
4
+ export const reactionsEnabled = config => !config?.disableReactions && config?.reactions?.enabled !== false;
5
+ export const quickReactionIds = config => {
6
+ const ids = config?.reactions?.quickReactions;
7
+ return Array.isArray(ids) && ids.length ? ids.slice(0, 8) : DEFAULT_QUICK_REACTIONS;
8
+ };
9
+ export const reactionPickerEnabled = config => reactionsEnabled(config) && config?.reactions?.picker !== false;
10
+ //# sourceMappingURL=reactionsConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_QUICK_REACTIONS","reactionsEnabled","config","disableReactions","reactions","enabled","quickReactionIds","ids","quickReactions","Array","isArray","length","slice","reactionPickerEnabled","picker"],"sourceRoot":"../../../src","sources":["helpers/reactionsConfig.ts"],"mappings":";;AACA,SAASA,uBAAuB,QAAQ,SAAS;AAEjD,OAAO,MAAMC,gBAAgB,GAAIC,MAAuB,IACtD,CAACA,MAAM,EAAEC,gBAAgB,IAAID,MAAM,EAAEE,SAAS,EAAEC,OAAO,KAAK,KAAK;AAEnE,OAAO,MAAMC,gBAAgB,GAAIJ,MAAuB,IAAe;EACrE,MAAMK,GAAG,GAAGL,MAAM,EAAEE,SAAS,EAAEI,cAAc;EAC7C,OAAOC,KAAK,CAACC,OAAO,CAACH,GAAG,CAAC,IAAIA,GAAG,CAACI,MAAM,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGZ,uBAAuB;AACrF,CAAC;AAED,OAAO,MAAMa,qBAAqB,GAAIX,MAAuB,IAC3DD,gBAAgB,CAACC,MAAM,CAAC,IAAIA,MAAM,EAAEE,SAAS,EAAEU,MAAM,KAAK,KAAK","ignoreList":[]}
@@ -20,7 +20,18 @@ export const updateMessagesTillLast = async (rooms, client, batchSize = 5, maxFe
20
20
  const currentBatch = roomEntries.slice(processedIndex, processedIndex + batchSize);
21
21
  const lastTimestampsByJid = currentBatch.reduce((acc, current) => {
22
22
  const room = store.getState().rooms?.rooms?.[current];
23
- acc[current] = Number(room?.lastMessageTimestamp ?? 0) || 0;
23
+ const cached = Array.isArray(room?.messages) ? room.messages : [];
24
+ let newest = 0;
25
+ for (const m of cached) {
26
+ if (!m || m.pending || m.id === 'delimiter-new') {
27
+ continue;
28
+ }
29
+ const id = Number(m.id);
30
+ if (Number.isFinite(id) && id > newest) {
31
+ newest = id;
32
+ }
33
+ }
34
+ acc[current] = newest;
24
35
  return acc;
25
36
  }, {});
26
37
  await Promise.all(currentBatch.map(async (jid, index) => {
@@ -37,7 +48,11 @@ export const updateMessagesTillLast = async (rooms, client, batchSize = 5, maxFe
37
48
  }
38
49
  while (!isMessageFound && counter < maxFetchAttempts) {
39
50
  const lastMessageId = counter > 0 ? currentJidNewMessages[0]?.id : undefined;
40
- const fetchedMessages = await client.getHistoryStanza(jid, messagesPerFetch, Number(lastMessageId));
51
+ const fetchedMessages = await client.getHistoryStanza(jid, messagesPerFetch, Number(lastMessageId), undefined, {
52
+ coalesceRoom: true,
53
+ source: 'background',
54
+ selfApplied: true
55
+ });
41
56
  if (!fetchedMessages.length) {
42
57
  break;
43
58
  }
@@ -1 +1 @@
1
- {"version":3,"names":["store","setRoomMessages","checkUniqueUsers","updateMessagesTillLast","rooms","client","batchSize","maxFetchAttempts","messagesPerFetch","roomEntries","Object","keys","length","processedIndex","currentBatch","slice","lastTimestampsByJid","reduce","acc","current","room","getState","Number","lastMessageTimestamp","Promise","all","map","jid","index","res","setTimeout","counter","isMessageFound","currentJidNewMessages","lastCachedMessagesTimeStamp","lastMessageId","id","undefined","fetchedMessages","getHistoryStanza","some","message","dispatch","roomJID","messages","error","console","log"],"sourceRoot":"../../../src","sources":["helpers/updateMessagesTillLast.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["store","setRoomMessages","checkUniqueUsers","updateMessagesTillLast","rooms","client","batchSize","maxFetchAttempts","messagesPerFetch","roomEntries","Object","keys","length","processedIndex","currentBatch","slice","lastTimestampsByJid","reduce","acc","current","room","getState","cached","Array","isArray","messages","newest","m","pending","id","Number","isFinite","Promise","all","map","jid","index","res","setTimeout","counter","isMessageFound","currentJidNewMessages","lastCachedMessagesTimeStamp","lastMessageId","undefined","fetchedMessages","getHistoryStanza","coalesceRoom","source","selfApplied","some","message","dispatch","roomJID","error","console","log"],"sourceRoot":"../../../src","sources":["helpers/updateMessagesTillLast.tsx"],"mappings":"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","ignoreList":[]}
@@ -33,7 +33,9 @@ export const useHeapSender = client => {
33
33
  if (msg.langSource) {
34
34
  await client.sendTextMessageWithTranslateTagStanza(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, msg.showInChannel === 'true', msg.mainMessage || '', msg.langSource, msg.id);
35
35
  } else {
36
- await client.sendMessage(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, !!msg.showInChannel, msg.mainMessage, msg.id);
36
+ await client.sendMessage(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '',
37
+ // Wire values are strings: '"false"' is truthy.
38
+ String(msg.isReply) === 'true', String(msg.showInChannel) === 'true', msg.mainMessage, msg.id);
37
39
  }
38
40
  } catch (err) {
39
41
  console.warn('Failed to send heap message', msg, err);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useDispatch","useMessageHeapState","useHeapSender","client","dispatch","queue","sendingRef","inFlightRef","Map","sendHeapMessages","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","err","delete","prevReadyRef","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useDispatch","useMessageHeapState","useHeapSender","client","dispatch","queue","sendingRef","inFlightRef","Map","sendHeapMessages","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","String","err","delete","prevReadyRef","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ import { useMemo } from 'react';
3
4
  import { useSelector } from 'react-redux';
4
5
  export const useMessageHeapState = () => {
5
6
  const queue = useSelector(state => state.roomHeapSlice?.messageHeap);
6
7
  const failedMessages = useSelector(state => state.roomHeapSlice?.failedMessages);
7
- const idSet = new Set(queue?.map(m => m.id) ?? []);
8
- const failedIdSet = new Set(Object.keys(failedMessages || {}));
8
+ const idSet = useMemo(() => new Set(queue?.map(m => m.id) ?? []), [queue]);
9
+ const failedIdSet = useMemo(() => new Set(Object.keys(failedMessages || {})), [failedMessages]);
9
10
  return {
10
11
  queue,
11
12
  idSet,
@@ -1 +1 @@
1
- {"version":3,"names":["useSelector","useMessageHeapState","queue","state","roomHeapSlice","messageHeap","failedMessages","idSet","Set","map","m","id","failedIdSet","Object","keys"],"sourceRoot":"../../../src","sources":["hooks/useMessageHeapState.tsx"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAMC,KAAK,GAAGF,WAAW,CACtBG,KAAgB,IAAKA,KAAK,CAACC,aAAa,EAAEC,WAC7C,CAAC;EACD,MAAMC,cAAc,GAAGN,WAAW,CAC/BG,KAAgB,IAAKA,KAAK,CAACC,aAAa,EAAEE,cAC7C,CAAC;EACD,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAACN,KAAK,EAAEO,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,CAAC,IAAI,EAAE,CAAC;EACpD,MAAMC,WAAW,GAAG,IAAIJ,GAAG,CAACK,MAAM,CAACC,IAAI,CAACR,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC;EAE9D,OAAO;IAAEJ,KAAK;IAAEK,KAAK;IAAED,cAAc;IAAEM;EAAY,CAAC;AACtD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","useSelector","useMessageHeapState","queue","state","roomHeapSlice","messageHeap","failedMessages","idSet","Set","map","m","id","failedIdSet","Object","keys"],"sourceRoot":"../../../src","sources":["hooks/useMessageHeapState.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAMC,KAAK,GAAGF,WAAW,CACtBG,KAAgB,IAAKA,KAAK,CAACC,aAAa,EAAEC,WAC7C,CAAC;EACD,MAAMC,cAAc,GAAGN,WAAW,CAC/BG,KAAgB,IAAKA,KAAK,CAACC,aAAa,EAAEE,cAC7C,CAAC;EACD,MAAMC,KAAK,GAAGR,OAAO,CAAC,MAAM,IAAIS,GAAG,CAACN,KAAK,EAAEO,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAACT,KAAK,CAAC,CAAC;EAC5E,MAAMU,WAAW,GAAGb,OAAO,CACzB,MAAM,IAAIS,GAAG,CAACK,MAAM,CAACC,IAAI,CAACR,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,EAChD,CAACA,cAAc,CACjB,CAAC;EAED,OAAO;IAAEJ,KAAK;IAAEK,KAAK;IAAED,cAAc;IAAEM;EAAY,CAAC;AACtD,CAAC","ignoreList":[]}