@ethora/chat-component-rn 26.5.5 → 26.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +177 -0
- package/README.md +67 -10
- package/index.js +24 -0
- package/lib/commonjs/assets/icons.js +5 -1
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +11 -5
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +7 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +66 -34
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +59 -14
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +15 -7
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +2 -2
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +175 -30
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +17 -8
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/SystemMessage.js +34 -22
- package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/Message.js +117 -19
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +82 -22
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +16 -4
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js +104 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +175 -40
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +29 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +5 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +78 -39
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +4 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/styled/MediaFilePreview.js +115 -5
- package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +49 -10
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +8 -6
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +53 -29
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +14 -4
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +5 -1
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +60 -22
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/MessageNotificationContext.js +7 -7
- package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +315 -34
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/chatAutoEnterer.js +2 -7
- package/lib/commonjs/helpers/chatAutoEnterer.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +4 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +15 -5
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/keyboardLayout.js +18 -0
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -0
- package/lib/commonjs/helpers/mediaDimensions.js +51 -0
- package/lib/commonjs/helpers/mediaDimensions.js.map +1 -0
- package/lib/commonjs/helpers/mimeToExtension.js +131 -0
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -0
- package/lib/commonjs/helpers/normalizeRoomJid.js +20 -0
- package/lib/commonjs/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +73 -1
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/hooks/useChatRoomFocus.js +87 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -0
- package/lib/commonjs/hooks/useChatWrapperInit.js +22 -10
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useEventHandlers.js +9 -1
- package/lib/commonjs/hooks/useEventHandlers.js.map +1 -1
- package/lib/commonjs/hooks/useHeapSender.js +1 -1
- package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +3 -3
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/useMessageHeapState.js +6 -2
- package/lib/commonjs/hooks/useMessageHeapState.js.map +1 -1
- package/lib/commonjs/hooks/usePushNotifications.js +6 -2
- package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
- package/lib/commonjs/hooks/useRoomState.js +2 -0
- package/lib/commonjs/hooks/useRoomState.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +249 -14
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +12 -14
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/main.js +7 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +74 -1
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +2 -1
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/outboundQueue.js +92 -0
- package/lib/commonjs/networking/outboundQueue.js.map +1 -0
- package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
- package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
- package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +26 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
- package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +371 -26
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +22 -6
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/commonjs/roomStore/roomHeapSlice.js +26 -8
- package/lib/commonjs/roomStore/roomHeapSlice.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +157 -23
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/utils/installPromiseRejectionTracker.js +83 -0
- package/lib/commonjs/utils/installPromiseRejectionTracker.js.map +1 -0
- package/lib/commonjs/utils/resendMessage.js +1 -1
- package/lib/commonjs/utils/resendMessage.js.map +1 -1
- package/lib/module/assets/icons.js +5 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/ContextMenu/ContextMenuComponents.js +11 -5
- package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +7 -1
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +67 -35
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +59 -14
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +15 -7
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +2 -2
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +176 -31
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +18 -8
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/SystemMessage.js +33 -21
- package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/module/components/MessageBubble/Message.js +118 -20
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +84 -24
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +15 -3
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js +99 -0
- package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +179 -42
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +31 -3
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +5 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +80 -41
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +4 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/styled/MediaFilePreview.js +116 -6
- package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +51 -12
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +8 -6
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +54 -30
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +14 -4
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +5 -1
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +61 -23
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/MessageNotificationContext.js +7 -7
- package/lib/module/context/MessageNotificationContext.js.map +1 -1
- package/lib/module/context/xmppProvider.js +319 -37
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/chatAutoEnterer.js +2 -7
- package/lib/module/helpers/chatAutoEnterer.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +4 -1
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +15 -5
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/keyboardLayout.js +12 -0
- package/lib/module/helpers/keyboardLayout.js.map +1 -0
- package/lib/module/helpers/mediaDimensions.js +46 -0
- package/lib/module/helpers/mediaDimensions.js.map +1 -0
- package/lib/module/helpers/mimeToExtension.js +124 -0
- package/lib/module/helpers/mimeToExtension.js.map +1 -0
- package/lib/module/helpers/normalizeRoomJid.js +15 -0
- package/lib/module/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +71 -0
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/hooks/useChatRoomFocus.js +82 -0
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -0
- package/lib/module/hooks/useChatWrapperInit.js +22 -10
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useEventHandlers.js +9 -1
- package/lib/module/hooks/useEventHandlers.js.map +1 -1
- package/lib/module/hooks/useHeapSender.js +1 -1
- package/lib/module/hooks/useHeapSender.js.map +1 -1
- package/lib/module/hooks/useLogout.js +3 -3
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/useMessageHeapState.js +6 -2
- package/lib/module/hooks/useMessageHeapState.js.map +1 -1
- package/lib/module/hooks/usePushNotifications.js +6 -2
- package/lib/module/hooks/usePushNotifications.js.map +1 -1
- package/lib/module/hooks/useRoomState.js +2 -0
- package/lib/module/hooks/useRoomState.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +252 -17
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +12 -14
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/main.js +1 -0
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +74 -2
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +2 -1
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/outboundQueue.js +84 -0
- package/lib/module/networking/outboundQueue.js.map +1 -0
- package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
- package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
- package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +26 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +2 -1
- package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +371 -26
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/Middleware/unreadMidlleware.js +22 -6
- package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/module/roomStore/roomHeapSlice.js +24 -7
- package/lib/module/roomStore/roomHeapSlice.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +154 -22
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/utils/installPromiseRejectionTracker.js +78 -0
- package/lib/module/utils/installPromiseRejectionTracker.js.map +1 -0
- package/lib/module/utils/resendMessage.js +1 -1
- package/lib/module/utils/resendMessage.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +8 -4
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/ContextMenu/ContextMenuComponents.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/MediaMessage.d.ts +1 -0
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- 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/ReduxWrapper.d.ts +1 -0
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/SystemMessage.d.ts +0 -7
- package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +4 -2
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts +29 -0
- package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts.map +1 -0
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +0 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts +6 -0
- package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts +1 -5
- package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts +9 -1
- package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts +1 -0
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts +1 -0
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/chatAutoEnterer.d.ts.map +1 -1
- 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 +9 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -0
- package/lib/typescript/helpers/mediaDimensions.d.ts +9 -0
- package/lib/typescript/helpers/mediaDimensions.d.ts.map +1 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts +37 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -0
- package/lib/typescript/helpers/normalizeRoomJid.d.ts +2 -0
- package/lib/typescript/helpers/normalizeRoomJid.d.ts.map +1 -0
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts +18 -0
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +42 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useEventHandlers.d.ts +6 -0
- package/lib/typescript/hooks/useEventHandlers.d.ts.map +1 -1
- package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
- package/lib/typescript/hooks/useMessageHeapState.d.ts +2 -0
- package/lib/typescript/hooks/useMessageHeapState.d.ts.map +1 -1
- package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
- package/lib/typescript/hooks/useRoomState.d.ts +1 -0
- package/lib/typescript/hooks/useRoomState.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts +2 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +1 -0
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -0
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/outboundQueue.d.ts +57 -0
- package/lib/typescript/networking/outboundQueue.d.ts.map +1 -0
- package/lib/typescript/networking/xmpp/createTimeoutPromise.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts +1 -1
- package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +58 -5
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomHeapSlice.d.ts +22 -1
- package/lib/typescript/roomStore/roomHeapSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +8 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/types/models/media.model.d.ts +1 -0
- package/lib/typescript/types/models/media.model.d.ts.map +1 -1
- package/lib/typescript/types/models/xmpp.model.d.ts +1 -1
- package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +10 -0
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/installPromiseRejectionTracker.d.ts +20 -0
- package/lib/typescript/utils/installPromiseRejectionTracker.d.ts.map +1 -0
- package/lib/typescript/utils/resendMessage.d.ts.map +1 -1
- package/package.json +18 -2
- package/src/assets/icons.tsx +23 -14
- package/src/components/ContextMenu/ContextMenuComponents.tsx +10 -5
- package/src/components/MainComponents/ChatHeader.tsx +5 -1
- package/src/components/MainComponents/ChatRoom.tsx +81 -61
- package/src/components/MainComponents/ChatWrapper.tsx +100 -21
- package/src/components/MainComponents/MediaMessage.tsx +18 -8
- package/src/components/MainComponents/MessageContainer.tsx +4 -2
- package/src/components/MainComponents/MessageList.tsx +185 -31
- package/src/components/MainComponents/ReduxWrapper.tsx +19 -9
- package/src/components/MainComponents/SystemMessage.tsx +38 -26
- package/src/components/MessageBubble/Message.tsx +110 -27
- package/src/components/MessageBubble/MessageInteractions.tsx +98 -29
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +17 -3
- package/src/components/Modals/FilePreviewModal/DocumentViewer.tsx +93 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +182 -37
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +32 -4
- package/src/components/Modals/Modal/Modal.tsx +4 -1
- package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +77 -44
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
- package/src/components/Modals/styledModalComponents.tsx +4 -9
- package/src/components/styled/MediaFilePreview.tsx +111 -5
- package/src/components/styled/MessageImage.tsx +58 -14
- package/src/components/styled/NewMessageLabel.tsx +8 -5
- package/src/components/styled/SendInput.tsx +67 -29
- package/src/components/styled/StyledInputComponents/MediaComponents.tsx +15 -5
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +7 -2
- package/src/components/styled/UnsupportedType.tsx +7 -1
- package/src/components/styled/VideoMessage.tsx +59 -18
- package/src/context/MessageNotificationContext.tsx +8 -8
- package/src/context/xmppProvider.tsx +337 -32
- package/src/helpers/chatAutoEnterer.ts +2 -8
- package/src/helpers/historyPreloadScheduler.ts +4 -1
- package/src/helpers/insertMessageWithDelimiter.ts +22 -15
- package/src/helpers/keyboardLayout.ts +18 -0
- package/src/helpers/mediaDimensions.ts +47 -0
- package/src/helpers/mimeToExtension.ts +135 -0
- package/src/helpers/normalizeRoomJid.ts +6 -0
- package/src/helpers/resolveInitBeforeLoadUser.ts +79 -0
- package/src/hooks/useChatRoomFocus.ts +95 -0
- package/src/hooks/useChatWrapperInit.ts +51 -46
- package/src/hooks/useEventHandlers.tsx +24 -1
- package/src/hooks/useHeapSender.tsx +2 -1
- package/src/hooks/useLogout.tsx +3 -3
- package/src/hooks/useMessageHeapState.tsx +6 -2
- package/src/hooks/usePushNotifications.ts +21 -8
- package/src/hooks/useRoomState.tsx +4 -0
- package/src/hooks/useSendMessage.tsx +333 -17
- package/src/hooks/useUnreadMessagesCounter.ts +13 -16
- package/src/main.ts +1 -0
- package/src/networking/api-requests/auth.api.ts +60 -2
- package/src/networking/apiClient.ts +2 -1
- package/src/networking/outboundQueue.ts +98 -0
- package/src/networking/xmpp/createTimeoutPromise.xmpp.ts +5 -1
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +11 -13
- package/src/networking/xmpp/getRoomsPaged.xmpp.ts +27 -3
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +24 -9
- package/src/networking/xmpp/sendTextMessage.xmpp.ts +2 -1
- package/src/networking/xmppClient.ts +399 -31
- package/src/roomStore/Middleware/unreadMidlleware.tsx +23 -5
- package/src/roomStore/roomHeapSlice.ts +47 -4
- package/src/roomStore/roomsSlice.ts +177 -27
- package/src/types/models/media.model.ts +3 -0
- package/src/types/models/xmpp.model.ts +2 -1
- package/src/types/types.ts +25 -0
- package/src/utils/installPromiseRejectionTracker.ts +91 -0
- package/src/utils/resendMessage.ts +2 -1
|
@@ -26,9 +26,27 @@ var _inviteRoomRequest = require("./xmpp/inviteRoomRequest.xmpp");
|
|
|
26
26
|
var _getRooms = require("./xmpp/getRooms.xmpp");
|
|
27
27
|
var _handleStanzas = require("./xmpp/handleStanzas.xmpp");
|
|
28
28
|
var _devLogger = require("../utils/devLogger");
|
|
29
|
+
var _normalizeRoomJid = require("../helpers/normalizeRoomJid");
|
|
30
|
+
var _outboundQueue = require("./outboundQueue");
|
|
29
31
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
30
32
|
// Canonical production XMPP WSS endpoint (standard wss/443, no port suffix).
|
|
31
33
|
const DEFAULT_DEV_SERVER = 'xmpp.chat.ethora.com';
|
|
34
|
+
|
|
35
|
+
// @xmpp/client surfaces SASL/stream errors in a few shapes depending on
|
|
36
|
+
// where it fails — XMPPError on stream:error, SASLError on SASL bind, or
|
|
37
|
+
// a generic Error whose message contains "not-authorized". Match all of
|
|
38
|
+
// them so we trigger the credentials refresh path consistently.
|
|
39
|
+
function isNotAuthorizedError(err) {
|
|
40
|
+
if (!err) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const condition = err?.condition || err?.name || err?.type || err?.error?.condition || '';
|
|
44
|
+
if (typeof condition === 'string' && condition.includes('not-authorized')) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
const message = (err?.message || err?.text || '').toString();
|
|
48
|
+
return /not-authorized|SASLError/i.test(message);
|
|
49
|
+
}
|
|
32
50
|
class XmppClient {
|
|
33
51
|
host = '';
|
|
34
52
|
service = '';
|
|
@@ -38,7 +56,35 @@ class XmppClient {
|
|
|
38
56
|
reconnectAttempts = 0;
|
|
39
57
|
maxReconnectAttempts = 5;
|
|
40
58
|
reconnectDelay = 2000;
|
|
59
|
+
// Upper bound on the backoff delay. The old hard stop at
|
|
60
|
+
// maxReconnectAttempts gave up entirely after ~62s; now we keep retrying
|
|
61
|
+
// at a steady cadence on a long outage and just clamp the delay here.
|
|
62
|
+
maxReconnectDelay = 30000;
|
|
63
|
+
// Timestamp of the last forced reconnect so bursty external triggers
|
|
64
|
+
// (NetInfo + AppState + the provider watchdog firing together) can't
|
|
65
|
+
// spawn a reconnect storm.
|
|
66
|
+
lastReconnectAt = 0;
|
|
41
67
|
suppressReconnect = false;
|
|
68
|
+
// Tracked so close()/disconnect() can cancel a pending reconnect —
|
|
69
|
+
// otherwise a scheduleReconnect() timer fires after logout and (until
|
|
70
|
+
// suppressReconnect short-circuits it) keeps the dead instance alive.
|
|
71
|
+
reconnectTimer = null;
|
|
72
|
+
// Single-flight guard for reconnect(). Multiple triggers can fire near-
|
|
73
|
+
// simultaneously (AppState 'active' + NetInfo restore + a scheduled
|
|
74
|
+
// timer). Without this, two overlapping reconnect()s each spawn a fresh
|
|
75
|
+
// underlying client and one is leaked with its `stanza` handler still
|
|
76
|
+
// bound → duplicate stanza dispatch into redux.
|
|
77
|
+
reconnecting = false;
|
|
78
|
+
|
|
79
|
+
// Set when SASL fails with `not-authorized` (typically a stale JWT-
|
|
80
|
+
// derived XMPP password after idle). Triggers the credentialsProvider
|
|
81
|
+
// refresh path in reconnect().
|
|
82
|
+
lastAuthError = null;
|
|
83
|
+
credentialsProvider = null;
|
|
84
|
+
credentialsRefreshInFlight = null;
|
|
85
|
+
// Fired by the provider on every 'online' so it can re-join MUC rooms
|
|
86
|
+
// after a reconnect (bug #21 — reconnected but not in the room).
|
|
87
|
+
onOnlineCallback = null;
|
|
42
88
|
|
|
43
89
|
// ---- QoS state (mirrors web XmppClient) ----------------------------
|
|
44
90
|
presencesReady = false;
|
|
@@ -57,6 +103,29 @@ class XmppClient {
|
|
|
57
103
|
checkOnline() {
|
|
58
104
|
return this.client && this.client.status === 'online';
|
|
59
105
|
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Inject (or replace) the callback used by reconnect() to fetch fresh
|
|
109
|
+
* XMPP credentials after a `not-authorized` SASL failure. The provider
|
|
110
|
+
* is responsible for refreshing whatever upstream token is needed
|
|
111
|
+
* (REST JWT, /users/client, etc.) and returning the resulting
|
|
112
|
+
* username + password.
|
|
113
|
+
*/
|
|
114
|
+
setCredentialsProvider(provider) {
|
|
115
|
+
this.credentialsProvider = provider;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Install a callback invoked on every successful 'online'. The provider
|
|
119
|
+
* uses it to re-join MUC rooms after a reconnect. */
|
|
120
|
+
setOnOnline(cb) {
|
|
121
|
+
this.onOnlineCallback = cb;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Swap in fresh credentials before the next reconnect. */
|
|
125
|
+
updateCredentials(username, password) {
|
|
126
|
+
this.username = username;
|
|
127
|
+
this.password = password;
|
|
128
|
+
}
|
|
60
129
|
constructor(username, password, xmppSettings) {
|
|
61
130
|
// Back-compat: third arg used to be a bare devServer string.
|
|
62
131
|
if (typeof xmppSettings === 'string') {
|
|
@@ -210,11 +279,22 @@ class XmppClient {
|
|
|
210
279
|
this.host = this.xmppSettings?.host || url.match(/wss:\/\/([^:/]+)/)?.[1] || '';
|
|
211
280
|
this.conference = this.xmppSettings?.conference || `conference.${this.host}`;
|
|
212
281
|
this.status = 'connecting';
|
|
282
|
+
|
|
283
|
+
// Defensive: if a previous underlying client is still referenced
|
|
284
|
+
// (initializeClient reached from a path other than reconnect()),
|
|
285
|
+
// detach its handlers before we overwrite the ref so the orphaned
|
|
286
|
+
// client can't keep dispatching stanzas into redux.
|
|
287
|
+
try {
|
|
288
|
+
this.detachEventListeners();
|
|
289
|
+
} catch {}
|
|
213
290
|
this.client = _client.default.client({
|
|
214
291
|
service: url,
|
|
215
292
|
username: (0, _walletUsername.walletToUsername)(this.username),
|
|
216
293
|
password: this.password
|
|
217
294
|
});
|
|
295
|
+
try {
|
|
296
|
+
this.client?.reconnect?.stop?.();
|
|
297
|
+
} catch {}
|
|
218
298
|
|
|
219
299
|
// Concurrent room preloads each register their own short-lived
|
|
220
300
|
// 'stanza' handler (getHistory, getRooms, getChatsPrivateStore,
|
|
@@ -242,7 +322,18 @@ class XmppClient {
|
|
|
242
322
|
const to = stanza?.attrs?.to || '';
|
|
243
323
|
(0, _devLogger.pushLog)('xmpp', `→ ${tag}${id ? ` id=${id}` : ''}${to ? ` to=${to.split('/')[0]}` : ''}`, stanza?.toString ? stanza.toString() : undefined);
|
|
244
324
|
} catch {}
|
|
245
|
-
|
|
325
|
+
const result = origSend(stanza);
|
|
326
|
+
// Most stanza helpers fire-and-forget `client.send(...)`
|
|
327
|
+
// without awaiting/catching. On @xmpp/client builds where
|
|
328
|
+
// send() returns a Promise, a transient send failure (e.g.
|
|
329
|
+
// mid-reconnect) then surfaces as a red-screen "Uncaught (in
|
|
330
|
+
// promise, id: N)" (#4). Attach a no-op catch so the
|
|
331
|
+
// rejection is considered handled — callers that DO await/
|
|
332
|
+
// catch still get it, because we return the SAME promise.
|
|
333
|
+
if (result && typeof result.catch === 'function') {
|
|
334
|
+
result.catch(() => {});
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
246
337
|
};
|
|
247
338
|
// Property may be non-writable on some builds; defineProperty
|
|
248
339
|
// gives us a clearer error than a plain assignment.
|
|
@@ -258,15 +349,39 @@ class XmppClient {
|
|
|
258
349
|
this.attachEventListeners();
|
|
259
350
|
this.client.start().catch(error => {
|
|
260
351
|
console.error('Error starting xmpp client:', error);
|
|
352
|
+
if (isNotAuthorizedError(error)) {
|
|
353
|
+
this.lastAuthError = 'not-authorized';
|
|
354
|
+
}
|
|
261
355
|
this.status = 'error';
|
|
356
|
+
// A connect-time failure lands in 'error', which — unlike a
|
|
357
|
+
// 'disconnect' after being online — has no other retry path
|
|
358
|
+
// (onError doesn't reschedule; the provider only reacts to
|
|
359
|
+
// 'offline'). Schedule a backoff retry so a failed initial or
|
|
360
|
+
// reconnect attempt recovers on its own. reconnect() refreshes
|
|
361
|
+
// creds first when the failure was a SASL not-authorized.
|
|
362
|
+
if (!this.suppressReconnect) {
|
|
363
|
+
try {
|
|
364
|
+
this.scheduleReconnect();
|
|
365
|
+
} catch {}
|
|
366
|
+
}
|
|
262
367
|
});
|
|
263
368
|
} catch (error) {
|
|
264
369
|
console.error('Error initializing client:', error);
|
|
265
370
|
this.status = 'error';
|
|
266
371
|
}
|
|
267
372
|
}
|
|
373
|
+
|
|
374
|
+
// Stored so detachEventListeners() can remove exactly the handlers we
|
|
375
|
+
// added (not xmpp.js's internal ones). Without this a re-login left the
|
|
376
|
+
// previous instance's `stanza` handler bound, double-dispatching every
|
|
377
|
+
// incoming stanza into the (new session's) redux store.
|
|
378
|
+
|
|
268
379
|
attachEventListeners() {
|
|
269
|
-
|
|
380
|
+
// Idempotent: drop any previously-attached handlers first so a
|
|
381
|
+
// reconnect that re-runs initializeClient on a fresh underlying
|
|
382
|
+
// client doesn't stack duplicates.
|
|
383
|
+
this.detachEventListeners();
|
|
384
|
+
this.onDisconnect = () => {
|
|
270
385
|
console.log('XMPP disconnected.');
|
|
271
386
|
this.status = 'offline';
|
|
272
387
|
try {
|
|
@@ -274,8 +389,19 @@ class XmppClient {
|
|
|
274
389
|
// that don't reference it; tree-shaken via dead-code elim.
|
|
275
390
|
(0, _devLogger.pushLog)('xmpp', 'disconnect');
|
|
276
391
|
} catch {}
|
|
277
|
-
|
|
278
|
-
|
|
392
|
+
// Self-heal at the socket level. The provider's reconnect effect
|
|
393
|
+
// keys on `client.status`, but that's a mutated class field React
|
|
394
|
+
// does NOT track — so a silent socket drop (e.g. JS paused by the
|
|
395
|
+
// debugger, iOS WebSocket suspend) never re-runs the effect and the
|
|
396
|
+
// client sits 'offline' forever (sends then queue and time out).
|
|
397
|
+
// Driving reconnect here makes recovery independent of React.
|
|
398
|
+
if (!this.suppressReconnect) {
|
|
399
|
+
try {
|
|
400
|
+
this.scheduleReconnect();
|
|
401
|
+
} catch {}
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
this.onOnline = () => {
|
|
279
405
|
console.log('XMPP online.', new Date());
|
|
280
406
|
this.status = 'online';
|
|
281
407
|
this.presencesReady = true;
|
|
@@ -283,14 +409,39 @@ class XmppClient {
|
|
|
283
409
|
try {
|
|
284
410
|
(0, _devLogger.pushLog)('xmpp', 'online', this.username);
|
|
285
411
|
} catch {}
|
|
286
|
-
|
|
287
|
-
|
|
412
|
+
// Notify the provider that the session is live again. On a RECONNECT
|
|
413
|
+
// (new stream) the client is no longer joined to any MUC, so the
|
|
414
|
+
// provider must re-send room presences — otherwise messages get a
|
|
415
|
+
// local double-tick but never reach the room (bug #21). Harmless on
|
|
416
|
+
// the first connect (room list not loaded yet → joins nothing; the
|
|
417
|
+
// bootstrap's own allRoomPresences handles that pass).
|
|
418
|
+
try {
|
|
419
|
+
this.onOnlineCallback?.();
|
|
420
|
+
} catch (err) {
|
|
421
|
+
console.warn('onOnline callback failed', err);
|
|
422
|
+
}
|
|
423
|
+
// Drain any sends that were buffered while the stream was down. The
|
|
424
|
+
// presence stanzas from onOnlineCallback above were written to the
|
|
425
|
+
// socket synchronously (allRoomPresences → presenceInRoom send the
|
|
426
|
+
// <presence> before yielding), so flushing here puts the message
|
|
427
|
+
// stanzas AFTER the joins on the same stream — XMPP's in-order
|
|
428
|
+
// per-stream processing guarantees the MUC join lands first.
|
|
429
|
+
try {
|
|
430
|
+
this.flushPendingSends();
|
|
431
|
+
} catch (err) {
|
|
432
|
+
console.warn('flushPendingSends failed', err);
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
this.onError = error => {
|
|
288
436
|
console.error('XMPP client error:', error);
|
|
437
|
+
if (isNotAuthorizedError(error)) {
|
|
438
|
+
this.lastAuthError = 'not-authorized';
|
|
439
|
+
}
|
|
289
440
|
try {
|
|
290
441
|
(0, _devLogger.pushLog)('xmpp', 'error', error && error.message || error);
|
|
291
442
|
} catch {}
|
|
292
|
-
}
|
|
293
|
-
this.
|
|
443
|
+
};
|
|
444
|
+
this.onStanza = stanza => {
|
|
294
445
|
try {
|
|
295
446
|
const tag = stanza?.name || 'stanza';
|
|
296
447
|
const id = stanza?.attrs?.id || '';
|
|
@@ -299,7 +450,35 @@ class XmppClient {
|
|
|
299
450
|
(0, _devLogger.pushLog)('xmpp', `← ${tag}${id ? ` id=${id}` : ''}${type ? ` type=${type}` : ''}${from ? ` from=${from.split('/')[0]}` : ''}`, stanza?.toString ? stanza.toString() : undefined);
|
|
300
451
|
} catch {}
|
|
301
452
|
_handleStanzas.handleStanza.bind(this, stanza, this)();
|
|
302
|
-
}
|
|
453
|
+
};
|
|
454
|
+
this.client.on('disconnect', this.onDisconnect);
|
|
455
|
+
this.client.on('online', this.onOnline);
|
|
456
|
+
this.client.on('error', this.onError);
|
|
457
|
+
this.client.on('stanza', this.onStanza);
|
|
458
|
+
}
|
|
459
|
+
detachEventListeners() {
|
|
460
|
+
const c = this.client;
|
|
461
|
+
if (!c?.removeListener) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
try {
|
|
465
|
+
if (this.onDisconnect) {
|
|
466
|
+
c.removeListener('disconnect', this.onDisconnect);
|
|
467
|
+
}
|
|
468
|
+
if (this.onOnline) {
|
|
469
|
+
c.removeListener('online', this.onOnline);
|
|
470
|
+
}
|
|
471
|
+
if (this.onError) {
|
|
472
|
+
c.removeListener('error', this.onError);
|
|
473
|
+
}
|
|
474
|
+
if (this.onStanza) {
|
|
475
|
+
c.removeListener('stanza', this.onStanza);
|
|
476
|
+
}
|
|
477
|
+
} catch {}
|
|
478
|
+
this.onDisconnect = undefined;
|
|
479
|
+
this.onOnline = undefined;
|
|
480
|
+
this.onError = undefined;
|
|
481
|
+
this.onStanza = undefined;
|
|
303
482
|
}
|
|
304
483
|
|
|
305
484
|
/**
|
|
@@ -336,28 +515,133 @@ class XmppClient {
|
|
|
336
515
|
if (this.suppressReconnect) {
|
|
337
516
|
return;
|
|
338
517
|
}
|
|
339
|
-
if (this.
|
|
340
|
-
console.error('Max reconnect attempts reached.');
|
|
518
|
+
if (this.reconnecting || this.reconnectTimer) {
|
|
341
519
|
return;
|
|
342
520
|
}
|
|
343
521
|
this.reconnectAttempts++;
|
|
344
|
-
const
|
|
522
|
+
const exp = Math.min(this.reconnectAttempts - 1, Math.max(0, this.maxReconnectAttempts));
|
|
523
|
+
const delay = Math.min(this.maxReconnectDelay, this.reconnectDelay * Math.pow(2, exp));
|
|
345
524
|
console.log(`Reconnecting attempt ${this.reconnectAttempts} in ${delay}ms`);
|
|
346
|
-
|
|
525
|
+
// No clearTimeout needed — the guard above guarantees no pending timer.
|
|
526
|
+
this.reconnectTimer = setTimeout(() => {
|
|
527
|
+
this.reconnectTimer = null;
|
|
528
|
+
// The connection may have recovered on its own (xmpp.js auto-
|
|
529
|
+
// reconnect) between scheduling and firing — don't tear down a
|
|
530
|
+
// healthy stream. forceReconnect() bypasses this by calling
|
|
531
|
+
// reconnect() directly.
|
|
532
|
+
if (this.status === 'online') {
|
|
533
|
+
this.reconnectAttempts = 0;
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
this.reconnect();
|
|
537
|
+
}, delay);
|
|
347
538
|
}
|
|
348
|
-
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Force an immediate reconnect, resetting the backoff counter. Called
|
|
542
|
+
* by the provider when NetInfo reports the network came back or the app
|
|
543
|
+
* returned to the foreground — we don't want to wait out the existing
|
|
544
|
+
* exponential delay (or a maxed-out attempt count) in those cases.
|
|
545
|
+
*/
|
|
546
|
+
forceReconnect() {
|
|
547
|
+
if (this.suppressReconnect) {
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
// Debounce bursts: NetInfo restore + AppState 'active' + the provider
|
|
551
|
+
// watchdog can fire within the same instant. reconnect() dedups
|
|
552
|
+
// CONCURRENT calls, but sequential ones (one finishes, the next
|
|
553
|
+
// arrives) would still each tear down + re-create the client. Ignore
|
|
554
|
+
// forces within 2s of the last one.
|
|
555
|
+
const now = Date.now();
|
|
556
|
+
if (now - this.lastReconnectAt < 2000) {
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
this.lastReconnectAt = now;
|
|
560
|
+
if (this.reconnectTimer) {
|
|
561
|
+
clearTimeout(this.reconnectTimer);
|
|
562
|
+
this.reconnectTimer = null;
|
|
563
|
+
}
|
|
564
|
+
this.reconnectAttempts = 0;
|
|
565
|
+
this.reconnect();
|
|
566
|
+
}
|
|
567
|
+
async reconnect() {
|
|
349
568
|
if (this.suppressReconnect) {
|
|
350
569
|
return;
|
|
351
570
|
}
|
|
571
|
+
// Single-flight: ignore overlapping triggers (AppState + NetInfo +
|
|
572
|
+
// scheduled timer) so we never spawn two underlying clients and leak
|
|
573
|
+
// one with live listeners (duplicate stanza dispatch).
|
|
574
|
+
if (this.reconnecting) {
|
|
575
|
+
console.log('reconnect already in progress — skip');
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
this.reconnecting = true;
|
|
352
579
|
console.log('Attempting to reconnect xmpp client...');
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
580
|
+
try {
|
|
581
|
+
// If the last failure was a SASL `not-authorized` (typically a stale
|
|
582
|
+
// JWT-derived XMPP password after idle), try to fetch fresh creds
|
|
583
|
+
// before retrying. Without this, reconnect retries with the same
|
|
584
|
+
// stale password forever and the user has to kill the app.
|
|
585
|
+
if (this.lastAuthError === 'not-authorized' && this.credentialsProvider) {
|
|
586
|
+
try {
|
|
587
|
+
await this.refreshCredentialsOnce();
|
|
588
|
+
} catch (err) {
|
|
589
|
+
console.warn('XMPP credential refresh failed; reconnecting with cached creds', err);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// Tear the OLD underlying client down FULLY before spinning up a new
|
|
594
|
+
// one: detach our handlers (so its `stanza` handler can't keep
|
|
595
|
+
// dispatching) and stop it. detachEventListeners() must run while
|
|
596
|
+
// `this.client` still points at the old client — i.e. before
|
|
597
|
+
// initializeClient() reassigns it.
|
|
598
|
+
const old = this.client;
|
|
599
|
+
if (old) {
|
|
600
|
+
this.detachEventListeners();
|
|
601
|
+
try {
|
|
602
|
+
await old.stop();
|
|
603
|
+
} catch {}
|
|
604
|
+
}
|
|
358
605
|
this.initializeClient();
|
|
606
|
+
} finally {
|
|
607
|
+
this.reconnecting = false;
|
|
359
608
|
}
|
|
360
609
|
}
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Single-flight wrapper around credentialsProvider. Multiple concurrent
|
|
613
|
+
* reconnect() calls (e.g. from the provider's reconnect effect firing
|
|
614
|
+
* twice quickly) share one in-flight request and update `this.password`
|
|
615
|
+
* exactly once.
|
|
616
|
+
*/
|
|
617
|
+
refreshCredentialsOnce() {
|
|
618
|
+
if (this.credentialsRefreshInFlight) {
|
|
619
|
+
return this.credentialsRefreshInFlight;
|
|
620
|
+
}
|
|
621
|
+
if (!this.credentialsProvider) {
|
|
622
|
+
return Promise.resolve();
|
|
623
|
+
}
|
|
624
|
+
const provider = this.credentialsProvider;
|
|
625
|
+
this.credentialsRefreshInFlight = (async () => {
|
|
626
|
+
try {
|
|
627
|
+
const fresh = await provider();
|
|
628
|
+
if (fresh?.username && fresh?.password) {
|
|
629
|
+
// Apply whatever the provider returns and retry. We do NOT try to
|
|
630
|
+
// detect "auth expired" by comparing passwords — a stable
|
|
631
|
+
// xmppPassword (e.g. deterministic from the JWT/wallet) is the
|
|
632
|
+
// NORMAL case for a transient blip, and treating it as expiry
|
|
633
|
+
// falsely bricked recoverable sessions (sending stopped). If the
|
|
634
|
+
// creds really are stale we simply get not-authorized again and
|
|
635
|
+
// retry, which is the confirmed-good 26.5.7 behaviour.
|
|
636
|
+
this.updateCredentials(fresh.username, fresh.password);
|
|
637
|
+
this.lastAuthError = null;
|
|
638
|
+
}
|
|
639
|
+
} finally {
|
|
640
|
+
this.credentialsRefreshInFlight = null;
|
|
641
|
+
}
|
|
642
|
+
})();
|
|
643
|
+
return this.credentialsRefreshInFlight;
|
|
644
|
+
}
|
|
361
645
|
async disconnect(options) {
|
|
362
646
|
if (options?.suppressReconnect) {
|
|
363
647
|
this.suppressReconnect = true;
|
|
@@ -365,7 +649,17 @@ class XmppClient {
|
|
|
365
649
|
return this.close();
|
|
366
650
|
}
|
|
367
651
|
async close() {
|
|
652
|
+
// Cancel any pending reconnect so a stale timer can't resurrect this
|
|
653
|
+
// instance after teardown/logout.
|
|
654
|
+
if (this.reconnectTimer) {
|
|
655
|
+
clearTimeout(this.reconnectTimer);
|
|
656
|
+
this.reconnectTimer = null;
|
|
657
|
+
}
|
|
368
658
|
if (this.client) {
|
|
659
|
+
// Detach OUR handlers first so a late stanza during the close
|
|
660
|
+
// handshake can't re-enter handleStanza and dispatch into a store
|
|
661
|
+
// that's being wiped (or, on re-login, the new session's store).
|
|
662
|
+
this.detachEventListeners();
|
|
369
663
|
try {
|
|
370
664
|
await this.client.stop();
|
|
371
665
|
console.log('XMPP client connection closed.');
|
|
@@ -374,6 +668,11 @@ class XmppClient {
|
|
|
374
668
|
}
|
|
375
669
|
}
|
|
376
670
|
this.status = 'offline';
|
|
671
|
+
this.presencesReady = false;
|
|
672
|
+
// Permanent teardown (logout / unmount) — drop buffered sends so they
|
|
673
|
+
// don't replay into the next session. Reconnect uses old.stop(), NOT
|
|
674
|
+
// close(), so the queue still survives a transient drop+reconnect.
|
|
675
|
+
(0, _outboundQueue.clearOutboundSends)();
|
|
377
676
|
}
|
|
378
677
|
getRoomsStanza = async () => {
|
|
379
678
|
await (0, _getRooms.getRooms)(this.client);
|
|
@@ -388,10 +687,10 @@ class XmppClient {
|
|
|
388
687
|
await (0, _inviteRoomRequest.inviteRoomRequest)(this.client, to, roomJid);
|
|
389
688
|
}
|
|
390
689
|
leaveTheRoomStanza = roomJID => {
|
|
391
|
-
(0, _leaveTheRoom.leaveTheRoom)(roomJID, this.client);
|
|
690
|
+
(0, _leaveTheRoom.leaveTheRoom)((0, _normalizeRoomJid.normalizeRoomJid)(roomJID, this.conference), this.client);
|
|
392
691
|
};
|
|
393
692
|
presenceInRoomStanza = roomJID => {
|
|
394
|
-
(0, _presenceInRoom.presenceInRoom)(this.client, roomJID);
|
|
693
|
+
(0, _presenceInRoom.presenceInRoom)(this.client, (0, _normalizeRoomJid.normalizeRoomJid)(roomJID, this.conference));
|
|
395
694
|
};
|
|
396
695
|
getHistoryStanza = async (chatJID, max, before, id, options) => {
|
|
397
696
|
if (options?.coalesceRoom) {
|
|
@@ -406,21 +705,49 @@ class XmppClient {
|
|
|
406
705
|
return await (0, _getHistory.getHistory)(this.client, chatJID, max, before, id);
|
|
407
706
|
};
|
|
408
707
|
getLastMessageArchiveStanza(roomJID) {
|
|
409
|
-
(0, _getLastMessageArchive.getLastMessage)(this.client, roomJID);
|
|
708
|
+
(0, _getLastMessageArchive.getLastMessage)(this.client, (0, _normalizeRoomJid.normalizeRoomJid)(roomJID, this.conference));
|
|
410
709
|
}
|
|
411
710
|
setRoomImageStanza = (roomJid, roomThumbnail, type, roomBackground) => {
|
|
412
711
|
(0, _setRoomImage.setRoomImage)(roomJid, roomThumbnail, type, this.client, roomBackground);
|
|
413
712
|
};
|
|
414
713
|
getRoomInfoStanza = roomJID => {
|
|
415
|
-
(0, _getRoomInfo.getRoomInfo)(roomJID, this.client);
|
|
714
|
+
(0, _getRoomInfo.getRoomInfo)((0, _normalizeRoomJid.normalizeRoomJid)(roomJID, this.conference), this.client);
|
|
416
715
|
};
|
|
417
716
|
getRoomMembersStanza = roomJID => {
|
|
418
|
-
(0, _getRoomMembers.getRoomMembers)(roomJID, this.client);
|
|
717
|
+
(0, _getRoomMembers.getRoomMembers)((0, _normalizeRoomJid.normalizeRoomJid)(roomJID, this.conference), this.client);
|
|
419
718
|
};
|
|
420
719
|
|
|
720
|
+
/**
|
|
721
|
+
* True when the underlying stream is live enough to actually put a
|
|
722
|
+
* stanza on the wire. Used to gate sends: when false we buffer instead
|
|
723
|
+
* of firing a fire-and-forget stanza into a dead/half-open socket
|
|
724
|
+
* (which is silently dropped and only caught by the 30s watchdog).
|
|
725
|
+
*/
|
|
726
|
+
isStreamReady() {
|
|
727
|
+
return !!this.client && this.status === 'online' && !this.reconnecting;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
/** Replay buffered sends against this (now-online) client, in order. */
|
|
731
|
+
flushPendingSends() {
|
|
732
|
+
(0, _outboundQueue.flushOutboundSends)(this, Date.now());
|
|
733
|
+
}
|
|
734
|
+
|
|
421
735
|
//messages
|
|
422
736
|
sendMessage = (roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId) => {
|
|
737
|
+
// Stream down (start race / reconnect window): buffer and replay on
|
|
738
|
+
// the next 'online' instead of losing the stanza. Returns false so
|
|
739
|
+
// callers know the send was deferred, not delivered.
|
|
740
|
+
if (!this.isStreamReady()) {
|
|
741
|
+
(0, _outboundQueue.enqueueOutboundSend)({
|
|
742
|
+
optimisticId: customId || `send-text-message-${Date.now()}`,
|
|
743
|
+
roomJID,
|
|
744
|
+
enqueuedAt: Date.now(),
|
|
745
|
+
send: c => c.sendMessage(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId)
|
|
746
|
+
});
|
|
747
|
+
return false;
|
|
748
|
+
}
|
|
423
749
|
(0, _sendTextMessage.sendTextMessage)(this.client, roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, this.devServer || DEFAULT_DEV_SERVER, customId);
|
|
750
|
+
return true;
|
|
424
751
|
};
|
|
425
752
|
deleteMessageStanza(room, msgId) {
|
|
426
753
|
(0, _deleteMessage.deleteMessage)(this.client, room, msgId);
|
|
@@ -465,6 +792,19 @@ class XmppClient {
|
|
|
465
792
|
}
|
|
466
793
|
}
|
|
467
794
|
sendMediaMessageStanza(roomJID, data, customId) {
|
|
795
|
+
// Media: the file is already uploaded by the time we get here; only the
|
|
796
|
+
// stanza needs the stream. Buffer + replay on reconnect if it's down so
|
|
797
|
+
// the upload isn't wasted (otherwise the stanza is lost and the media
|
|
798
|
+
// bubble sits pending until the 30s watchdog fails it).
|
|
799
|
+
if (!this.isStreamReady()) {
|
|
800
|
+
(0, _outboundQueue.enqueueOutboundSend)({
|
|
801
|
+
optimisticId: customId || `send-media-message-${Date.now()}`,
|
|
802
|
+
roomJID,
|
|
803
|
+
enqueuedAt: Date.now(),
|
|
804
|
+
send: c => c.sendMediaMessageStanza(roomJID, data, customId)
|
|
805
|
+
});
|
|
806
|
+
return undefined;
|
|
807
|
+
}
|
|
468
808
|
return (0, _sendMediaMessage.sendMediaMessage)(this.client, roomJID, data, customId, this.devServer || DEFAULT_DEV_SERVER);
|
|
469
809
|
}
|
|
470
810
|
|
|
@@ -486,9 +826,14 @@ class XmppClient {
|
|
|
486
826
|
sendMessageReactionStanza(_messageId, _roomJid, _reactionsList, _reactionSymbol) {
|
|
487
827
|
console.warn('sendMessageReactionStanza: not implemented in RN xmpp client');
|
|
488
828
|
}
|
|
489
|
-
sendTextMessageWithTranslateTagStanza(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, _langSource) {
|
|
829
|
+
sendTextMessageWithTranslateTagStanza(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, _langSource, customId) {
|
|
490
830
|
// No translate tag support yet — fall back to a regular text send.
|
|
491
|
-
|
|
831
|
+
// Forward the caller's customId so the optimistic message (heap/redux)
|
|
832
|
+
// reconciles with the server echo. Without it, translated sends went
|
|
833
|
+
// out with no client id → the echo carried a server-assigned id and
|
|
834
|
+
// surfaced as a stuck-pending message PLUS a duplicate (affected both
|
|
835
|
+
// the live translated-send path and resend).
|
|
836
|
+
this.sendMessage(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId);
|
|
492
837
|
}
|
|
493
838
|
}
|
|
494
839
|
exports.XmppClient = XmppClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_client","_interopRequireDefault","require","_walletUsername","_sendMediaMessage","_getChatsPrivateStoreRequest","_actionSetTimestampToPrivateStore","_flushLastViewedToPrivateStore","_sendTypingRequest","_getHistory","_sendTextMessage","_deleteMessage","_presenceInRoom","_getLastMessageArchive","_createRoom","_setRoomImage","_getRoomMembers","_getRoomInfo","_leaveTheRoom","_editMessage","_inviteRoomRequest","_getRooms","_handleStanzas","_devLogger","e","__esModule","default","DEFAULT_DEV_SERVER","XmppClient","host","service","conference","status","password","reconnectAttempts","maxReconnectAttempts","reconnectDelay","suppressReconnect","presencesReady","disableLastRead","activeRoomJID","activeRoomBoostUntil","softPauseUntil","mamInFlightByRoom","Map","maxInFlightHistory","softPauseAfterSendMs","activeRoomBoostTtlMs","alwaysPrioritizeActiveRoom","checkOnline","client","constructor","username","xmppSettings","devServer","qos","historyQoS","initializeClient","setActiveRoomJid","roomJID","promoteRoomHistory","_roomJID","Date","now","isActiveRoomGateOpen","size","onCriticalSend","_messageId","prioritizeRoomPresence","presenceInRoomStanza","enqueueHistoryTask","params","chatJID","max","before","id","source","existing","get","sourceRank","promise","Promise","r","setTimeout","wait","handle","p","getHistory","cur","delete","set","startedAt","s","url","match","xmpp","walletToUsername","setMaxListeners","origSend","send","bind","wrapped","stanza","tag","name","attrs","to","devPushLog","split","toString","undefined","Object","defineProperty","value","writable","configurable","err","console","warn","attachEventListeners","start","catch","error","on","log","message","from","type","handleStanza","waitForOnline","timeoutMs","resolve","reject","tick","Error","ensureConnected","timeout","scheduleReconnect","delay","Math","pow","reconnect","stop","finally","disconnect","options","close","getRoomsStanza","getRooms","createRoomStanza","title","description","createRoom","inviteRoomRequestStanza","roomJid","inviteRoomRequest","leaveTheRoomStanza","leaveTheRoom","presenceInRoom","getHistoryStanza","coalesceRoom","getLastMessageArchiveStanza","getLastMessage","setRoomImageStanza","roomThumbnail","roomBackground","setRoomImage","getRoomInfoStanza","getRoomInfo","getRoomMembersStanza","getRoomMembers","sendMessage","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","sendTextMessage","deleteMessageStanza","room","msgId","deleteMessage","editMessageStanza","text","editMessage","sendTypingRequestStanza","chatId","fullName","sendTypingRequest","getChatsPrivateStoreRequestStanza","getChatsPrivateStoreRequest","actionSetTimestampToPrivateStoreStanza","timestamp","chats","actionSetTimestampToPrivateStore","flushLastViewedToPrivateStoreStanza","rooms","opts","flushLastViewedToPrivateStore","sendMediaMessageStanza","data","sendMediaMessage","setVCardStanza","_xmppUsername","createPrivateRoomStanza","result","sendMessageReactionStanza","_roomJid","_reactionsList","_reactionSymbol","sendTextMessageWithTranslateTagStanza","_langSource","exports","_default"],"sourceRoot":"../../../src","sources":["networking/xmppClient.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_client","_interopRequireDefault","require","_walletUsername","_sendMediaMessage","_getChatsPrivateStoreRequest","_actionSetTimestampToPrivateStore","_flushLastViewedToPrivateStore","_sendTypingRequest","_getHistory","_sendTextMessage","_deleteMessage","_presenceInRoom","_getLastMessageArchive","_createRoom","_setRoomImage","_getRoomMembers","_getRoomInfo","_leaveTheRoom","_editMessage","_inviteRoomRequest","_getRooms","_handleStanzas","_devLogger","_normalizeRoomJid","_outboundQueue","e","__esModule","default","DEFAULT_DEV_SERVER","isNotAuthorizedError","err","condition","name","type","error","includes","message","text","toString","test","XmppClient","host","service","conference","status","password","reconnectAttempts","maxReconnectAttempts","reconnectDelay","maxReconnectDelay","lastReconnectAt","suppressReconnect","reconnectTimer","reconnecting","lastAuthError","credentialsProvider","credentialsRefreshInFlight","onOnlineCallback","presencesReady","disableLastRead","activeRoomJID","activeRoomBoostUntil","softPauseUntil","mamInFlightByRoom","Map","maxInFlightHistory","softPauseAfterSendMs","activeRoomBoostTtlMs","alwaysPrioritizeActiveRoom","checkOnline","client","setCredentialsProvider","provider","setOnOnline","cb","updateCredentials","username","constructor","xmppSettings","devServer","qos","historyQoS","initializeClient","setActiveRoomJid","roomJID","promoteRoomHistory","_roomJID","Date","now","isActiveRoomGateOpen","size","onCriticalSend","_messageId","prioritizeRoomPresence","presenceInRoomStanza","enqueueHistoryTask","params","chatJID","max","before","id","source","existing","get","sourceRank","promise","Promise","r","setTimeout","wait","handle","p","getHistory","cur","delete","set","startedAt","s","url","match","detachEventListeners","xmpp","walletToUsername","reconnect","stop","setMaxListeners","origSend","send","bind","wrapped","stanza","tag","attrs","to","devPushLog","split","undefined","result","catch","Object","defineProperty","value","writable","configurable","console","warn","attachEventListeners","start","scheduleReconnect","onDisconnect","log","onOnline","flushPendingSends","onError","onStanza","from","handleStanza","on","c","removeListener","waitForOnline","timeoutMs","resolve","reject","tick","Error","ensureConnected","timeout","exp","Math","min","delay","pow","forceReconnect","clearTimeout","refreshCredentialsOnce","old","fresh","disconnect","options","close","clearOutboundSends","getRoomsStanza","getRooms","createRoomStanza","title","description","createRoom","inviteRoomRequestStanza","roomJid","inviteRoomRequest","leaveTheRoomStanza","leaveTheRoom","normalizeRoomJid","presenceInRoom","getHistoryStanza","coalesceRoom","getLastMessageArchiveStanza","getLastMessage","setRoomImageStanza","roomThumbnail","roomBackground","setRoomImage","getRoomInfoStanza","getRoomInfo","getRoomMembersStanza","getRoomMembers","isStreamReady","flushOutboundSends","sendMessage","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","enqueueOutboundSend","optimisticId","enqueuedAt","sendTextMessage","deleteMessageStanza","room","msgId","deleteMessage","editMessageStanza","editMessage","sendTypingRequestStanza","chatId","fullName","sendTypingRequest","getChatsPrivateStoreRequestStanza","getChatsPrivateStoreRequest","actionSetTimestampToPrivateStoreStanza","timestamp","chats","actionSetTimestampToPrivateStore","flushLastViewedToPrivateStoreStanza","rooms","opts","flushLastViewedToPrivateStore","sendMediaMessageStanza","data","sendMediaMessage","setVCardStanza","_xmppUsername","createPrivateRoomStanza","sendMessageReactionStanza","_roomJid","_reactionsList","_reactionSymbol","sendTextMessageWithTranslateTagStanza","_langSource","exports","_default"],"sourceRoot":"../../../src","sources":["networking/xmppClient.ts"],"mappings":"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","ignoreList":[]}
|