@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.
- package/README.md +55 -0
- package/lib/commonjs/assets/emojiData.js +40 -0
- package/lib/commonjs/assets/emojiData.js.map +1 -0
- package/lib/commonjs/assets/icons.js +1 -1
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +12 -7
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +7 -9
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +47 -26
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +58 -21
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/KeyboardInputDock.js +40 -0
- package/lib/commonjs/components/MainComponents/KeyboardInputDock.js.map +1 -0
- package/lib/commonjs/components/MainComponents/MessageContainer.js +4 -12
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +110 -35
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +32 -29
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomStack.js +270 -0
- package/lib/commonjs/components/MainComponents/RoomStack.js.map +1 -0
- package/lib/commonjs/components/MainComponents/SystemMessage.js +6 -2
- package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/Avatar.js +5 -1
- package/lib/commonjs/components/MessageBubble/Avatar.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +17 -21
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js +447 -0
- package/lib/commonjs/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
- package/lib/commonjs/components/MessageBubble/Message.js +200 -132
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +213 -12
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageReaction.js +113 -94
- package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageReply.js +66 -24
- package/lib/commonjs/components/MessageBubble/MessageReply.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +6 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +24 -0
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js +178 -0
- package/lib/commonjs/components/Modals/Modal/SwipeBackLayer.js.map +1 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +28 -10
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +9 -3
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +5 -4
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
- package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
- package/lib/commonjs/components/Thread/ThreadWrapper.js +265 -152
- package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +6 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/context/MessageNotificationContext.js +188 -9
- package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +22 -7
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createRoomFromApi.js +36 -2
- package/lib/commonjs/helpers/createRoomFromApi.js.map +1 -1
- package/lib/commonjs/helpers/emoji.js +51 -0
- package/lib/commonjs/helpers/emoji.js.map +1 -0
- package/lib/commonjs/helpers/haptics.js +29 -0
- package/lib/commonjs/helpers/haptics.js.map +1 -0
- package/lib/commonjs/helpers/historyPreloadScheduler.js +32 -66
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +21 -12
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/keyboardLayout.js +23 -1
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
- package/lib/commonjs/helpers/mamReactions.js +57 -0
- package/lib/commonjs/helpers/mamReactions.js.map +1 -0
- package/lib/commonjs/helpers/parseMessageReference.js +42 -0
- package/lib/commonjs/helpers/parseMessageReference.js.map +1 -0
- package/lib/commonjs/helpers/reactionsConfig.js +17 -0
- package/lib/commonjs/helpers/reactionsConfig.js.map +1 -0
- package/lib/commonjs/helpers/updateMessagesTillLast.js +17 -2
- package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
- package/lib/commonjs/hooks/useHeapSender.js +3 -1
- package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
- package/lib/commonjs/hooks/useMessageHeapState.js +3 -2
- package/lib/commonjs/hooks/useMessageHeapState.js.map +1 -1
- package/lib/commonjs/hooks/useRoomInitialization.js +16 -7
- package/lib/commonjs/hooks/useRoomInitialization.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +14 -8
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +106 -50
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/getHistory.xmpp.js +29 -74
- package/lib/commonjs/networking/xmpp/getHistory.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +4 -0
- package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/mamRouter.js +186 -0
- package/lib/commonjs/networking/xmpp/mamRouter.js.map +1 -0
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +41 -4
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +98 -23
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js +29 -34
- package/lib/commonjs/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
- package/lib/commonjs/roomStore/Middleware/perfMiddleware.js +51 -0
- package/lib/commonjs/roomStore/Middleware/perfMiddleware.js.map +1 -0
- package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js +66 -43
- package/lib/commonjs/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +88 -68
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +18 -14
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistBackend.js +96 -0
- package/lib/commonjs/roomStore/persistBackend.js.map +1 -0
- package/lib/commonjs/roomStore/persistence.js +245 -50
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +282 -136
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/theme/theme.js +3 -0
- package/lib/commonjs/theme/theme.js.map +1 -1
- package/lib/commonjs/utils/devLogger.js +14 -0
- package/lib/commonjs/utils/devLogger.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/assets/emojiData.js +36 -0
- package/lib/module/assets/emojiData.js.map +1 -0
- package/lib/module/assets/icons.js +1 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +12 -7
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +8 -10
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +49 -28
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +60 -23
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/KeyboardInputDock.js +33 -0
- package/lib/module/components/MainComponents/KeyboardInputDock.js.map +1 -0
- package/lib/module/components/MainComponents/MessageContainer.js +7 -14
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +110 -35
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +32 -29
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/MainComponents/RoomStack.js +266 -0
- package/lib/module/components/MainComponents/RoomStack.js.map +1 -0
- package/lib/module/components/MainComponents/SystemMessage.js +6 -2
- package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/module/components/MessageBubble/Avatar.js +5 -1
- package/lib/module/components/MessageBubble/Avatar.js.map +1 -1
- package/lib/module/components/MessageBubble/BottomReplyContainer.js +18 -22
- package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/module/components/MessageBubble/EmojiPickerSheet.js +438 -0
- package/lib/module/components/MessageBubble/EmojiPickerSheet.js.map +1 -0
- package/lib/module/components/MessageBubble/Message.js +203 -134
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +215 -14
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageReaction.js +115 -94
- package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageReply.js +65 -24
- package/lib/module/components/MessageBubble/MessageReply.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +6 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +25 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/Modal/SwipeBackLayer.js +172 -0
- package/lib/module/components/Modals/Modal/SwipeBackLayer.js.map +1 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +29 -11
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +10 -4
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +5 -4
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js +8 -9
- package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
- package/lib/module/components/Thread/ThreadWrapper.js +264 -152
- package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +6 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/context/MessageNotificationContext.js +190 -11
- package/lib/module/context/MessageNotificationContext.js.map +1 -1
- package/lib/module/context/xmppProvider.js +22 -7
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createRoomFromApi.js +36 -2
- package/lib/module/helpers/createRoomFromApi.js.map +1 -1
- package/lib/module/helpers/emoji.js +44 -0
- package/lib/module/helpers/emoji.js.map +1 -0
- package/lib/module/helpers/haptics.js +24 -0
- package/lib/module/helpers/haptics.js.map +1 -0
- package/lib/module/helpers/historyPreloadScheduler.js +32 -66
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +21 -12
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/keyboardLayout.js +20 -0
- package/lib/module/helpers/keyboardLayout.js.map +1 -1
- package/lib/module/helpers/mamReactions.js +51 -0
- package/lib/module/helpers/mamReactions.js.map +1 -0
- package/lib/module/helpers/parseMessageReference.js +37 -0
- package/lib/module/helpers/parseMessageReference.js.map +1 -0
- package/lib/module/helpers/reactionsConfig.js +10 -0
- package/lib/module/helpers/reactionsConfig.js.map +1 -0
- package/lib/module/helpers/updateMessagesTillLast.js +17 -2
- package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
- package/lib/module/hooks/useHeapSender.js +3 -1
- package/lib/module/hooks/useHeapSender.js.map +1 -1
- package/lib/module/hooks/useMessageHeapState.js +3 -2
- package/lib/module/hooks/useMessageHeapState.js.map +1 -1
- package/lib/module/hooks/useRoomInitialization.js +17 -8
- package/lib/module/hooks/useRoomInitialization.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +14 -8
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +107 -51
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/getHistory.xmpp.js +29 -74
- package/lib/module/networking/xmpp/getHistory.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/handleStanzas.xmpp.js +4 -0
- package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/mamRouter.js +175 -0
- package/lib/module/networking/xmpp/mamRouter.js.map +1 -0
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +38 -2
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +99 -24
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/Middleware/newMessageMidlleware.js +29 -34
- package/lib/module/roomStore/Middleware/newMessageMidlleware.js.map +1 -1
- package/lib/module/roomStore/Middleware/perfMiddleware.js +45 -0
- package/lib/module/roomStore/Middleware/perfMiddleware.js.map +1 -0
- package/lib/module/roomStore/Middleware/reactionsMiddleware.js +66 -43
- package/lib/module/roomStore/Middleware/reactionsMiddleware.js.map +1 -1
- package/lib/module/roomStore/Middleware/unreadMidlleware.js +89 -69
- package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/module/roomStore/index.js +19 -15
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistBackend.js +89 -0
- package/lib/module/roomStore/persistBackend.js.map +1 -0
- package/lib/module/roomStore/persistence.js +245 -48
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +275 -134
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/theme/theme.js +3 -0
- package/lib/module/theme/theme.js.map +1 -1
- package/lib/module/utils/devLogger.js +13 -0
- package/lib/module/utils/devLogger.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/assets/emojiData.d.ts +8 -0
- package/lib/typescript/assets/emojiData.d.ts.map +1 -0
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/KeyboardInputDock.d.ts +16 -0
- package/lib/typescript/components/MainComponents/KeyboardInputDock.d.ts.map +1 -0
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts +2 -2
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomStack.d.ts +42 -0
- package/lib/typescript/components/MainComponents/RoomStack.d.ts.map +1 -0
- package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/Avatar.d.ts +2 -0
- package/lib/typescript/components/MessageBubble/Avatar.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts +11 -0
- package/lib/typescript/components/MessageBubble/EmojiPickerSheet.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble/Message.d.ts +2 -2
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +2 -0
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageReaction.d.ts +1 -0
- package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageReply.d.ts +7 -7
- package/lib/typescript/components/MessageBubble/MessageReply.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts +16 -0
- package/lib/typescript/components/Modals/Modal/SwipeBackLayer.d.ts.map +1 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts +2 -2
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts +3 -6
- package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts.map +1 -1
- package/lib/typescript/components/Thread/ThreadWrapper.d.ts +7 -1
- package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts +1 -0
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/createRoomFromApi.d.ts.map +1 -1
- package/lib/typescript/helpers/emoji.d.ts +6 -0
- package/lib/typescript/helpers/emoji.d.ts.map +1 -0
- package/lib/typescript/helpers/haptics.d.ts +3 -0
- package/lib/typescript/helpers/haptics.d.ts.map +1 -0
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts +1 -0
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/keyboardLayout.d.ts +6 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
- package/lib/typescript/helpers/mamReactions.d.ts +13 -0
- package/lib/typescript/helpers/mamReactions.d.ts.map +1 -0
- package/lib/typescript/helpers/parseMessageReference.d.ts +16 -0
- package/lib/typescript/helpers/parseMessageReference.d.ts.map +1 -0
- package/lib/typescript/helpers/reactionsConfig.d.ts +5 -0
- package/lib/typescript/helpers/reactionsConfig.d.ts.map +1 -0
- package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
- package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
- package/lib/typescript/hooks/useMessageHeapState.d.ts.map +1 -1
- package/lib/typescript/hooks/useRoomInitialization.d.ts +2 -2
- package/lib/typescript/hooks/useRoomInitialization.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts +4 -2
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts +3 -1
- package/lib/typescript/networking/xmpp/getHistory.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/mamRouter.d.ts +23 -0
- package/lib/typescript/networking/xmpp/mamRouter.d.ts.map +1 -0
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts +1 -0
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +22 -1
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/Middleware/newMessageMidlleware.d.ts.map +1 -1
- package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts +4 -0
- package/lib/typescript/roomStore/Middleware/perfMiddleware.d.ts.map +1 -0
- package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts +9 -0
- package/lib/typescript/roomStore/Middleware/reactionsMiddleware.d.ts.map +1 -1
- package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistBackend.d.ts +11 -0
- package/lib/typescript/roomStore/persistBackend.d.ts.map +1 -0
- package/lib/typescript/roomStore/persistence.d.ts +5 -6
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +41 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/theme/theme.d.ts +4 -1
- package/lib/typescript/theme/theme.d.ts.map +1 -1
- package/lib/typescript/types/models/message.model.d.ts +4 -0
- package/lib/typescript/types/models/message.model.d.ts.map +1 -1
- package/lib/typescript/types/models/room.model.d.ts +16 -0
- package/lib/typescript/types/models/room.model.d.ts.map +1 -1
- package/lib/typescript/types/models/xmpp.model.d.ts +6 -1
- package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +15 -3
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/devLogger.d.ts +8 -0
- package/lib/typescript/utils/devLogger.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +10 -1
- package/src/assets/emojiData.ts +2146 -0
- package/src/assets/icons.tsx +5 -5
- package/src/components/Header/HeaderRoomList.tsx +7 -5
- package/src/components/MainComponents/ChatHeader.tsx +16 -7
- package/src/components/MainComponents/ChatRoom.tsx +64 -32
- package/src/components/MainComponents/ChatWrapper.tsx +73 -21
- package/src/components/MainComponents/KeyboardInputDock.tsx +47 -0
- package/src/components/MainComponents/MessageContainer.tsx +7 -15
- package/src/components/MainComponents/MessageList.tsx +96 -43
- package/src/components/MainComponents/RoomList.tsx +28 -29
- package/src/components/MainComponents/RoomStack.tsx +309 -0
- package/src/components/MainComponents/SystemMessage.tsx +6 -2
- package/src/components/MessageBubble/Avatar.tsx +7 -1
- package/src/components/MessageBubble/BottomReplyContainer.tsx +19 -21
- package/src/components/MessageBubble/EmojiPickerSheet.tsx +468 -0
- package/src/components/MessageBubble/Message.tsx +146 -87
- package/src/components/MessageBubble/MessageInteractions.tsx +213 -12
- package/src/components/MessageBubble/MessageReaction.tsx +120 -96
- package/src/components/MessageBubble/MessageReply.tsx +65 -32
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +4 -0
- package/src/components/Modals/Modal/Modal.tsx +32 -1
- package/src/components/Modals/Modal/SwipeBackLayer.tsx +221 -0
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +29 -8
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +6 -3
- package/src/components/RoomComponents/ChatRoomItem.tsx +11 -4
- package/src/components/RoomComponents/styled/LastMessageEmoji.tsx +7 -8
- package/src/components/Thread/ThreadWrapper.tsx +274 -198
- package/src/components/styled/DateLabel.tsx +7 -3
- package/src/context/MessageNotificationContext.tsx +205 -7
- package/src/context/xmppProvider.tsx +29 -9
- package/src/helpers/createRoomFromApi.tsx +37 -1
- package/src/helpers/emoji.ts +39 -0
- package/src/helpers/haptics.ts +19 -0
- package/src/helpers/historyPreloadScheduler.ts +37 -69
- package/src/helpers/insertMessageWithDelimiter.ts +23 -16
- package/src/helpers/keyboardLayout.ts +26 -0
- package/src/helpers/mamReactions.ts +59 -0
- package/src/helpers/parseMessageReference.ts +38 -0
- package/src/helpers/reactionsConfig.ts +13 -0
- package/src/helpers/updateMessagesTillLast.tsx +14 -2
- package/src/hooks/useHeapSender.tsx +3 -2
- package/src/hooks/useMessageHeapState.tsx +6 -2
- package/src/hooks/useRoomInitialization.tsx +32 -15
- package/src/hooks/useSendMessage.tsx +18 -11
- package/src/hooks/useUnreadMessagesCounter.ts +1 -1
- package/src/networking/stanzaHandlers.ts +116 -60
- package/src/networking/xmpp/getHistory.xmpp.ts +44 -106
- package/src/networking/xmpp/handleStanzas.xmpp.ts +2 -0
- package/src/networking/xmpp/mamRouter.ts +176 -0
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +46 -3
- package/src/networking/xmppClient.ts +105 -20
- package/src/roomStore/Middleware/newMessageMidlleware.tsx +35 -38
- package/src/roomStore/Middleware/perfMiddleware.ts +50 -0
- package/src/roomStore/Middleware/reactionsMiddleware.tsx +53 -52
- package/src/roomStore/Middleware/unreadMidlleware.tsx +92 -80
- package/src/roomStore/index.ts +28 -27
- package/src/roomStore/persistBackend.ts +96 -0
- package/src/roomStore/persistence.ts +280 -73
- package/src/roomStore/roomsSlice.ts +304 -155
- package/src/theme/theme.ts +10 -1
- package/src/types/models/message.model.ts +4 -0
- package/src/types/models/room.model.ts +17 -0
- package/src/types/models/xmpp.model.ts +4 -2
- package/src/types/types.ts +15 -3
- package/src/utils/devLogger.ts +16 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.searchEmojis = exports.getEmojiNativeById = exports.getEmojiIdByNative = exports.DEFAULT_QUICK_REACTIONS = void 0;
|
|
7
|
+
var _emojiData = require("../assets/emojiData");
|
|
8
|
+
let byId = null;
|
|
9
|
+
const index = () => {
|
|
10
|
+
if (!byId) {
|
|
11
|
+
byId = new Map();
|
|
12
|
+
for (const category of _emojiData.EMOJI_CATEGORIES) {
|
|
13
|
+
for (const entry of category.emojis) {
|
|
14
|
+
byId.set(entry[0], entry);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return byId;
|
|
19
|
+
};
|
|
20
|
+
const getEmojiNativeById = id => index().get(id)?.[1] ?? id;
|
|
21
|
+
exports.getEmojiNativeById = getEmojiNativeById;
|
|
22
|
+
const getEmojiIdByNative = native => {
|
|
23
|
+
for (const [id, entry] of index()) {
|
|
24
|
+
if (entry[1] === native) {
|
|
25
|
+
return id;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
};
|
|
30
|
+
exports.getEmojiIdByNative = getEmojiIdByNative;
|
|
31
|
+
const DEFAULT_QUICK_REACTIONS = exports.DEFAULT_QUICK_REACTIONS = ['+1', 'heart', 'joy', 'open_mouth', 'cry', 'pray'];
|
|
32
|
+
const searchEmojis = (query, limit = 60) => {
|
|
33
|
+
const q = query.trim().toLowerCase();
|
|
34
|
+
if (!q) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
const out = [];
|
|
38
|
+
for (const category of _emojiData.EMOJI_CATEGORIES) {
|
|
39
|
+
for (const entry of category.emojis) {
|
|
40
|
+
if (entry[0].includes(q) || entry[2].includes(q)) {
|
|
41
|
+
out.push(entry);
|
|
42
|
+
if (out.length >= limit) {
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
};
|
|
50
|
+
exports.searchEmojis = searchEmojis;
|
|
51
|
+
//# sourceMappingURL=emoji.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_emojiData","require","byId","index","Map","category","EMOJI_CATEGORIES","entry","emojis","set","getEmojiNativeById","id","get","exports","getEmojiIdByNative","native","undefined","DEFAULT_QUICK_REACTIONS","searchEmojis","query","limit","q","trim","toLowerCase","out","includes","push","length"],"sourceRoot":"../../../src","sources":["helpers/emoji.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAIC,IAAoC,GAAG,IAAI;AAC/C,MAAMC,KAAK,GAAGA,CAAA,KAA+B;EAC3C,IAAI,CAACD,IAAI,EAAE;IACTA,IAAI,GAAG,IAAIE,GAAG,CAAC,CAAC;IAChB,KAAK,MAAMC,QAAQ,IAAIC,2BAAgB,EAAE;MACvC,KAAK,MAAMC,KAAK,IAAIF,QAAQ,CAACG,MAAM,EAAE;QAACN,IAAI,CAACO,GAAG,CAACF,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC;MAAC;IAClE;EACF;EACA,OAAOL,IAAI;AACb,CAAC;AAEM,MAAMQ,kBAAkB,GAAIC,EAAU,IAC3CR,KAAK,CAAC,CAAC,CAACS,GAAG,CAACD,EAAE,CAAC,GAAG,CAAC,CAAC,IAAIA,EAAE;AAACE,OAAA,CAAAH,kBAAA,GAAAA,kBAAA;AAEtB,MAAMI,kBAAkB,GAAIC,MAAc,IAAyB;EACxE,KAAK,MAAM,CAACJ,EAAE,EAAEJ,KAAK,CAAC,IAAIJ,KAAK,CAAC,CAAC,EAAE;IACjC,IAAII,KAAK,CAAC,CAAC,CAAC,KAAKQ,MAAM,EAAE;MAAC,OAAOJ,EAAE;IAAC;EACtC;EACA,OAAOK,SAAS;AAClB,CAAC;AAACH,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAEK,MAAMG,uBAAuB,GAAAJ,OAAA,CAAAI,uBAAA,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC;AAEnF,MAAMC,YAAY,GAAGA,CAACC,KAAa,EAAEC,KAAK,GAAG,EAAE,KAAmB;EACvE,MAAMC,CAAC,GAAGF,KAAK,CAACG,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EACpC,IAAI,CAACF,CAAC,EAAE;IAAC,OAAO,EAAE;EAAC;EACnB,MAAMG,GAAiB,GAAG,EAAE;EAC5B,KAAK,MAAMnB,QAAQ,IAAIC,2BAAgB,EAAE;IACvC,KAAK,MAAMC,KAAK,IAAIF,QAAQ,CAACG,MAAM,EAAE;MACnC,IAAID,KAAK,CAAC,CAAC,CAAC,CAACkB,QAAQ,CAACJ,CAAC,CAAC,IAAId,KAAK,CAAC,CAAC,CAAC,CAACkB,QAAQ,CAACJ,CAAC,CAAC,EAAE;QAChDG,GAAG,CAACE,IAAI,CAACnB,KAAK,CAAC;QACf,IAAIiB,GAAG,CAACG,MAAM,IAAIP,KAAK,EAAE;UAAC,OAAOI,GAAG;QAAC;MACvC;IACF;EACF;EACA,OAAOA,GAAG;AACZ,CAAC;AAACX,OAAA,CAAAK,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hapticTap = void 0;
|
|
7
|
+
// expo-haptics is an OPTIONAL peer, probed the same way as expo-blur: the JS
|
|
8
|
+
// package alone is not enough, the native module has to be in the binary,
|
|
9
|
+
// otherwise the call throws. Without it the gesture simply has no feedback.
|
|
10
|
+
let Haptics = null;
|
|
11
|
+
try {
|
|
12
|
+
const {
|
|
13
|
+
requireNativeModule
|
|
14
|
+
} = require('expo-modules-core');
|
|
15
|
+
requireNativeModule('ExpoHaptics');
|
|
16
|
+
Haptics = require('expo-haptics');
|
|
17
|
+
} catch {
|
|
18
|
+
Haptics = null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Short tap, the messenger "I got your long-press" feedback. Never throws. */
|
|
22
|
+
const hapticTap = () => {
|
|
23
|
+
if (!Haptics) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
Haptics.impactAsync?.(Haptics.ImpactFeedbackStyle?.Medium).catch?.(() => {});
|
|
27
|
+
};
|
|
28
|
+
exports.hapticTap = hapticTap;
|
|
29
|
+
//# sourceMappingURL=haptics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Haptics","requireNativeModule","require","hapticTap","impactAsync","ImpactFeedbackStyle","Medium","catch","exports"],"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;AACO,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;AAACC,OAAA,CAAAL,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -8,18 +8,10 @@ var _reactNative = require("react-native");
|
|
|
8
8
|
var _roomStore = require("../roomStore");
|
|
9
9
|
var _roomsSlice = require("../roomStore/roomsSlice");
|
|
10
10
|
const DEFAULT_CONCURRENCY = 3;
|
|
11
|
-
|
|
12
|
-
// also means more id-overlap with cache, so the merge in
|
|
13
|
-
// `mergeHistoryIntoCache` rarely has to fall back to clear-and-replace.
|
|
14
|
-
const DEFAULT_PAGE_SIZE = 20;
|
|
11
|
+
const DEFAULT_PAGE_SIZE = 10;
|
|
15
12
|
const DEFAULT_RETRY_LIMIT = 2;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// than `pageSize` — `useUnread()` only ever sees what's been loaded. Page
|
|
19
|
-
// further back, up to this many extra fetches, until we either find the
|
|
20
|
-
// boundary or give up (`unreadCapped` then stays true so callers at least
|
|
21
|
-
// know the count is a floor, not exact). Customer-reported #34.
|
|
22
|
-
const MAX_UNREAD_CATCHUP_PAGES = 8;
|
|
13
|
+
const DEFAULT_FIRST_WAVE = 30;
|
|
14
|
+
const BACKGROUND_BATCH_PAUSE_MS = 400;
|
|
23
15
|
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
24
16
|
const messageTimestamp = m => {
|
|
25
17
|
if (!m) {
|
|
@@ -36,10 +28,10 @@ const messageTimestamp = m => {
|
|
|
36
28
|
return 0;
|
|
37
29
|
};
|
|
38
30
|
const getRoomLastActivityScore = room => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return
|
|
31
|
+
const fromMessages = room?.messages?.length ? room.messages.reduce((max, m) => Math.max(max, messageTimestamp(m)), 0) : 0;
|
|
32
|
+
const fromStamp = Number(room?.lastMessageTimestamp) || 0;
|
|
33
|
+
const fromSeed = Number(room?.lastMessage?.id) || 0;
|
|
34
|
+
return Math.max(fromMessages, fromStamp, fromSeed);
|
|
43
35
|
};
|
|
44
36
|
const computeUnreadCapped = (room, messages, pageSize) => {
|
|
45
37
|
if (!room) {
|
|
@@ -56,8 +48,11 @@ const computeUnreadCapped = (room, messages, pageSize) => {
|
|
|
56
48
|
return false;
|
|
57
49
|
}
|
|
58
50
|
const lastViewed = Number(room.lastViewedTimestamp) || 0;
|
|
51
|
+
// No read marker yet (the private-store markers often land after the
|
|
52
|
+
// first preload page): the count is unknown, not "more than a page".
|
|
53
|
+
// Claiming capped here showed "10+" on rooms with a single unread.
|
|
59
54
|
if (lastViewed <= 0) {
|
|
60
|
-
return
|
|
55
|
+
return false;
|
|
61
56
|
}
|
|
62
57
|
const oldestTs = countable.reduce((minTs, m) => {
|
|
63
58
|
const ts = messageTimestamp(m);
|
|
@@ -98,6 +93,7 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
98
93
|
pageSize = DEFAULT_PAGE_SIZE,
|
|
99
94
|
retryLimit = DEFAULT_RETRY_LIMIT,
|
|
100
95
|
roomLimit,
|
|
96
|
+
firstWave = DEFAULT_FIRST_WAVE,
|
|
101
97
|
selectedRoomJid = null,
|
|
102
98
|
defaultRoomJids = [],
|
|
103
99
|
forceReload = false
|
|
@@ -105,6 +101,13 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
105
101
|
if (signal?.aborted) {
|
|
106
102
|
return;
|
|
107
103
|
}
|
|
104
|
+
const startedAt = Date.now();
|
|
105
|
+
let firstWaveLogged = false;
|
|
106
|
+
const devLog = msg => {
|
|
107
|
+
if (typeof __DEV__ !== 'undefined' && __DEV__) {
|
|
108
|
+
console.log(msg);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
108
111
|
_roomStore.store.dispatch((0, _roomsSlice.setUnreadSyncing)(true));
|
|
109
112
|
try {
|
|
110
113
|
const state = _roomStore.store.getState();
|
|
@@ -128,6 +131,8 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
128
131
|
const queue = roomLimit && roomLimit > 0 ? sortedQueue.slice(0, roomLimit) : sortedQueue;
|
|
129
132
|
const inFlightByRoom = new Map();
|
|
130
133
|
let consecutiveErrorCount = 0;
|
|
134
|
+
let started = 0;
|
|
135
|
+
devLog(`[preload] ${queue.length} rooms queued, first wave ${Math.min(firstWave, queue.length)}, page ${pageSize}`);
|
|
131
136
|
while (queue.length > 0) {
|
|
132
137
|
if (signal?.aborted) {
|
|
133
138
|
return;
|
|
@@ -147,6 +152,12 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
147
152
|
continue;
|
|
148
153
|
}
|
|
149
154
|
const batch = readyItems.slice(0, Math.max(1, concurrency));
|
|
155
|
+
const inBackgroundWave = started >= firstWave;
|
|
156
|
+
if (inBackgroundWave && !firstWaveLogged) {
|
|
157
|
+
firstWaveLogged = true;
|
|
158
|
+
devLog(`[preload] first wave done in ${Date.now() - startedAt}ms`);
|
|
159
|
+
}
|
|
160
|
+
started += batch.length;
|
|
150
161
|
|
|
151
162
|
// Snapshot each room's historyPreloadState BEFORE marking the
|
|
152
163
|
// batch as 'loading'. Without this snapshot the per-task
|
|
@@ -182,7 +193,8 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
182
193
|
const fetchedMessages = await client.getHistoryStanza(item.jid, pageSize, undefined, undefined, {
|
|
183
194
|
coalesceRoom: true,
|
|
184
195
|
skipIfPreloaded: !forceReload,
|
|
185
|
-
source: 'background'
|
|
196
|
+
source: 'background',
|
|
197
|
+
selfApplied: true
|
|
186
198
|
});
|
|
187
199
|
if (signal?.aborted) {
|
|
188
200
|
return;
|
|
@@ -191,52 +203,7 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
191
203
|
throw new Error('history_timeout');
|
|
192
204
|
}
|
|
193
205
|
const nextRoom = _roomStore.store.getState().rooms.rooms[item.jid];
|
|
194
|
-
|
|
195
|
-
const lastViewed = Number(nextRoom?.lastViewedTimestamp) || 0;
|
|
196
|
-
|
|
197
|
-
// The first page was entirely unread — keep paging older until
|
|
198
|
-
// we find a message at/before `lastViewedTimestamp` (the true
|
|
199
|
-
// boundary) or run out of catch-up budget, so the count isn't
|
|
200
|
-
// silently truncated at `pageSize`.
|
|
201
|
-
if (lastViewed > 0 && computeUnreadCapped(nextRoom, combined, pageSize)) {
|
|
202
|
-
let lastPageLen = combined.length;
|
|
203
|
-
let extraPages = 0;
|
|
204
|
-
while (extraPages < MAX_UNREAD_CATCHUP_PAGES && lastPageLen >= pageSize && !signal?.aborted) {
|
|
205
|
-
const oldestId = combined.reduce((min, m) => {
|
|
206
|
-
const idNum = Number(m?.id);
|
|
207
|
-
if (!Number.isFinite(idNum)) {
|
|
208
|
-
return min;
|
|
209
|
-
}
|
|
210
|
-
return min === null || idNum < min ? idNum : min;
|
|
211
|
-
}, null);
|
|
212
|
-
if (oldestId === null) {
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
let older;
|
|
216
|
-
try {
|
|
217
|
-
older = await client.getHistoryStanza(item.jid, pageSize, oldestId, undefined, {
|
|
218
|
-
coalesceRoom: true,
|
|
219
|
-
skipIfPreloaded: !forceReload,
|
|
220
|
-
source: 'background'
|
|
221
|
-
});
|
|
222
|
-
} catch {
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
if (!older || !older.length) {
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
combined = [...older, ...combined];
|
|
229
|
-
lastPageLen = older.length;
|
|
230
|
-
extraPages++;
|
|
231
|
-
const oldestTs = combined.reduce((minTs, m) => {
|
|
232
|
-
const ts = messageTimestamp(m);
|
|
233
|
-
return ts > 0 ? Math.min(minTs, ts) : minTs;
|
|
234
|
-
}, Number.MAX_SAFE_INTEGER);
|
|
235
|
-
if (oldestTs !== Number.MAX_SAFE_INTEGER && oldestTs <= lastViewed) {
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
206
|
+
const combined = fetchedMessages || [];
|
|
240
207
|
|
|
241
208
|
// `mergeHistoryIntoCache` (roomsSlice) caps whatever we dispatch
|
|
242
209
|
// here to the newest RUNTIME_MESSAGE_LIMIT messages before it
|
|
@@ -286,11 +253,10 @@ const runHistoryPreloadScheduler = async options => {
|
|
|
286
253
|
inFlightByRoom.set(item.jid, task);
|
|
287
254
|
await task.finally(() => inFlightByRoom.delete(item.jid));
|
|
288
255
|
}));
|
|
289
|
-
|
|
290
|
-
// Yield to JS event loop (no requestIdleCallback in RN).
|
|
291
|
-
await new Promise(r => setTimeout(r, 0));
|
|
256
|
+
await sleep(inBackgroundWave ? BACKGROUND_BATCH_PAUSE_MS : 0);
|
|
292
257
|
}
|
|
293
258
|
} finally {
|
|
259
|
+
devLog(`[preload] finished in ${Date.now() - startedAt}ms`);
|
|
294
260
|
_roomStore.store.dispatch((0, _roomsSlice.setUnreadSyncing)(false));
|
|
295
261
|
}
|
|
296
262
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_roomStore","_roomsSlice","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","AppState","currentState","runHistoryPreloadScheduler","options","client","signal","concurrency","retryLimit","roomLimit","forceReload","aborted","store","dispatch","setUnreadSyncing","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","applyRoomsPreloadBatch","all","queueIndex","findIndex","queued","splice","task","currentRoom","preState","get","fetchedMessages","getHistoryStanza","undefined","coalesceRoom","skipIfPreloaded","source","Error","nextRoom","combined","lastPageLen","extraPages","oldestId","idNum","older","simulatedStored","RUNTIME_MESSAGE_LIMIT","unreadCapped","retries","canRetry","jitter","floor","random","backoff","push","set","finally","delete","r","exports","_default","default"],"sourceRoot":"../../../src","sources":["helpers/historyPreloadScheduler.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_roomStore","_roomsSlice","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","AppState","currentState","runHistoryPreloadScheduler","options","client","signal","concurrency","retryLimit","roomLimit","firstWave","forceReload","aborted","startedAt","Date","now","firstWaveLogged","devLog","__DEV__","console","log","store","dispatch","setUnreadSyncing","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","applyRoomsPreloadBatch","all","queueIndex","findIndex","queued","splice","task","currentRoom","preState","get","fetchedMessages","getHistoryStanza","undefined","coalesceRoom","skipIfPreloaded","source","selfApplied","Error","nextRoom","combined","simulatedStored","RUNTIME_MESSAGE_LIMIT","unreadCapped","retries","canRetry","jitter","floor","random","backoff","push","set","finally","delete","exports","_default","default"],"sourceRoot":"../../../src","sources":["helpers/historyPreloadScheduler.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.insertMessageWithDelimiter = insertMessageWithDelimiter;
|
|
7
|
-
var _dateComparison = require("./dateComparison");
|
|
8
7
|
var _msgSortableMs = require("./msgSortableMs");
|
|
9
8
|
// Robustly resolve a caller-supplied read marker to epoch milliseconds.
|
|
10
9
|
// Callers pass a plain number (the redux read boundary, or a room's
|
|
@@ -83,16 +82,26 @@ function insertMessageWithDelimiter(roomMessages, message, lastViewedTimestamp)
|
|
|
83
82
|
roomMessages[existingIndex] = merged;
|
|
84
83
|
return;
|
|
85
84
|
}
|
|
86
|
-
const newMessageDate = message.date;
|
|
87
85
|
const lastMessage = roomMessages[roomMessages.length - 1];
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
// Ordered by the id-encoded server timestamp (msgSortableMs), the same
|
|
87
|
+
// key the list and the unread logic use. The old `date` string compare
|
|
88
|
+
// had a hole: a message neither strictly after the last one nor
|
|
89
|
+
// strictly before the first (same second, or an unparseable date) fell
|
|
90
|
+
// through every branch and was silently DROPPED.
|
|
91
|
+
const newMs = (0, _msgSortableMs.msgSortableMs)(message);
|
|
92
|
+
const lastMs = lastMessage ? (0, _msgSortableMs.msgSortableMs)(lastMessage) : 0;
|
|
93
|
+
if (!lastMessage || !newMs || newMs >= lastMs) {
|
|
90
94
|
const index = roomMessages.findIndex(msg => msg.id === message.xmppId || msg.id === message.id);
|
|
91
95
|
if (index !== -1) {
|
|
96
|
+
// Keep an open thread open when its parent is replaced by the echo.
|
|
97
|
+
const keepThread = roomMessages[index]?.activeMessage;
|
|
92
98
|
roomMessages[index] = {
|
|
93
99
|
...message,
|
|
94
100
|
id: message.id,
|
|
95
|
-
pending: false
|
|
101
|
+
pending: false,
|
|
102
|
+
...(keepThread ? {
|
|
103
|
+
activeMessage: true
|
|
104
|
+
} : {})
|
|
96
105
|
};
|
|
97
106
|
} else {
|
|
98
107
|
roomMessages.push(message);
|
|
@@ -137,14 +146,14 @@ function insertMessageWithDelimiter(roomMessages, message, lastViewedTimestamp)
|
|
|
137
146
|
});
|
|
138
147
|
}
|
|
139
148
|
}
|
|
140
|
-
} else if ((0, _dateComparison.isDateBefore)(newMessageDate.toString(), firstMessage?.date?.toString() ?? '')) {
|
|
141
|
-
roomMessages.unshift(message);
|
|
142
149
|
} else {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
// Before the first message strictly newer than it; equal keys keep
|
|
151
|
+
// arrival order.
|
|
152
|
+
const at = roomMessages.findIndex(msg => (0, _msgSortableMs.msgSortableMs)(msg) > newMs);
|
|
153
|
+
if (at === -1) {
|
|
154
|
+
roomMessages.push(message);
|
|
155
|
+
} else {
|
|
156
|
+
roomMessages.splice(at, 0, message);
|
|
148
157
|
}
|
|
149
158
|
}
|
|
150
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_msgSortableMs","require","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","msgSortableMs","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":[]}
|
|
@@ -3,14 +3,36 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getKeyboardVerticalOffset = exports.getInputDockPaddingBottom = exports.ANDROID_INPUT_DOCK_GAP = void 0;
|
|
6
|
+
exports.getKeyboardVerticalOffset = exports.getKeyboardAvoidingOffset = exports.getInputDockPaddingBottom = exports.getInputDockKeyboardPadding = exports.IOS_KEYBOARD_DOCK_GAP = exports.ANDROID_INPUT_DOCK_GAP = void 0;
|
|
7
7
|
const ANDROID_INPUT_DOCK_GAP = exports.ANDROID_INPUT_DOCK_GAP = 12;
|
|
8
|
+
// Bottom padding the dock keeps while the iOS keyboard is open, so the
|
|
9
|
+
// composer is glued to the keyboard without touching its edge.
|
|
10
|
+
const IOS_KEYBOARD_DOCK_GAP = exports.IOS_KEYBOARD_DOCK_GAP = 4;
|
|
8
11
|
const getKeyboardVerticalOffset = ({
|
|
9
12
|
platform,
|
|
10
13
|
configuredOffset = 0,
|
|
11
14
|
bottomInset = 0
|
|
12
15
|
}) => configuredOffset + (platform === 'ios' ? bottomInset : 0);
|
|
16
|
+
|
|
17
|
+
// Offset for the KeyboardAvoidingView strategy. Unlike KeyboardStickyView
|
|
18
|
+
// (where a positive `opened` offset pushes the dock DOWN into the keyboard),
|
|
19
|
+
// a positive value here ADDS bottom padding above the keyboard — so the
|
|
20
|
+
// safe-area inset must not be added: the avoiding view already ends exactly
|
|
21
|
+
// at the keyboard's top edge.
|
|
13
22
|
exports.getKeyboardVerticalOffset = getKeyboardVerticalOffset;
|
|
23
|
+
const getKeyboardAvoidingOffset = ({
|
|
24
|
+
configuredOffset = 0
|
|
25
|
+
}) => configuredOffset;
|
|
26
|
+
|
|
27
|
+
// Dock bottom padding while the keyboard is open (KeyboardAvoidingView
|
|
28
|
+
// strategy). On iOS the safe-area padding collapses to a small gap; Android
|
|
29
|
+
// keeps its fixed gap.
|
|
30
|
+
exports.getKeyboardAvoidingOffset = getKeyboardAvoidingOffset;
|
|
31
|
+
const getInputDockKeyboardPadding = ({
|
|
32
|
+
platform,
|
|
33
|
+
inputDockPaddingBottom
|
|
34
|
+
}) => platform === 'ios' ? Math.min(inputDockPaddingBottom, IOS_KEYBOARD_DOCK_GAP) : inputDockPaddingBottom;
|
|
35
|
+
exports.getInputDockKeyboardPadding = getInputDockKeyboardPadding;
|
|
14
36
|
const getInputDockPaddingBottom = ({
|
|
15
37
|
platform,
|
|
16
38
|
bottomInset = 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ANDROID_INPUT_DOCK_GAP","exports","getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","getInputDockPaddingBottom","keyboardVisible","configuredPadding","hostOwnsLayout"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;;;;;AAOO,MAAMA,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG,EAAE;
|
|
1
|
+
{"version":3,"names":["ANDROID_INPUT_DOCK_GAP","exports","IOS_KEYBOARD_DOCK_GAP","getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","getKeyboardAvoidingOffset","getInputDockKeyboardPadding","inputDockPaddingBottom","Math","min","getInputDockPaddingBottom","keyboardVisible","configuredPadding","hostOwnsLayout"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;;;;;AAOO,MAAMA,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG,EAAE;AACxC;AACA;AACO,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,CAAC;AAE/B,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;AAAAL,OAAA,CAAAE,yBAAA,GAAAA,yBAAA;AACO,MAAMI,yBAAyB,GAAGA,CAAC;EACxCF,gBAAgB,GAAG;AACyB,CAAC,KAAaA,gBAAgB;;AAE5E;AACA;AACA;AAAAJ,OAAA,CAAAM,yBAAA,GAAAA,yBAAA;AACO,MAAMC,2BAA2B,GAAGA,CAAC;EAC1CJ,QAAQ;EACRK;AAIF,CAAC,KACCL,QAAQ,KAAK,KAAK,GACdM,IAAI,CAACC,GAAG,CAACF,sBAAsB,EAAEP,qBAAqB,CAAC,GACvDO,sBAAsB;AAACR,OAAA,CAAAO,2BAAA,GAAAA,2BAAA;AActB,MAAMI,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,GAAGN,sBAAsB;AAClE,CAAC;AAACC,OAAA,CAAAW,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.extractReaction = exports.applyMamReactions = void 0;
|
|
7
|
+
var _roomsSlice = require("../roomStore/roomsSlice");
|
|
8
|
+
const extractReaction = (msg, fallbackRoomJID, archiveId) => {
|
|
9
|
+
const reactionsEl = msg?.getChild?.('reactions');
|
|
10
|
+
if (!reactionsEl) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const messageId = reactionsEl.attrs?.id;
|
|
14
|
+
const from = String(reactionsEl.attrs?.from || '');
|
|
15
|
+
if (!messageId || !from.split('@')[0]) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const emoji = (reactionsEl.getChildren?.('reaction') || []).map(reaction => reaction.text ? reaction.text() : '').filter(Boolean);
|
|
19
|
+
const data = msg.getChild?.('data')?.attrs || {};
|
|
20
|
+
const stanzaId = msg.getChild?.('stanza-id');
|
|
21
|
+
const roomJID = String(stanzaId?.attrs?.by || fallbackRoomJID || msg.attrs?.from || '').split('/')[0];
|
|
22
|
+
const rawTs = String(archiveId || stanzaId?.attrs?.id || '');
|
|
23
|
+
const ts = /^\d+$/.test(rawTs) ? rawTs : undefined;
|
|
24
|
+
return {
|
|
25
|
+
messageId,
|
|
26
|
+
from,
|
|
27
|
+
emoji,
|
|
28
|
+
data,
|
|
29
|
+
roomJID,
|
|
30
|
+
...(ts ? {
|
|
31
|
+
ts
|
|
32
|
+
} : {})
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.extractReaction = extractReaction;
|
|
36
|
+
const applyMamReactions = (messages, reactions) => {
|
|
37
|
+
const byId = new Map();
|
|
38
|
+
for (const message of messages) {
|
|
39
|
+
if (message?.id) {
|
|
40
|
+
byId.set(String(message.id), message);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const deferred = [];
|
|
44
|
+
// Oldest first, so the newest state of each reactor wins.
|
|
45
|
+
const ordered = reactions.slice().sort((a, b) => a.ts && b.ts ? (0, _roomsSlice.compareStanzaIds)(a.ts, b.ts) : 0);
|
|
46
|
+
for (const reaction of ordered) {
|
|
47
|
+
const target = byId.get(String(reaction.messageId));
|
|
48
|
+
if (target) {
|
|
49
|
+
(0, _roomsSlice.applyReactionToMessage)(target, reaction.from, reaction.emoji, reaction.data, reaction.ts);
|
|
50
|
+
} else {
|
|
51
|
+
deferred.push(reaction);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return deferred;
|
|
55
|
+
};
|
|
56
|
+
exports.applyMamReactions = applyMamReactions;
|
|
57
|
+
//# sourceMappingURL=mamReactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_roomsSlice","require","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","exports","applyMamReactions","messages","reactions","byId","Map","message","set","deferred","ordered","slice","sort","a","b","compareStanzaIds","target","get","applyReactionToMessage","push"],"sourceRoot":"../../../src","sources":["helpers/mamReactions.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseMessageReference = void 0;
|
|
7
|
+
/** The parent a reply points at, read from its `mainMessage` JSON. */
|
|
8
|
+
|
|
9
|
+
const cache = new WeakMap();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Safe read of `message.mainMessage` (a JSON string on the wire). Null for
|
|
13
|
+
* a missing or malformed value — a bad payload must not crash a bubble.
|
|
14
|
+
* Cached per message object.
|
|
15
|
+
*/
|
|
16
|
+
const parseMessageReference = message => {
|
|
17
|
+
if (!message?.mainMessage) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const cached = cache.get(message);
|
|
21
|
+
if (cached !== undefined) {
|
|
22
|
+
return cached;
|
|
23
|
+
}
|
|
24
|
+
let ref = null;
|
|
25
|
+
try {
|
|
26
|
+
const parsed = JSON.parse(message.mainMessage);
|
|
27
|
+
if (parsed && parsed.id != null) {
|
|
28
|
+
ref = {
|
|
29
|
+
id: String(parsed.id),
|
|
30
|
+
text: typeof parsed.text === 'string' ? parsed.text : '',
|
|
31
|
+
roomJid: typeof parsed.roomJid === 'string' ? parsed.roomJid : '',
|
|
32
|
+
userName: typeof parsed.userName === 'string' ? parsed.userName : undefined
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
} catch {
|
|
36
|
+
ref = null;
|
|
37
|
+
}
|
|
38
|
+
cache.set(message, ref);
|
|
39
|
+
return ref;
|
|
40
|
+
};
|
|
41
|
+
exports.parseMessageReference = parseMessageReference;
|
|
42
|
+
//# 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","exports"],"sourceRoot":"../../../src","sources":["helpers/parseMessageReference.ts"],"mappings":";;;;;;AAAA;;AAQA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAAkC,CAAC;;AAE5D;AACA;AACA;AACA;AACA;AACO,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;AAACU,OAAA,CAAAhB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.reactionsEnabled = exports.reactionPickerEnabled = exports.quickReactionIds = void 0;
|
|
7
|
+
var _emoji = require("./emoji");
|
|
8
|
+
const reactionsEnabled = config => !config?.disableReactions && config?.reactions?.enabled !== false;
|
|
9
|
+
exports.reactionsEnabled = reactionsEnabled;
|
|
10
|
+
const quickReactionIds = config => {
|
|
11
|
+
const ids = config?.reactions?.quickReactions;
|
|
12
|
+
return Array.isArray(ids) && ids.length ? ids.slice(0, 8) : _emoji.DEFAULT_QUICK_REACTIONS;
|
|
13
|
+
};
|
|
14
|
+
exports.quickReactionIds = quickReactionIds;
|
|
15
|
+
const reactionPickerEnabled = config => reactionsEnabled(config) && config?.reactions?.picker !== false;
|
|
16
|
+
exports.reactionPickerEnabled = reactionPickerEnabled;
|
|
17
|
+
//# sourceMappingURL=reactionsConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_emoji","require","reactionsEnabled","config","disableReactions","reactions","enabled","exports","quickReactionIds","ids","quickReactions","Array","isArray","length","slice","DEFAULT_QUICK_REACTIONS","reactionPickerEnabled","picker"],"sourceRoot":"../../../src","sources":["helpers/reactionsConfig.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,MAAuB,IACtD,CAACA,MAAM,EAAEC,gBAAgB,IAAID,MAAM,EAAEE,SAAS,EAAEC,OAAO,KAAK,KAAK;AAACC,OAAA,CAAAL,gBAAA,GAAAA,gBAAA;AAE7D,MAAMM,gBAAgB,GAAIL,MAAuB,IAAe;EACrE,MAAMM,GAAG,GAAGN,MAAM,EAAEE,SAAS,EAAEK,cAAc;EAC7C,OAAOC,KAAK,CAACC,OAAO,CAACH,GAAG,CAAC,IAAIA,GAAG,CAACI,MAAM,GAAGJ,GAAG,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGC,8BAAuB;AACrF,CAAC;AAACR,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAEK,MAAMQ,qBAAqB,GAAIb,MAAuB,IAC3DD,gBAAgB,CAACC,MAAM,CAAC,IAAIA,MAAM,EAAEE,SAAS,EAAEY,MAAM,KAAK,KAAK;AAACV,OAAA,CAAAS,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -23,7 +23,18 @@ const updateMessagesTillLast = async (rooms, client, batchSize = 5, maxFetchAtte
|
|
|
23
23
|
const currentBatch = roomEntries.slice(processedIndex, processedIndex + batchSize);
|
|
24
24
|
const lastTimestampsByJid = currentBatch.reduce((acc, current) => {
|
|
25
25
|
const room = _roomStore.store.getState().rooms?.rooms?.[current];
|
|
26
|
-
|
|
26
|
+
const cached = Array.isArray(room?.messages) ? room.messages : [];
|
|
27
|
+
let newest = 0;
|
|
28
|
+
for (const m of cached) {
|
|
29
|
+
if (!m || m.pending || m.id === 'delimiter-new') {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const id = Number(m.id);
|
|
33
|
+
if (Number.isFinite(id) && id > newest) {
|
|
34
|
+
newest = id;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
acc[current] = newest;
|
|
27
38
|
return acc;
|
|
28
39
|
}, {});
|
|
29
40
|
await Promise.all(currentBatch.map(async (jid, index) => {
|
|
@@ -40,7 +51,11 @@ const updateMessagesTillLast = async (rooms, client, batchSize = 5, maxFetchAtte
|
|
|
40
51
|
}
|
|
41
52
|
while (!isMessageFound && counter < maxFetchAttempts) {
|
|
42
53
|
const lastMessageId = counter > 0 ? currentJidNewMessages[0]?.id : undefined;
|
|
43
|
-
const fetchedMessages = await client.getHistoryStanza(jid, messagesPerFetch, Number(lastMessageId)
|
|
54
|
+
const fetchedMessages = await client.getHistoryStanza(jid, messagesPerFetch, Number(lastMessageId), undefined, {
|
|
55
|
+
coalesceRoom: true,
|
|
56
|
+
source: 'background',
|
|
57
|
+
selfApplied: true
|
|
58
|
+
});
|
|
44
59
|
if (!fetchedMessages.length) {
|
|
45
60
|
break;
|
|
46
61
|
}
|