@ethora/chat-component-rn 26.5.7 → 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 +133 -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/ChatRoom.js +64 -38
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +57 -13
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +4 -2
- 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 +165 -28
- 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 +84 -39
- 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 +140 -24
- 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 +77 -47
- 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 +47 -28
- package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +49 -9
- 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 +49 -27
- 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 -14
- 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 +244 -32
- 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/normalizeRoomJid.js +20 -0
- package/lib/commonjs/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +87 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -0
- 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/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 +201 -10
- 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 +67 -0
- 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 +294 -35
- 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/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/ChatRoom.js +65 -39
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +57 -13
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +4 -2
- 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 +166 -29
- 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 +85 -40
- 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 +143 -25
- 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 +79 -49
- 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 +47 -28
- package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +51 -11
- 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 +50 -28
- 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 -15
- 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 +246 -34
- 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/normalizeRoomJid.js +15 -0
- package/lib/module/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +82 -0
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -0
- 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/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 +203 -12
- 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 +67 -1
- 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 +294 -35
- 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/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/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.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/normalizeRoomJid.d.ts +2 -0
- package/lib/typescript/helpers/normalizeRoomJid.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +42 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -0
- package/lib/typescript/hooks/useHeapSender.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.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 +33 -4
- 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/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 +4 -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/ChatRoom.tsx +81 -66
- package/src/components/MainComponents/ChatWrapper.tsx +99 -21
- package/src/components/MainComponents/MediaMessage.tsx +3 -0
- package/src/components/MainComponents/MessageContainer.tsx +4 -2
- package/src/components/MainComponents/MessageList.tsx +175 -28
- package/src/components/MainComponents/ReduxWrapper.tsx +19 -9
- package/src/components/MainComponents/SystemMessage.tsx +38 -26
- package/src/components/MessageBubble/Message.tsx +91 -62
- 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 +152 -25
- 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 +70 -58
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
- package/src/components/Modals/styledModalComponents.tsx +4 -9
- package/src/components/styled/MediaFilePreview.tsx +46 -26
- package/src/components/styled/MessageImage.tsx +58 -13
- package/src/components/styled/NewMessageLabel.tsx +8 -5
- package/src/components/styled/SendInput.tsx +64 -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 -11
- package/src/context/MessageNotificationContext.tsx +8 -8
- package/src/context/xmppProvider.tsx +247 -30
- 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/normalizeRoomJid.ts +6 -0
- package/src/hooks/useChatRoomFocus.ts +95 -0
- package/src/hooks/useHeapSender.tsx +2 -1
- package/src/hooks/useLogout.tsx +3 -3
- package/src/hooks/usePushNotifications.ts +21 -8
- package/src/hooks/useRoomState.tsx +4 -0
- package/src/hooks/useSendMessage.tsx +258 -13
- package/src/hooks/useUnreadMessagesCounter.ts +13 -16
- package/src/main.ts +1 -0
- package/src/networking/api-requests/auth.api.ts +55 -1
- 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 +317 -43
- package/src/roomStore/Middleware/unreadMidlleware.tsx +23 -5
- 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 +15 -0
- package/src/utils/installPromiseRejectionTracker.ts +91 -0
- package/src/utils/resendMessage.ts +2 -1
|
@@ -22,6 +22,8 @@ import { inviteRoomRequest } from './xmpp/inviteRoomRequest.xmpp';
|
|
|
22
22
|
import { getRooms } from './xmpp/getRooms.xmpp';
|
|
23
23
|
import { handleStanza } from './xmpp/handleStanzas.xmpp';
|
|
24
24
|
import { pushLog as devPushLog } from '../utils/devLogger';
|
|
25
|
+
import { normalizeRoomJid } from '../helpers/normalizeRoomJid';
|
|
26
|
+
import { clearOutboundSends, enqueueOutboundSend, flushOutboundSends } from './outboundQueue';
|
|
25
27
|
|
|
26
28
|
// Canonical production XMPP WSS endpoint (standard wss/443, no port suffix).
|
|
27
29
|
const DEFAULT_DEV_SERVER = 'xmpp.chat.ethora.com';
|
|
@@ -50,7 +52,25 @@ export class XmppClient {
|
|
|
50
52
|
reconnectAttempts = 0;
|
|
51
53
|
maxReconnectAttempts = 5;
|
|
52
54
|
reconnectDelay = 2000;
|
|
55
|
+
// Upper bound on the backoff delay. The old hard stop at
|
|
56
|
+
// maxReconnectAttempts gave up entirely after ~62s; now we keep retrying
|
|
57
|
+
// at a steady cadence on a long outage and just clamp the delay here.
|
|
58
|
+
maxReconnectDelay = 30000;
|
|
59
|
+
// Timestamp of the last forced reconnect so bursty external triggers
|
|
60
|
+
// (NetInfo + AppState + the provider watchdog firing together) can't
|
|
61
|
+
// spawn a reconnect storm.
|
|
62
|
+
lastReconnectAt = 0;
|
|
53
63
|
suppressReconnect = false;
|
|
64
|
+
// Tracked so close()/disconnect() can cancel a pending reconnect —
|
|
65
|
+
// otherwise a scheduleReconnect() timer fires after logout and (until
|
|
66
|
+
// suppressReconnect short-circuits it) keeps the dead instance alive.
|
|
67
|
+
reconnectTimer = null;
|
|
68
|
+
// Single-flight guard for reconnect(). Multiple triggers can fire near-
|
|
69
|
+
// simultaneously (AppState 'active' + NetInfo restore + a scheduled
|
|
70
|
+
// timer). Without this, two overlapping reconnect()s each spawn a fresh
|
|
71
|
+
// underlying client and one is leaked with its `stanza` handler still
|
|
72
|
+
// bound → duplicate stanza dispatch into redux.
|
|
73
|
+
reconnecting = false;
|
|
54
74
|
|
|
55
75
|
// Set when SASL fails with `not-authorized` (typically a stale JWT-
|
|
56
76
|
// derived XMPP password after idle). Triggers the credentialsProvider
|
|
@@ -58,6 +78,9 @@ export class XmppClient {
|
|
|
58
78
|
lastAuthError = null;
|
|
59
79
|
credentialsProvider = null;
|
|
60
80
|
credentialsRefreshInFlight = null;
|
|
81
|
+
// Fired by the provider on every 'online' so it can re-join MUC rooms
|
|
82
|
+
// after a reconnect (bug #21 — reconnected but not in the room).
|
|
83
|
+
onOnlineCallback = null;
|
|
61
84
|
|
|
62
85
|
// ---- QoS state (mirrors web XmppClient) ----------------------------
|
|
63
86
|
presencesReady = false;
|
|
@@ -88,6 +111,12 @@ export class XmppClient {
|
|
|
88
111
|
this.credentialsProvider = provider;
|
|
89
112
|
}
|
|
90
113
|
|
|
114
|
+
/** Install a callback invoked on every successful 'online'. The provider
|
|
115
|
+
* uses it to re-join MUC rooms after a reconnect. */
|
|
116
|
+
setOnOnline(cb) {
|
|
117
|
+
this.onOnlineCallback = cb;
|
|
118
|
+
}
|
|
119
|
+
|
|
91
120
|
/** Swap in fresh credentials before the next reconnect. */
|
|
92
121
|
updateCredentials(username, password) {
|
|
93
122
|
this.username = username;
|
|
@@ -246,11 +275,22 @@ export class XmppClient {
|
|
|
246
275
|
this.host = this.xmppSettings?.host || url.match(/wss:\/\/([^:/]+)/)?.[1] || '';
|
|
247
276
|
this.conference = this.xmppSettings?.conference || `conference.${this.host}`;
|
|
248
277
|
this.status = 'connecting';
|
|
278
|
+
|
|
279
|
+
// Defensive: if a previous underlying client is still referenced
|
|
280
|
+
// (initializeClient reached from a path other than reconnect()),
|
|
281
|
+
// detach its handlers before we overwrite the ref so the orphaned
|
|
282
|
+
// client can't keep dispatching stanzas into redux.
|
|
283
|
+
try {
|
|
284
|
+
this.detachEventListeners();
|
|
285
|
+
} catch {}
|
|
249
286
|
this.client = xmpp.client({
|
|
250
287
|
service: url,
|
|
251
288
|
username: walletToUsername(this.username),
|
|
252
289
|
password: this.password
|
|
253
290
|
});
|
|
291
|
+
try {
|
|
292
|
+
this.client?.reconnect?.stop?.();
|
|
293
|
+
} catch {}
|
|
254
294
|
|
|
255
295
|
// Concurrent room preloads each register their own short-lived
|
|
256
296
|
// 'stanza' handler (getHistory, getRooms, getChatsPrivateStore,
|
|
@@ -278,7 +318,18 @@ export class XmppClient {
|
|
|
278
318
|
const to = stanza?.attrs?.to || '';
|
|
279
319
|
devPushLog('xmpp', `→ ${tag}${id ? ` id=${id}` : ''}${to ? ` to=${to.split('/')[0]}` : ''}`, stanza?.toString ? stanza.toString() : undefined);
|
|
280
320
|
} catch {}
|
|
281
|
-
|
|
321
|
+
const result = origSend(stanza);
|
|
322
|
+
// Most stanza helpers fire-and-forget `client.send(...)`
|
|
323
|
+
// without awaiting/catching. On @xmpp/client builds where
|
|
324
|
+
// send() returns a Promise, a transient send failure (e.g.
|
|
325
|
+
// mid-reconnect) then surfaces as a red-screen "Uncaught (in
|
|
326
|
+
// promise, id: N)" (#4). Attach a no-op catch so the
|
|
327
|
+
// rejection is considered handled — callers that DO await/
|
|
328
|
+
// catch still get it, because we return the SAME promise.
|
|
329
|
+
if (result && typeof result.catch === 'function') {
|
|
330
|
+
result.catch(() => {});
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
282
333
|
};
|
|
283
334
|
// Property may be non-writable on some builds; defineProperty
|
|
284
335
|
// gives us a clearer error than a plain assignment.
|
|
@@ -298,14 +349,35 @@ export class XmppClient {
|
|
|
298
349
|
this.lastAuthError = 'not-authorized';
|
|
299
350
|
}
|
|
300
351
|
this.status = 'error';
|
|
352
|
+
// A connect-time failure lands in 'error', which — unlike a
|
|
353
|
+
// 'disconnect' after being online — has no other retry path
|
|
354
|
+
// (onError doesn't reschedule; the provider only reacts to
|
|
355
|
+
// 'offline'). Schedule a backoff retry so a failed initial or
|
|
356
|
+
// reconnect attempt recovers on its own. reconnect() refreshes
|
|
357
|
+
// creds first when the failure was a SASL not-authorized.
|
|
358
|
+
if (!this.suppressReconnect) {
|
|
359
|
+
try {
|
|
360
|
+
this.scheduleReconnect();
|
|
361
|
+
} catch {}
|
|
362
|
+
}
|
|
301
363
|
});
|
|
302
364
|
} catch (error) {
|
|
303
365
|
console.error('Error initializing client:', error);
|
|
304
366
|
this.status = 'error';
|
|
305
367
|
}
|
|
306
368
|
}
|
|
369
|
+
|
|
370
|
+
// Stored so detachEventListeners() can remove exactly the handlers we
|
|
371
|
+
// added (not xmpp.js's internal ones). Without this a re-login left the
|
|
372
|
+
// previous instance's `stanza` handler bound, double-dispatching every
|
|
373
|
+
// incoming stanza into the (new session's) redux store.
|
|
374
|
+
|
|
307
375
|
attachEventListeners() {
|
|
308
|
-
|
|
376
|
+
// Idempotent: drop any previously-attached handlers first so a
|
|
377
|
+
// reconnect that re-runs initializeClient on a fresh underlying
|
|
378
|
+
// client doesn't stack duplicates.
|
|
379
|
+
this.detachEventListeners();
|
|
380
|
+
this.onDisconnect = () => {
|
|
309
381
|
console.log('XMPP disconnected.');
|
|
310
382
|
this.status = 'offline';
|
|
311
383
|
try {
|
|
@@ -313,8 +385,19 @@ export class XmppClient {
|
|
|
313
385
|
// that don't reference it; tree-shaken via dead-code elim.
|
|
314
386
|
devPushLog('xmpp', 'disconnect');
|
|
315
387
|
} catch {}
|
|
316
|
-
|
|
317
|
-
|
|
388
|
+
// Self-heal at the socket level. The provider's reconnect effect
|
|
389
|
+
// keys on `client.status`, but that's a mutated class field React
|
|
390
|
+
// does NOT track — so a silent socket drop (e.g. JS paused by the
|
|
391
|
+
// debugger, iOS WebSocket suspend) never re-runs the effect and the
|
|
392
|
+
// client sits 'offline' forever (sends then queue and time out).
|
|
393
|
+
// Driving reconnect here makes recovery independent of React.
|
|
394
|
+
if (!this.suppressReconnect) {
|
|
395
|
+
try {
|
|
396
|
+
this.scheduleReconnect();
|
|
397
|
+
} catch {}
|
|
398
|
+
}
|
|
399
|
+
};
|
|
400
|
+
this.onOnline = () => {
|
|
318
401
|
console.log('XMPP online.', new Date());
|
|
319
402
|
this.status = 'online';
|
|
320
403
|
this.presencesReady = true;
|
|
@@ -322,8 +405,30 @@ export class XmppClient {
|
|
|
322
405
|
try {
|
|
323
406
|
devPushLog('xmpp', 'online', this.username);
|
|
324
407
|
} catch {}
|
|
325
|
-
|
|
326
|
-
|
|
408
|
+
// Notify the provider that the session is live again. On a RECONNECT
|
|
409
|
+
// (new stream) the client is no longer joined to any MUC, so the
|
|
410
|
+
// provider must re-send room presences — otherwise messages get a
|
|
411
|
+
// local double-tick but never reach the room (bug #21). Harmless on
|
|
412
|
+
// the first connect (room list not loaded yet → joins nothing; the
|
|
413
|
+
// bootstrap's own allRoomPresences handles that pass).
|
|
414
|
+
try {
|
|
415
|
+
this.onOnlineCallback?.();
|
|
416
|
+
} catch (err) {
|
|
417
|
+
console.warn('onOnline callback failed', err);
|
|
418
|
+
}
|
|
419
|
+
// Drain any sends that were buffered while the stream was down. The
|
|
420
|
+
// presence stanzas from onOnlineCallback above were written to the
|
|
421
|
+
// socket synchronously (allRoomPresences → presenceInRoom send the
|
|
422
|
+
// <presence> before yielding), so flushing here puts the message
|
|
423
|
+
// stanzas AFTER the joins on the same stream — XMPP's in-order
|
|
424
|
+
// per-stream processing guarantees the MUC join lands first.
|
|
425
|
+
try {
|
|
426
|
+
this.flushPendingSends();
|
|
427
|
+
} catch (err) {
|
|
428
|
+
console.warn('flushPendingSends failed', err);
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
this.onError = error => {
|
|
327
432
|
console.error('XMPP client error:', error);
|
|
328
433
|
if (isNotAuthorizedError(error)) {
|
|
329
434
|
this.lastAuthError = 'not-authorized';
|
|
@@ -331,8 +436,8 @@ export class XmppClient {
|
|
|
331
436
|
try {
|
|
332
437
|
devPushLog('xmpp', 'error', error && error.message || error);
|
|
333
438
|
} catch {}
|
|
334
|
-
}
|
|
335
|
-
this.
|
|
439
|
+
};
|
|
440
|
+
this.onStanza = stanza => {
|
|
336
441
|
try {
|
|
337
442
|
const tag = stanza?.name || 'stanza';
|
|
338
443
|
const id = stanza?.attrs?.id || '';
|
|
@@ -341,7 +446,35 @@ export class XmppClient {
|
|
|
341
446
|
devPushLog('xmpp', `← ${tag}${id ? ` id=${id}` : ''}${type ? ` type=${type}` : ''}${from ? ` from=${from.split('/')[0]}` : ''}`, stanza?.toString ? stanza.toString() : undefined);
|
|
342
447
|
} catch {}
|
|
343
448
|
handleStanza.bind(this, stanza, this)();
|
|
344
|
-
}
|
|
449
|
+
};
|
|
450
|
+
this.client.on('disconnect', this.onDisconnect);
|
|
451
|
+
this.client.on('online', this.onOnline);
|
|
452
|
+
this.client.on('error', this.onError);
|
|
453
|
+
this.client.on('stanza', this.onStanza);
|
|
454
|
+
}
|
|
455
|
+
detachEventListeners() {
|
|
456
|
+
const c = this.client;
|
|
457
|
+
if (!c?.removeListener) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
if (this.onDisconnect) {
|
|
462
|
+
c.removeListener('disconnect', this.onDisconnect);
|
|
463
|
+
}
|
|
464
|
+
if (this.onOnline) {
|
|
465
|
+
c.removeListener('online', this.onOnline);
|
|
466
|
+
}
|
|
467
|
+
if (this.onError) {
|
|
468
|
+
c.removeListener('error', this.onError);
|
|
469
|
+
}
|
|
470
|
+
if (this.onStanza) {
|
|
471
|
+
c.removeListener('stanza', this.onStanza);
|
|
472
|
+
}
|
|
473
|
+
} catch {}
|
|
474
|
+
this.onDisconnect = undefined;
|
|
475
|
+
this.onOnline = undefined;
|
|
476
|
+
this.onError = undefined;
|
|
477
|
+
this.onStanza = undefined;
|
|
345
478
|
}
|
|
346
479
|
|
|
347
480
|
/**
|
|
@@ -378,38 +511,96 @@ export class XmppClient {
|
|
|
378
511
|
if (this.suppressReconnect) {
|
|
379
512
|
return;
|
|
380
513
|
}
|
|
381
|
-
if (this.
|
|
382
|
-
console.error('Max reconnect attempts reached.');
|
|
514
|
+
if (this.reconnecting || this.reconnectTimer) {
|
|
383
515
|
return;
|
|
384
516
|
}
|
|
385
517
|
this.reconnectAttempts++;
|
|
386
|
-
const
|
|
518
|
+
const exp = Math.min(this.reconnectAttempts - 1, Math.max(0, this.maxReconnectAttempts));
|
|
519
|
+
const delay = Math.min(this.maxReconnectDelay, this.reconnectDelay * Math.pow(2, exp));
|
|
387
520
|
console.log(`Reconnecting attempt ${this.reconnectAttempts} in ${delay}ms`);
|
|
388
|
-
|
|
521
|
+
// No clearTimeout needed — the guard above guarantees no pending timer.
|
|
522
|
+
this.reconnectTimer = setTimeout(() => {
|
|
523
|
+
this.reconnectTimer = null;
|
|
524
|
+
// The connection may have recovered on its own (xmpp.js auto-
|
|
525
|
+
// reconnect) between scheduling and firing — don't tear down a
|
|
526
|
+
// healthy stream. forceReconnect() bypasses this by calling
|
|
527
|
+
// reconnect() directly.
|
|
528
|
+
if (this.status === 'online') {
|
|
529
|
+
this.reconnectAttempts = 0;
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
this.reconnect();
|
|
533
|
+
}, delay);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Force an immediate reconnect, resetting the backoff counter. Called
|
|
538
|
+
* by the provider when NetInfo reports the network came back or the app
|
|
539
|
+
* returned to the foreground — we don't want to wait out the existing
|
|
540
|
+
* exponential delay (or a maxed-out attempt count) in those cases.
|
|
541
|
+
*/
|
|
542
|
+
forceReconnect() {
|
|
543
|
+
if (this.suppressReconnect) {
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
// Debounce bursts: NetInfo restore + AppState 'active' + the provider
|
|
547
|
+
// watchdog can fire within the same instant. reconnect() dedups
|
|
548
|
+
// CONCURRENT calls, but sequential ones (one finishes, the next
|
|
549
|
+
// arrives) would still each tear down + re-create the client. Ignore
|
|
550
|
+
// forces within 2s of the last one.
|
|
551
|
+
const now = Date.now();
|
|
552
|
+
if (now - this.lastReconnectAt < 2000) {
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
this.lastReconnectAt = now;
|
|
556
|
+
if (this.reconnectTimer) {
|
|
557
|
+
clearTimeout(this.reconnectTimer);
|
|
558
|
+
this.reconnectTimer = null;
|
|
559
|
+
}
|
|
560
|
+
this.reconnectAttempts = 0;
|
|
561
|
+
this.reconnect();
|
|
389
562
|
}
|
|
390
563
|
async reconnect() {
|
|
391
564
|
if (this.suppressReconnect) {
|
|
392
565
|
return;
|
|
393
566
|
}
|
|
567
|
+
// Single-flight: ignore overlapping triggers (AppState + NetInfo +
|
|
568
|
+
// scheduled timer) so we never spawn two underlying clients and leak
|
|
569
|
+
// one with live listeners (duplicate stanza dispatch).
|
|
570
|
+
if (this.reconnecting) {
|
|
571
|
+
console.log('reconnect already in progress — skip');
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
this.reconnecting = true;
|
|
394
575
|
console.log('Attempting to reconnect xmpp client...');
|
|
576
|
+
try {
|
|
577
|
+
// If the last failure was a SASL `not-authorized` (typically a stale
|
|
578
|
+
// JWT-derived XMPP password after idle), try to fetch fresh creds
|
|
579
|
+
// before retrying. Without this, reconnect retries with the same
|
|
580
|
+
// stale password forever and the user has to kill the app.
|
|
581
|
+
if (this.lastAuthError === 'not-authorized' && this.credentialsProvider) {
|
|
582
|
+
try {
|
|
583
|
+
await this.refreshCredentialsOnce();
|
|
584
|
+
} catch (err) {
|
|
585
|
+
console.warn('XMPP credential refresh failed; reconnecting with cached creds', err);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
395
588
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
589
|
+
// Tear the OLD underlying client down FULLY before spinning up a new
|
|
590
|
+
// one: detach our handlers (so its `stanza` handler can't keep
|
|
591
|
+
// dispatching) and stop it. detachEventListeners() must run while
|
|
592
|
+
// `this.client` still points at the old client — i.e. before
|
|
593
|
+
// initializeClient() reassigns it.
|
|
594
|
+
const old = this.client;
|
|
595
|
+
if (old) {
|
|
596
|
+
this.detachEventListeners();
|
|
597
|
+
try {
|
|
598
|
+
await old.stop();
|
|
599
|
+
} catch {}
|
|
405
600
|
}
|
|
406
|
-
}
|
|
407
|
-
if (this.client) {
|
|
408
|
-
this.client.stop().finally(() => {
|
|
409
|
-
this.initializeClient();
|
|
410
|
-
});
|
|
411
|
-
} else {
|
|
412
601
|
this.initializeClient();
|
|
602
|
+
} finally {
|
|
603
|
+
this.reconnecting = false;
|
|
413
604
|
}
|
|
414
605
|
}
|
|
415
606
|
|
|
@@ -431,6 +622,13 @@ export class XmppClient {
|
|
|
431
622
|
try {
|
|
432
623
|
const fresh = await provider();
|
|
433
624
|
if (fresh?.username && fresh?.password) {
|
|
625
|
+
// Apply whatever the provider returns and retry. We do NOT try to
|
|
626
|
+
// detect "auth expired" by comparing passwords — a stable
|
|
627
|
+
// xmppPassword (e.g. deterministic from the JWT/wallet) is the
|
|
628
|
+
// NORMAL case for a transient blip, and treating it as expiry
|
|
629
|
+
// falsely bricked recoverable sessions (sending stopped). If the
|
|
630
|
+
// creds really are stale we simply get not-authorized again and
|
|
631
|
+
// retry, which is the confirmed-good 26.5.7 behaviour.
|
|
434
632
|
this.updateCredentials(fresh.username, fresh.password);
|
|
435
633
|
this.lastAuthError = null;
|
|
436
634
|
}
|
|
@@ -447,7 +645,17 @@ export class XmppClient {
|
|
|
447
645
|
return this.close();
|
|
448
646
|
}
|
|
449
647
|
async close() {
|
|
648
|
+
// Cancel any pending reconnect so a stale timer can't resurrect this
|
|
649
|
+
// instance after teardown/logout.
|
|
650
|
+
if (this.reconnectTimer) {
|
|
651
|
+
clearTimeout(this.reconnectTimer);
|
|
652
|
+
this.reconnectTimer = null;
|
|
653
|
+
}
|
|
450
654
|
if (this.client) {
|
|
655
|
+
// Detach OUR handlers first so a late stanza during the close
|
|
656
|
+
// handshake can't re-enter handleStanza and dispatch into a store
|
|
657
|
+
// that's being wiped (or, on re-login, the new session's store).
|
|
658
|
+
this.detachEventListeners();
|
|
451
659
|
try {
|
|
452
660
|
await this.client.stop();
|
|
453
661
|
console.log('XMPP client connection closed.');
|
|
@@ -456,6 +664,11 @@ export class XmppClient {
|
|
|
456
664
|
}
|
|
457
665
|
}
|
|
458
666
|
this.status = 'offline';
|
|
667
|
+
this.presencesReady = false;
|
|
668
|
+
// Permanent teardown (logout / unmount) — drop buffered sends so they
|
|
669
|
+
// don't replay into the next session. Reconnect uses old.stop(), NOT
|
|
670
|
+
// close(), so the queue still survives a transient drop+reconnect.
|
|
671
|
+
clearOutboundSends();
|
|
459
672
|
}
|
|
460
673
|
getRoomsStanza = async () => {
|
|
461
674
|
await getRooms(this.client);
|
|
@@ -470,10 +683,10 @@ export class XmppClient {
|
|
|
470
683
|
await inviteRoomRequest(this.client, to, roomJid);
|
|
471
684
|
}
|
|
472
685
|
leaveTheRoomStanza = roomJID => {
|
|
473
|
-
leaveTheRoom(roomJID, this.client);
|
|
686
|
+
leaveTheRoom(normalizeRoomJid(roomJID, this.conference), this.client);
|
|
474
687
|
};
|
|
475
688
|
presenceInRoomStanza = roomJID => {
|
|
476
|
-
presenceInRoom(this.client, roomJID);
|
|
689
|
+
presenceInRoom(this.client, normalizeRoomJid(roomJID, this.conference));
|
|
477
690
|
};
|
|
478
691
|
getHistoryStanza = async (chatJID, max, before, id, options) => {
|
|
479
692
|
if (options?.coalesceRoom) {
|
|
@@ -488,21 +701,49 @@ export class XmppClient {
|
|
|
488
701
|
return await getHistory(this.client, chatJID, max, before, id);
|
|
489
702
|
};
|
|
490
703
|
getLastMessageArchiveStanza(roomJID) {
|
|
491
|
-
getLastMessage(this.client, roomJID);
|
|
704
|
+
getLastMessage(this.client, normalizeRoomJid(roomJID, this.conference));
|
|
492
705
|
}
|
|
493
706
|
setRoomImageStanza = (roomJid, roomThumbnail, type, roomBackground) => {
|
|
494
707
|
setRoomImage(roomJid, roomThumbnail, type, this.client, roomBackground);
|
|
495
708
|
};
|
|
496
709
|
getRoomInfoStanza = roomJID => {
|
|
497
|
-
getRoomInfo(roomJID, this.client);
|
|
710
|
+
getRoomInfo(normalizeRoomJid(roomJID, this.conference), this.client);
|
|
498
711
|
};
|
|
499
712
|
getRoomMembersStanza = roomJID => {
|
|
500
|
-
getRoomMembers(roomJID, this.client);
|
|
713
|
+
getRoomMembers(normalizeRoomJid(roomJID, this.conference), this.client);
|
|
501
714
|
};
|
|
502
715
|
|
|
716
|
+
/**
|
|
717
|
+
* True when the underlying stream is live enough to actually put a
|
|
718
|
+
* stanza on the wire. Used to gate sends: when false we buffer instead
|
|
719
|
+
* of firing a fire-and-forget stanza into a dead/half-open socket
|
|
720
|
+
* (which is silently dropped and only caught by the 30s watchdog).
|
|
721
|
+
*/
|
|
722
|
+
isStreamReady() {
|
|
723
|
+
return !!this.client && this.status === 'online' && !this.reconnecting;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
/** Replay buffered sends against this (now-online) client, in order. */
|
|
727
|
+
flushPendingSends() {
|
|
728
|
+
flushOutboundSends(this, Date.now());
|
|
729
|
+
}
|
|
730
|
+
|
|
503
731
|
//messages
|
|
504
732
|
sendMessage = (roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId) => {
|
|
733
|
+
// Stream down (start race / reconnect window): buffer and replay on
|
|
734
|
+
// the next 'online' instead of losing the stanza. Returns false so
|
|
735
|
+
// callers know the send was deferred, not delivered.
|
|
736
|
+
if (!this.isStreamReady()) {
|
|
737
|
+
enqueueOutboundSend({
|
|
738
|
+
optimisticId: customId || `send-text-message-${Date.now()}`,
|
|
739
|
+
roomJID,
|
|
740
|
+
enqueuedAt: Date.now(),
|
|
741
|
+
send: c => c.sendMessage(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId)
|
|
742
|
+
});
|
|
743
|
+
return false;
|
|
744
|
+
}
|
|
505
745
|
sendTextMessage(this.client, roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, this.devServer || DEFAULT_DEV_SERVER, customId);
|
|
746
|
+
return true;
|
|
506
747
|
};
|
|
507
748
|
deleteMessageStanza(room, msgId) {
|
|
508
749
|
deleteMessage(this.client, room, msgId);
|
|
@@ -547,6 +788,19 @@ export class XmppClient {
|
|
|
547
788
|
}
|
|
548
789
|
}
|
|
549
790
|
sendMediaMessageStanza(roomJID, data, customId) {
|
|
791
|
+
// Media: the file is already uploaded by the time we get here; only the
|
|
792
|
+
// stanza needs the stream. Buffer + replay on reconnect if it's down so
|
|
793
|
+
// the upload isn't wasted (otherwise the stanza is lost and the media
|
|
794
|
+
// bubble sits pending until the 30s watchdog fails it).
|
|
795
|
+
if (!this.isStreamReady()) {
|
|
796
|
+
enqueueOutboundSend({
|
|
797
|
+
optimisticId: customId || `send-media-message-${Date.now()}`,
|
|
798
|
+
roomJID,
|
|
799
|
+
enqueuedAt: Date.now(),
|
|
800
|
+
send: c => c.sendMediaMessageStanza(roomJID, data, customId)
|
|
801
|
+
});
|
|
802
|
+
return undefined;
|
|
803
|
+
}
|
|
550
804
|
return sendMediaMessage(this.client, roomJID, data, customId, this.devServer || DEFAULT_DEV_SERVER);
|
|
551
805
|
}
|
|
552
806
|
|
|
@@ -568,9 +822,14 @@ export class XmppClient {
|
|
|
568
822
|
sendMessageReactionStanza(_messageId, _roomJid, _reactionsList, _reactionSymbol) {
|
|
569
823
|
console.warn('sendMessageReactionStanza: not implemented in RN xmpp client');
|
|
570
824
|
}
|
|
571
|
-
sendTextMessageWithTranslateTagStanza(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, _langSource) {
|
|
825
|
+
sendTextMessageWithTranslateTagStanza(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, _langSource, customId) {
|
|
572
826
|
// No translate tag support yet — fall back to a regular text send.
|
|
573
|
-
|
|
827
|
+
// Forward the caller's customId so the optimistic message (heap/redux)
|
|
828
|
+
// reconciles with the server echo. Without it, translated sends went
|
|
829
|
+
// out with no client id → the echo carried a server-assigned id and
|
|
830
|
+
// surfaced as a stuck-pending message PLUS a duplicate (affected both
|
|
831
|
+
// the live translated-send path and resend).
|
|
832
|
+
this.sendMessage(roomJID, firstName, lastName, photo, walletAddress, userMessage, notDisplayedValue, isReply, showInChannel, mainMessage, customId);
|
|
574
833
|
}
|
|
575
834
|
}
|
|
576
835
|
export default XmppClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["xmpp","walletToUsername","sendMediaMessage","getChatsPrivateStoreRequest","actionSetTimestampToPrivateStore","flushLastViewedToPrivateStore","sendTypingRequest","getHistory","sendTextMessage","deleteMessage","presenceInRoom","getLastMessage","createRoom","setRoomImage","getRoomMembers","getRoomInfo","leaveTheRoom","editMessage","inviteRoomRequest","getRooms","handleStanza","pushLog","devPushLog","DEFAULT_DEV_SERVER","isNotAuthorizedError","err","condition","name","type","error","includes","message","text","toString","test","XmppClient","host","service","conference","status","password","reconnectAttempts","maxReconnectAttempts","reconnectDelay","suppressReconnect","lastAuthError","credentialsProvider","credentialsRefreshInFlight","presencesReady","disableLastRead","activeRoomJID","activeRoomBoostUntil","softPauseUntil","mamInFlightByRoom","Map","maxInFlightHistory","softPauseAfterSendMs","activeRoomBoostTtlMs","alwaysPrioritizeActiveRoom","checkOnline","client","setCredentialsProvider","provider","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","cur","delete","set","startedAt","s","url","match","setMaxListeners","origSend","send","bind","wrapped","stanza","tag","attrs","to","split","undefined","Object","defineProperty","value","writable","configurable","console","warn","attachEventListeners","start","catch","on","log","from","waitForOnline","timeoutMs","resolve","reject","tick","Error","ensureConnected","timeout","scheduleReconnect","delay","Math","pow","reconnect","refreshCredentialsOnce","stop","finally","fresh","disconnect","options","close","getRoomsStanza","createRoomStanza","title","description","inviteRoomRequestStanza","roomJid","leaveTheRoomStanza","getHistoryStanza","coalesceRoom","getLastMessageArchiveStanza","setRoomImageStanza","roomThumbnail","roomBackground","getRoomInfoStanza","getRoomMembersStanza","sendMessage","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","deleteMessageStanza","room","msgId","editMessageStanza","sendTypingRequestStanza","chatId","fullName","getChatsPrivateStoreRequestStanza","actionSetTimestampToPrivateStoreStanza","timestamp","chats","flushLastViewedToPrivateStoreStanza","rooms","opts","sendMediaMessageStanza","data","setVCardStanza","_xmppUsername","createPrivateRoomStanza","result","sendMessageReactionStanza","_roomJid","_reactionsList","_reactionSymbol","sendTextMessageWithTranslateTagStanza","_langSource"],"sourceRoot":"../../../src","sources":["networking/xmppClient.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["xmpp","walletToUsername","sendMediaMessage","getChatsPrivateStoreRequest","actionSetTimestampToPrivateStore","flushLastViewedToPrivateStore","sendTypingRequest","getHistory","sendTextMessage","deleteMessage","presenceInRoom","getLastMessage","createRoom","setRoomImage","getRoomMembers","getRoomInfo","leaveTheRoom","editMessage","inviteRoomRequest","getRooms","handleStanza","pushLog","devPushLog","normalizeRoomJid","clearOutboundSends","enqueueOutboundSend","flushOutboundSends","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","cur","delete","set","startedAt","s","url","match","detachEventListeners","reconnect","stop","setMaxListeners","origSend","send","bind","wrapped","stanza","tag","attrs","to","split","undefined","result","catch","Object","defineProperty","value","writable","configurable","console","warn","attachEventListeners","start","scheduleReconnect","onDisconnect","log","onOnline","flushPendingSends","onError","onStanza","from","on","c","removeListener","waitForOnline","timeoutMs","resolve","reject","tick","Error","ensureConnected","timeout","exp","Math","min","delay","pow","forceReconnect","clearTimeout","refreshCredentialsOnce","old","fresh","disconnect","options","close","getRoomsStanza","createRoomStanza","title","description","inviteRoomRequestStanza","roomJid","leaveTheRoomStanza","getHistoryStanza","coalesceRoom","getLastMessageArchiveStanza","setRoomImageStanza","roomThumbnail","roomBackground","getRoomInfoStanza","getRoomMembersStanza","isStreamReady","sendMessage","firstName","lastName","photo","walletAddress","userMessage","notDisplayedValue","isReply","showInChannel","mainMessage","customId","optimisticId","enqueuedAt","deleteMessageStanza","room","msgId","editMessageStanza","sendTypingRequestStanza","chatId","fullName","getChatsPrivateStoreRequestStanza","actionSetTimestampToPrivateStoreStanza","timestamp","chats","flushLastViewedToPrivateStoreStanza","rooms","opts","sendMediaMessageStanza","data","setVCardStanza","_xmppUsername","createPrivateRoomStanza","sendMessageReactionStanza","_roomJid","_reactionsList","_reactionSymbol","sendTextMessageWithTranslateTagStanza","_langSource"],"sourceRoot":"../../../src","sources":["networking/xmppClient.ts"],"mappings":"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","ignoreList":[]}
|