@ethora/chat-component-rn 26.5.7 → 26.5.11
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 +191 -0
- package/README.md +95 -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 +31 -16
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +78 -38
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +74 -27
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +16 -11
- 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/InteractionsOverlay.js +119 -0
- package/lib/commonjs/components/MessageBubble/InteractionsOverlay.js.map +1 -0
- package/lib/commonjs/components/MessageBubble/Message.js +122 -41
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +132 -44
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +155 -52
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.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 +144 -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/ModalHeaderComponent.js +10 -0
- package/lib/commonjs/components/Modals/ModalHeaderComponent.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 +17 -13
- 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/StyledComponents.js +6 -3
- package/lib/commonjs/components/styled/StyledComponents.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 +81 -16
- 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/mimeToExtension.js +56 -0
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- 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 +36 -11
- 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/api-requests/rooms.api.js +29 -4
- package/lib/commonjs/networking/api-requests/rooms.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/ChatHeader.js +31 -16
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +80 -40
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +74 -27
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +17 -12
- 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/InteractionsOverlay.js +112 -0
- package/lib/module/components/MessageBubble/InteractionsOverlay.js.map +1 -0
- package/lib/module/components/MessageBubble/Message.js +123 -42
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +134 -46
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +155 -52
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -5
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.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 +148 -26
- 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/ModalHeaderComponent.js +10 -0
- package/lib/module/components/Modals/ModalHeaderComponent.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 +17 -13
- 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/StyledComponents.js +6 -3
- package/lib/module/components/styled/StyledComponents.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 +82 -17
- 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/mimeToExtension.js +55 -0
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- 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 +36 -11
- 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/api-requests/rooms.api.js +29 -4
- package/lib/module/networking/api-requests/rooms.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/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/InteractionsOverlay.d.ts +13 -0
- package/lib/typescript/components/MessageBubble/InteractionsOverlay.d.ts.map +1 -0
- 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/ChatProfileModal/ChatProfileModal.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/ModalHeaderComponent.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/StyledComponents.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 +8 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- 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/useLogout.d.ts +23 -1
- package/lib/typescript/hooks/useLogout.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/api-requests/rooms.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 +20 -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 +23 -4
- package/src/assets/icons.tsx +23 -14
- package/src/components/ContextMenu/ContextMenuComponents.tsx +10 -5
- package/src/components/MainComponents/ChatHeader.tsx +46 -15
- package/src/components/MainComponents/ChatRoom.tsx +95 -66
- package/src/components/MainComponents/ChatWrapper.tsx +127 -42
- package/src/components/MainComponents/MediaMessage.tsx +14 -8
- 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/InteractionsOverlay.tsx +121 -0
- package/src/components/MessageBubble/Message.tsx +133 -63
- package/src/components/MessageBubble/MessageInteractions.tsx +146 -58
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +146 -39
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +25 -3
- package/src/components/Modals/FilePreviewModal/DocumentViewer.tsx +93 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +161 -26
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +32 -4
- package/src/components/Modals/Modal/Modal.tsx +4 -1
- package/src/components/Modals/ModalHeaderComponent.tsx +8 -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 +17 -13
- 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/StyledComponents.ts +6 -3
- 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 +76 -12
- 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/mimeToExtension.ts +64 -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 +36 -13
- 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/api-requests/rooms.api.ts +31 -7
- 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 +31 -0
- package/src/utils/installPromiseRejectionTracker.ts +91 -0
- package/src/utils/resendMessage.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dateComparison","require","deepMerge","target","source","key","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","pending","newMessageDate","date","lastMessage","length","firstMessage","isDateAfter","toString","index","push","some","delimiterIndex","splice","
|
|
1
|
+
{"version":3,"names":["_dateComparison","require","deepMerge","target","source","key","Array","isArray","insertMessageWithDelimiter","roomMessages","message","lastViewedTimestamp","existingIndex","findIndex","msg","id","xmppId","existing","preservedUserId","user","merged","pending","newMessageDate","date","lastMessage","length","firstMessage","isDateAfter","toString","index","push","some","delimiterIndex","splice","name","undefined","token","refreshToken","Date","body","roomJid","isDateBefore","unshift","i"],"sourceRoot":"../../../src","sources":["helpers/insertMessageWithDelimiter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getKeyboardVerticalOffset = exports.getInputDockPaddingBottom = void 0;
|
|
7
|
+
const getKeyboardVerticalOffset = ({
|
|
8
|
+
platform,
|
|
9
|
+
configuredOffset = 0,
|
|
10
|
+
bottomInset = 0
|
|
11
|
+
}) => configuredOffset + (platform === 'ios' ? bottomInset : 0);
|
|
12
|
+
exports.getKeyboardVerticalOffset = getKeyboardVerticalOffset;
|
|
13
|
+
const getInputDockPaddingBottom = ({
|
|
14
|
+
platform,
|
|
15
|
+
bottomInset = 0
|
|
16
|
+
}) => platform === 'ios' ? bottomInset : 0;
|
|
17
|
+
exports.getInputDockPaddingBottom = getInputDockPaddingBottom;
|
|
18
|
+
//# sourceMappingURL=keyboardLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getKeyboardVerticalOffset","platform","configuredOffset","bottomInset","exports","getInputDockPaddingBottom"],"sourceRoot":"../../../src","sources":["helpers/keyboardLayout.ts"],"mappings":";;;;;;AAMO,MAAMA,yBAAyB,GAAGA,CAAC;EACxCC,QAAQ;EACRC,gBAAgB,GAAG,CAAC;EACpBC,WAAW,GAAG;AACI,CAAC,KACnBD,gBAAgB,IAAID,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAJ,yBAAA,GAAAA,yBAAA;AAErD,MAAMK,yBAAyB,GAAGA,CAAC;EACxCJ,QAAQ;EACRE,WAAW,GAAG;AAC8B,CAAC,KAC7CF,QAAQ,KAAK,KAAK,GAAGE,WAAW,GAAG,CAAC;AAACC,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fitMediaDimensions = exports.defaultMediaDims = exports.MEDIA_MAX_W = exports.MEDIA_MAX_H = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
// Shared sizing for inline media bubbles (images + video posters).
|
|
9
|
+
// Goal: show the media UNCROPPED, just scaled, preserving aspect ratio —
|
|
10
|
+
// portrait stays portrait, landscape stays landscape.
|
|
11
|
+
const screenW = _reactNative.Dimensions.get('window').width;
|
|
12
|
+
|
|
13
|
+
// Box the media must fit inside. Width adapts to the screen so it never
|
|
14
|
+
// blows past the bubble's max-width on small phones, but caps on tablets.
|
|
15
|
+
const MEDIA_MAX_W = exports.MEDIA_MAX_W = Math.min(260, Math.round(screenW * 0.64));
|
|
16
|
+
const MEDIA_MAX_H = exports.MEDIA_MAX_H = 320;
|
|
17
|
+
// Keep thumbnails from collapsing into a sliver (very wide/tall media).
|
|
18
|
+
const MEDIA_MIN_W = 140;
|
|
19
|
+
const MEDIA_MIN_H = 120;
|
|
20
|
+
// Neutral 4:3 placeholder used before the natural size is known.
|
|
21
|
+
const defaultMediaDims = () => ({
|
|
22
|
+
width: MEDIA_MAX_W,
|
|
23
|
+
height: Math.round(MEDIA_MAX_W * 0.75)
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// Fit (natW × natH) inside the box, preserving aspect ratio. Never
|
|
27
|
+
// upscales beyond the source resolution (avoids blur), but bumps very
|
|
28
|
+
// small media up to a sensible minimum so it stays tappable.
|
|
29
|
+
exports.defaultMediaDims = defaultMediaDims;
|
|
30
|
+
const fitMediaDimensions = (natW, natH) => {
|
|
31
|
+
if (!natW || !natH) {
|
|
32
|
+
return defaultMediaDims();
|
|
33
|
+
}
|
|
34
|
+
let scale = Math.min(MEDIA_MAX_W / natW, MEDIA_MAX_H / natH);
|
|
35
|
+
if (scale > 1) {
|
|
36
|
+
scale = 1;
|
|
37
|
+
}
|
|
38
|
+
let width = Math.round(natW * scale);
|
|
39
|
+
let height = Math.round(natH * scale);
|
|
40
|
+
if (width < MEDIA_MIN_W || height < MEDIA_MIN_H) {
|
|
41
|
+
const up = Math.max(MEDIA_MIN_W / width, MEDIA_MIN_H / height);
|
|
42
|
+
width = Math.min(MEDIA_MAX_W, Math.round(width * up));
|
|
43
|
+
height = Math.min(MEDIA_MAX_H, Math.round(height * up));
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
width,
|
|
47
|
+
height
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
exports.fitMediaDimensions = fitMediaDimensions;
|
|
51
|
+
//# sourceMappingURL=mediaDimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","screenW","Dimensions","get","width","MEDIA_MAX_W","exports","Math","min","round","MEDIA_MAX_H","MEDIA_MIN_W","MEDIA_MIN_H","defaultMediaDims","height","fitMediaDimensions","natW","natH","scale","up","max"],"sourceRoot":"../../../src","sources":["helpers/mediaDimensions.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA,MAAMC,OAAO,GAAGC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK;;AAE9C;AACA;AACO,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGE,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACE,KAAK,CAACR,OAAO,GAAG,IAAI,CAAC,CAAC;AAC7D,MAAMS,WAAW,GAAAJ,OAAA,CAAAI,WAAA,GAAG,GAAG;AAC9B;AACA,MAAMC,WAAW,GAAG,GAAG;AACvB,MAAMC,WAAW,GAAG,GAAG;AAOvB;AACO,MAAMC,gBAAgB,GAAGA,CAAA,MAAkB;EAChDT,KAAK,EAAEC,WAAW;EAClBS,MAAM,EAAEP,IAAI,CAACE,KAAK,CAACJ,WAAW,GAAG,IAAI;AACvC,CAAC,CAAC;;AAEF;AACA;AACA;AAAAC,OAAA,CAAAO,gBAAA,GAAAA,gBAAA;AACO,MAAME,kBAAkB,GAAGA,CAACC,IAAY,EAAEC,IAAY,KAAgB;EAC3E,IAAI,CAACD,IAAI,IAAI,CAACC,IAAI,EAAE;IAClB,OAAOJ,gBAAgB,CAAC,CAAC;EAC3B;EACA,IAAIK,KAAK,GAAGX,IAAI,CAACC,GAAG,CAACH,WAAW,GAAGW,IAAI,EAAEN,WAAW,GAAGO,IAAI,CAAC;EAC5D,IAAIC,KAAK,GAAG,CAAC,EAAE;IACbA,KAAK,GAAG,CAAC;EACX;EACA,IAAId,KAAK,GAAGG,IAAI,CAACE,KAAK,CAACO,IAAI,GAAGE,KAAK,CAAC;EACpC,IAAIJ,MAAM,GAAGP,IAAI,CAACE,KAAK,CAACQ,IAAI,GAAGC,KAAK,CAAC;EAErC,IAAId,KAAK,GAAGO,WAAW,IAAIG,MAAM,GAAGF,WAAW,EAAE;IAC/C,MAAMO,EAAE,GAAGZ,IAAI,CAACa,GAAG,CAACT,WAAW,GAAGP,KAAK,EAAEQ,WAAW,GAAGE,MAAM,CAAC;IAC9DV,KAAK,GAAGG,IAAI,CAACC,GAAG,CAACH,WAAW,EAAEE,IAAI,CAACE,KAAK,CAACL,KAAK,GAAGe,EAAE,CAAC,CAAC;IACrDL,MAAM,GAAGP,IAAI,CAACC,GAAG,CAACE,WAAW,EAAEH,IAAI,CAACE,KAAK,CAACK,MAAM,GAAGK,EAAE,CAAC,CAAC;EACzD;EACA,OAAO;IAAEf,KAAK;IAAEU;EAAO,CAAC;AAC1B,CAAC;AAACR,OAAA,CAAAS,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.deriveDisplayFilename = deriveDisplayFilename;
|
|
|
7
7
|
exports.ensureFilenameHasExtension = ensureFilenameHasExtension;
|
|
8
8
|
exports.filenameFromUrl = filenameFromUrl;
|
|
9
9
|
exports.getExtensionForMime = getExtensionForMime;
|
|
10
|
+
exports.isLikelyAudio = isLikelyAudio;
|
|
10
11
|
// MIME → file extension table for download/preview filename fallbacks.
|
|
11
12
|
// Centralized so FilePreviewModal, MediaMessage, and any future media
|
|
12
13
|
// surface share one source of truth. Keep additions sorted by category.
|
|
@@ -66,6 +67,61 @@ const MIME_TO_EXT = {
|
|
|
66
67
|
};
|
|
67
68
|
const VALID_EXT_RE = /\.[a-z0-9]{1,8}$/i;
|
|
68
69
|
|
|
70
|
+
// Audio file extensions we recognise across the SDK. Used for the
|
|
71
|
+
// "looks like audio even when the mimetype is application/octet-stream"
|
|
72
|
+
// heuristic in MediaMessage / FilePreviewModal. Voice-message senders
|
|
73
|
+
// (web app, push voice memos) sometimes ship audio as octet-stream with
|
|
74
|
+
// no audio mime — sniffing the extension lets us still play it.
|
|
75
|
+
// `.bin` is intentionally NOT here: it's our own fallback extension for
|
|
76
|
+
// truly unknown payloads (see getExtensionForMime), not a real format.
|
|
77
|
+
const AUDIO_EXTENSIONS = ['.mp3', '.m4a', '.wav', '.aac', '.ogg', '.flac', '.weba', '.webm', '.opus', '.amr', '.3gp', '.3gpp'];
|
|
78
|
+
const AUDIO_EXT_RE = new RegExp(`(${AUDIO_EXTENSIONS.map(e => e.replace('.', '\\.')).join('|')})$`, 'i');
|
|
79
|
+
// Filename / URL substrings that strongly indicate a voice / audio
|
|
80
|
+
// payload even without an explicit audio extension — e.g. a web-app
|
|
81
|
+
// voicemail uploaded as application/octet-stream named "voicemail-…".
|
|
82
|
+
const AUDIO_NAME_HINT_RE = /(?:^|[_\-./])(voice|voicemail|audio|audio-message|audiomessage|recording|voice-?note)(?:[_\-./]|$)/i;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Returns true when the (mime, fileName, url) triple looks like an
|
|
86
|
+
* audio payload — either by mime, by recognised extension on the
|
|
87
|
+
* filename or URL path, or by a voice-message naming hint. The hint
|
|
88
|
+
* branch is what catches voicemails sent as `application/octet-stream`
|
|
89
|
+
* with a generic `.bin` filename (customer-reported #9 voicemail).
|
|
90
|
+
*/
|
|
91
|
+
function isLikelyAudio(mime, fileName, url) {
|
|
92
|
+
const m = (mime || '').toLowerCase();
|
|
93
|
+
if (m.startsWith('audio/')) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
// For octet-stream (and any other non-audio mime) fall through to the
|
|
97
|
+
// filename / URL heuristics. We don't restrict to octet-stream — some
|
|
98
|
+
// backends send no mime at all, or send text/plain by accident.
|
|
99
|
+
const name = (fileName || '').toLowerCase();
|
|
100
|
+
const urlLast = filenameFromUrl(url).toLowerCase();
|
|
101
|
+
if (AUDIO_EXT_RE.test(name) || AUDIO_EXT_RE.test(urlLast)) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
// Last resort: voice-message naming hint anywhere in the filename, the
|
|
105
|
+
// URL's last segment, OR the URL's full path. Voicemails are commonly
|
|
106
|
+
// hosted under `/voice/abc-123` or `/voicemail/abc-123` where the last
|
|
107
|
+
// segment is an opaque id with no hint by itself.
|
|
108
|
+
const urlPath = (() => {
|
|
109
|
+
if (!url) {
|
|
110
|
+
return '';
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const noQuery = url.split('?')[0].split('#')[0];
|
|
114
|
+
return decodeURIComponent(noQuery).toLowerCase();
|
|
115
|
+
} catch {
|
|
116
|
+
return '';
|
|
117
|
+
}
|
|
118
|
+
})();
|
|
119
|
+
if (AUDIO_NAME_HINT_RE.test(name) || AUDIO_NAME_HINT_RE.test(urlLast) || AUDIO_NAME_HINT_RE.test(urlPath)) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
|
|
69
125
|
/**
|
|
70
126
|
* Returns the conventional extension (including the leading dot) for a
|
|
71
127
|
* MIME type, or `.bin` as a last-resort fallback so callers never end up
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","
|
|
1
|
+
{"version":3,"names":["MIME_TO_EXT","VALID_EXT_RE","AUDIO_EXTENSIONS","AUDIO_EXT_RE","RegExp","map","e","replace","join","AUDIO_NAME_HINT_RE","isLikelyAudio","mime","fileName","url","m","toLowerCase","startsWith","name","urlLast","filenameFromUrl","test","urlPath","noQuery","split","decodeURIComponent","getExtensionForMime","normalized","trim","last","pop","ensureFilenameHasExtension","base","Date","now","deriveDisplayFilename","opts","candidate","originalName"],"sourceRoot":"../../../src","sources":["helpers/mimeToExtension.ts"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;;AAEA,MAAMA,WAAmC,GAAG;EAC1C;EACA,YAAY,EAAE,MAAM;EACpB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,MAAM;EACnB,YAAY,EAAE,OAAO;EACrB,YAAY,EAAE,OAAO;EACrB,YAAY,EAAE,OAAO;EACrB,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,MAAM;EACvB,YAAY,EAAE,OAAO;EAErB;EACA,WAAW,EAAE,MAAM;EACnB,iBAAiB,EAAE,MAAM;EACzB,aAAa,EAAE,MAAM;EACrB,YAAY,EAAE,OAAO;EACrB,YAAY,EAAE,MAAM;EACpB,kBAAkB,EAAE,MAAM;EAC1B,YAAY,EAAE,OAAO;EAErB;EACA,YAAY,EAAE,MAAM;EACpB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,MAAM;EACrB,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,MAAM;EACrB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,MAAM;EACnB,YAAY,EAAE,OAAO;EACrB,YAAY,EAAE,OAAO;EAErB;EACA,iBAAiB,EAAE,MAAM;EACzB,oBAAoB,EAAE,MAAM;EAC5B,yEAAyE,EACvE,OAAO;EACT,0BAA0B,EAAE,MAAM;EAClC,mEAAmE,EAAE,OAAO;EAC5E,+BAA+B,EAAE,MAAM;EACvC,2EAA2E,EACzE,OAAO;EACT,YAAY,EAAE,MAAM;EACpB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO;EACpB,kBAAkB,EAAE,OAAO;EAC3B,iBAAiB,EAAE,MAAM;EACzB,UAAU,EAAE,MAAM;EAClB,iBAAiB,EAAE,MAAM;EAEzB;EACA,iBAAiB,EAAE,MAAM;EACzB,8BAA8B,EAAE,MAAM;EACtC,6BAA6B,EAAE,KAAK;EACpC,kBAAkB,EAAE,KAAK;EACzB,mBAAmB,EAAE;AACvB,CAAC;AAED,MAAMC,YAAY,GAAG,mBAAmB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,CACvB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAC1C;AACV,MAAMC,YAAY,GAAG,IAAIC,MAAM,CAC7B,IAAIF,gBAAgB,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,IAAI,EACpE,GACF,CAAC;AACD;AACA;AACA;AACA,MAAMC,kBAAkB,GACtB,qGAAqG;;AAEvG;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAC3BC,IAA+B,EAC/BC,QAAwB,EACxBC,GAAmB,EACV;EACT,MAAMC,CAAC,GAAG,CAACH,IAAI,IAAI,EAAE,EAAEI,WAAW,CAAC,CAAC;EACpC,IAAID,CAAC,CAACE,UAAU,CAAC,QAAQ,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EACzC;EACA;EACA;EACA,MAAMC,IAAI,GAAG,CAACL,QAAQ,IAAI,EAAE,EAAEG,WAAW,CAAC,CAAC;EAC3C,MAAMG,OAAO,GAAGC,eAAe,CAACN,GAAG,CAAC,CAACE,WAAW,CAAC,CAAC;EAClD,IAAIZ,YAAY,CAACiB,IAAI,CAACH,IAAI,CAAC,IAAId,YAAY,CAACiB,IAAI,CAACF,OAAO,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EACxE;EACA;EACA;EACA;EACA,MAAMG,OAAO,GAAG,CAAC,MAAM;IACrB,IAAI,CAACR,GAAG,EAAE;MAAC,OAAO,EAAE;IAAC;IACrB,IAAI;MACF,MAAMS,OAAO,GAAGT,GAAG,CAACU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE;MACjD,OAAOC,kBAAkB,CAACF,OAAO,CAAC,CAACP,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,MAAM;MACN,OAAO,EAAE;IACX;EACF,CAAC,EAAE,CAAC;EACJ,IACEN,kBAAkB,CAACW,IAAI,CAACH,IAAI,CAAC,IAC7BR,kBAAkB,CAACW,IAAI,CAACF,OAAO,CAAC,IAChCT,kBAAkB,CAACW,IAAI,CAACC,OAAO,CAAC,EAChC;IACA,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASI,mBAAmBA,CAACd,IAA+B,EAAU;EAC3E,IAAI,CAACA,IAAI,EAAE;IAAC,OAAO,MAAM;EAAC;EAC1B,MAAMe,UAAU,GAAGf,IAAI,CAACI,WAAW,CAAC,CAAC,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAEI,IAAI,CAAC,CAAC;EAC3D,OAAO3B,WAAW,CAAC0B,UAAU,CAAC,IAAI,MAAM;AAC1C;;AAEA;AACA;AACA;AACA;AACO,SAASP,eAAeA,CAACN,GAA8B,EAAU;EACtE,IAAI,CAACA,GAAG,EAAE;IAAC,OAAO,EAAE;EAAC;EACrB,IAAI;IACF;IACA;IACA,MAAMS,OAAO,GAAGT,GAAG,CAACU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE;IACjD,MAAMK,IAAI,GAAGN,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAACM,GAAG,CAAC,CAAC,IAAI,EAAE;IAC3C,OAAOL,kBAAkB,CAACI,IAAI,CAAC;EACjC,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,0BAA0BA,CACxClB,QAAmC,EACnCD,IAA+B,EACvB;EACR,MAAMoB,IAAI,GACPnB,QAAQ,IAAIA,QAAQ,CAACe,IAAI,CAAC,CAAC,IAAK,SAASK,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;EACxD,IAAIhC,YAAY,CAACmB,IAAI,CAACW,IAAI,CAAC,EAAE;IAAC,OAAOA,IAAI;EAAC;EAC1C,OAAO,GAAGA,IAAI,GAAGN,mBAAmB,CAACd,IAAI,CAAC,EAAE;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASuB,qBAAqBA,CAACC,IAKrC,EAAU;EACT,MAAMC,SAAS,GACZD,IAAI,CAACvB,QAAQ,IAAIuB,IAAI,CAACvB,QAAQ,CAACe,IAAI,CAAC,CAAC,IACrCQ,IAAI,CAACE,YAAY,IAAIF,IAAI,CAACE,YAAY,CAACV,IAAI,CAAC,CAAE,IAC/CR,eAAe,CAACgB,IAAI,CAACtB,GAAG,CAAC,IACzB,EAAE;EACJ,OAAOiB,0BAA0B,CAACM,SAAS,EAAED,IAAI,CAACxB,IAAI,CAAC;AACzD","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.normalizeRoomJid = void 0;
|
|
7
|
+
const normalizeRoomJid = (roomJID, conference) => {
|
|
8
|
+
if (!roomJID) {
|
|
9
|
+
return roomJID;
|
|
10
|
+
}
|
|
11
|
+
if (roomJID.includes('@')) {
|
|
12
|
+
return roomJID;
|
|
13
|
+
}
|
|
14
|
+
if (!conference) {
|
|
15
|
+
return roomJID;
|
|
16
|
+
}
|
|
17
|
+
return `${roomJID}@${conference}`;
|
|
18
|
+
};
|
|
19
|
+
exports.normalizeRoomJid = normalizeRoomJid;
|
|
20
|
+
//# sourceMappingURL=normalizeRoomJid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["normalizeRoomJid","roomJID","conference","includes","exports"],"sourceRoot":"../../../src","sources":["helpers/normalizeRoomJid.ts"],"mappings":";;;;;;AAAO,MAAMA,gBAAgB,GAAGA,CAACC,OAAe,EAAEC,UAAmB,KAAK;EACxE,IAAI,CAACD,OAAO,EAAE;IAAC,OAAOA,OAAO;EAAC;EAC9B,IAAIA,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;IAAC,OAAOF,OAAO;EAAC;EAC3C,IAAI,CAACC,UAAU,EAAE;IAAC,OAAOD,OAAO;EAAC;EACjC,OAAO,GAAGA,OAAO,IAAIC,UAAU,EAAE;AACnC,CAAC;AAACE,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useChatRoomFocus = exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactRedux = require("react-redux");
|
|
9
|
+
var _roomsSlice = require("../roomStore/roomsSlice");
|
|
10
|
+
var _roomStore = require("../roomStore");
|
|
11
|
+
/**
|
|
12
|
+
* Public hook for consumers embedding `<ChatRoom>` inside a tab-based
|
|
13
|
+
* navigator. Mirrors the mount/unmount unread-tracking that ChatRoom
|
|
14
|
+
* does internally — but driven by an explicit focus signal so the
|
|
15
|
+
* unread counter behaves correctly when the chat tab is not focused
|
|
16
|
+
* but the component is still mounted.
|
|
17
|
+
*
|
|
18
|
+
* Without this hook, `useUnread()` will always return 0 for the chat
|
|
19
|
+
* room because the SDK assumes "mounted == active". With this hook,
|
|
20
|
+
* focus marks the room visible (clearing the badge) and blur stamps
|
|
21
|
+
* `lastViewedTimestamp = Date.now()` so future messages count as unread.
|
|
22
|
+
*
|
|
23
|
+
* Usage with React Navigation:
|
|
24
|
+
*
|
|
25
|
+
* ```tsx
|
|
26
|
+
* import { useIsFocused } from '@react-navigation/native';
|
|
27
|
+
*
|
|
28
|
+
* function ChatTab() {
|
|
29
|
+
* const isFocused = useIsFocused();
|
|
30
|
+
* useChatRoomFocus({ roomJID: 'general@conference.host', isFocused });
|
|
31
|
+
* return <Chat config={...} />;
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Bug #18-adjacent / unread-tracking bug from sdk-bug-tracker.md.
|
|
36
|
+
*/
|
|
37
|
+
const useChatRoomFocus = ({
|
|
38
|
+
roomJID,
|
|
39
|
+
isFocused
|
|
40
|
+
}) => {
|
|
41
|
+
const dispatch = (0, _reactRedux.useDispatch)();
|
|
42
|
+
const prevRef = (0, _react.useRef)({
|
|
43
|
+
roomJID: null,
|
|
44
|
+
isFocused: false
|
|
45
|
+
});
|
|
46
|
+
const leaveRoom = jid => {
|
|
47
|
+
const timestamp = Date.now();
|
|
48
|
+
dispatch((0, _roomsSlice.setLastViewedTimestamp)({
|
|
49
|
+
chatJID: jid,
|
|
50
|
+
timestamp
|
|
51
|
+
}));
|
|
52
|
+
dispatch((0, _roomsSlice.clearVisibleRoom)());
|
|
53
|
+
const rooms = _roomStore.store.getState().rooms?.rooms;
|
|
54
|
+
_roomStore.store.getState().chatSettingStore?.client?.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
55
|
+
visibleRoomJID: jid
|
|
56
|
+
}).catch(() => {});
|
|
57
|
+
};
|
|
58
|
+
(0, _react.useEffect)(() => {
|
|
59
|
+
const prev = prevRef.current;
|
|
60
|
+
if (prev.isFocused && prev.roomJID && (prev.roomJID !== roomJID || !isFocused)) {
|
|
61
|
+
leaveRoom(prev.roomJID);
|
|
62
|
+
}
|
|
63
|
+
if (roomJID && isFocused) {
|
|
64
|
+
dispatch((0, _roomsSlice.setCurrentRoom)({
|
|
65
|
+
roomJID
|
|
66
|
+
}));
|
|
67
|
+
dispatch((0, _roomsSlice.setVisibleRoom)({
|
|
68
|
+
roomJID
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
prevRef.current = {
|
|
72
|
+
roomJID: roomJID || null,
|
|
73
|
+
isFocused
|
|
74
|
+
};
|
|
75
|
+
}, [roomJID, isFocused, dispatch]);
|
|
76
|
+
(0, _react.useEffect)(() => {
|
|
77
|
+
return () => {
|
|
78
|
+
const prev = prevRef.current;
|
|
79
|
+
if (prev.isFocused && prev.roomJID) {
|
|
80
|
+
leaveRoom(prev.roomJID);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}, []);
|
|
84
|
+
};
|
|
85
|
+
exports.useChatRoomFocus = useChatRoomFocus;
|
|
86
|
+
var _default = exports.default = useChatRoomFocus;
|
|
87
|
+
//# sourceMappingURL=useChatRoomFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactRedux","_roomsSlice","_roomStore","useChatRoomFocus","roomJID","isFocused","dispatch","useDispatch","prevRef","useRef","leaveRoom","jid","timestamp","Date","now","setLastViewedTimestamp","chatJID","clearVisibleRoom","rooms","store","getState","chatSettingStore","client","flushLastViewedToPrivateStoreStanza","visibleRoomJID","catch","useEffect","prev","current","setCurrentRoom","setVisibleRoom","exports","_default","default"],"sourceRoot":"../../../src","sources":["hooks/useChatRoomFocus.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAMA,IAAAG,UAAA,GAAAH,OAAA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,gBAAgB,GAAGA,CAAC;EAC/BC,OAAO;EACPC;AACuB,CAAC,KAAK;EAC7B,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAMC,OAAO,GAAG,IAAAC,aAAM,EAAiD;IACrEL,OAAO,EAAE,IAAI;IACbC,SAAS,EAAE;EACb,CAAC,CAAC;EAEF,MAAMK,SAAS,GAAIC,GAAW,IAAK;IACjC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5BR,QAAQ,CAAC,IAAAS,kCAAsB,EAAC;MAAEC,OAAO,EAAEL,GAAG;MAAEC;IAAU,CAAC,CAAC,CAAC;IAC7DN,QAAQ,CAAC,IAAAW,4BAAgB,EAAC,CAAC,CAAC;IAC5B,MAAMC,KAAK,GAAGC,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAACF,KAAK,EAAEA,KAAK;IAC1CC,gBAAK,CAACC,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAUC,MAAM,EAC9CC,mCAAmC,CAACL,KAAK,EAAE;MAAEM,cAAc,EAAEb;IAAI,CAAC,CAAC,CACpEc,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC;EAED,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,IAAI,GAAGnB,OAAO,CAACoB,OAAO;IAC5B,IAAID,IAAI,CAACtB,SAAS,IAAIsB,IAAI,CAACvB,OAAO,KAAKuB,IAAI,CAACvB,OAAO,KAAKA,OAAO,IAAI,CAACC,SAAS,CAAC,EAAE;MAC9EK,SAAS,CAACiB,IAAI,CAACvB,OAAO,CAAC;IACzB;IAEA,IAAIA,OAAO,IAAIC,SAAS,EAAE;MACxBC,QAAQ,CAAC,IAAAuB,0BAAc,EAAC;QAAEzB;MAAQ,CAAC,CAAC,CAAC;MACrCE,QAAQ,CAAC,IAAAwB,0BAAc,EAAC;QAAE1B;MAAQ,CAAC,CAAC,CAAC;IACvC;IAEAI,OAAO,CAACoB,OAAO,GAAG;MAAExB,OAAO,EAAEA,OAAO,IAAI,IAAI;MAAEC;IAAU,CAAC;EAC3D,CAAC,EAAE,CAACD,OAAO,EAAEC,SAAS,EAAEC,QAAQ,CAAC,CAAC;EAElC,IAAAoB,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX,MAAMC,IAAI,GAAGnB,OAAO,CAACoB,OAAO;MAC5B,IAAID,IAAI,CAACtB,SAAS,IAAIsB,IAAI,CAACvB,OAAO,EAAE;QAClCM,SAAS,CAACiB,IAAI,CAACvB,OAAO,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAAC2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA;AAAA,IAAA6B,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAEa9B,gBAAgB","ignoreList":[]}
|
|
@@ -35,7 +35,7 @@ const useHeapSender = client => {
|
|
|
35
35
|
inFlightRef.current.set(msg.id, Date.now());
|
|
36
36
|
try {
|
|
37
37
|
if (msg.langSource) {
|
|
38
|
-
await client.sendTextMessageWithTranslateTagStanza(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, msg.showInChannel === 'true', msg.mainMessage || '', msg.langSource);
|
|
38
|
+
await client.sendTextMessageWithTranslateTagStanza(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, msg.showInChannel === 'true', msg.mainMessage || '', msg.langSource, msg.id);
|
|
39
39
|
} else {
|
|
40
40
|
await client.sendMessage(msg.roomJid, msg.user.firstName || msg.user.name?.split(' ')[0] || '', msg.user.lastName || msg.user.name?.split(' ')[1] || '', '', msg.user.walletAddress || '', msg.body, '', !!msg.isReply, !!msg.showInChannel, msg.mainMessage, msg.id);
|
|
41
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactRedux","_useMessageHeapState","useHeapSender","client","dispatch","useDispatch","queue","useMessageHeapState","sendingRef","useRef","inFlightRef","Map","sendHeapMessages","useCallback","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","err","delete","prevReadyRef","useEffect","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has","exports"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAIO,MAAMG,aAAa,GAAIC,MAAyB,IAAK;EAC1D,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,EAAC,CAAC;EAC9B,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EACvC,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAChC,MAAMC,WAAW,GAAG,IAAAD,aAAM,EAAsB,IAAIE,GAAG,CAAC,CAAC,CAAC;EAE1D,MAAMC,gBAAgB,GAAG,IAAAC,kBAAW,EAAC,YAAY;IAC/C,IAAI,CAACV,MAAM,IAAIG,KAAK,CAACQ,MAAM,KAAK,CAAC,EAAE;MAAC;IAAO;IAC3C,IAAI,CAACX,MAAM,CAACY,cAAc,EAAE;MAC1BC,OAAO,CAACC,IAAI,CAAC,yCAAyC,CAAC;MACvD;IACF;IACA,IAAIT,UAAU,CAACU,OAAO,EAAE;MAAC;IAAO;IAChCV,UAAU,CAACU,OAAO,GAAG,IAAI;IACzB,IAAI;MACF,KAAK,MAAMC,GAAG,IAAIb,KAAK,EAAE;QACvB,MAAMc,WAAW,GAAGV,WAAW,CAACQ,OAAO,CAACG,GAAG,CAACF,GAAG,CAACG,EAAE,CAAC;QACnD,IAAIF,WAAW,IAAIG,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGJ,WAAW,GAAG,KAAK,EAAE;UACnD;QACF;QACAV,WAAW,CAACQ,OAAO,CAACO,GAAG,CAACN,GAAG,CAACG,EAAE,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI;UACF,IAAIL,GAAG,CAACO,UAAU,EAAE;YAClB,MAAMvB,MAAM,CAACwB,qCAAqC,CAChDR,GAAG,CAACS,OAAO,EACXT,GAAG,CAACU,IAAI,CAACC,SAAS,IAAIX,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACxDb,GAAG,CAACU,IAAI,CAACI,QAAQ,IAAId,GAAG,CAACU,IAAI,CAACE,IAAI,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACvD,EAAE,EACFb,GAAG,CAACU,IAAI,CAACK,aAAa,IAAI,EAAE,EAC5Bf,GAAG,CAACgB,IAAI,EACR,EAAE,EACF,CAAC,CAAChB,GAAG,CAACiB,OAAO,EACbjB,GAAG,CAACkB,aAAa,KAAK,MAAM,EAC5BlB,GAAG,CAACmB,WAAW,IAAI,EAAE,EACrBnB,GAAG,CAACO,
|
|
1
|
+
{"version":3,"names":["_react","require","_reactRedux","_useMessageHeapState","useHeapSender","client","dispatch","useDispatch","queue","useMessageHeapState","sendingRef","useRef","inFlightRef","Map","sendHeapMessages","useCallback","length","presencesReady","console","warn","current","msg","lastAttempt","get","id","Date","now","set","langSource","sendTextMessageWithTranslateTagStanza","roomJid","user","firstName","name","split","lastName","walletAddress","body","isReply","showInChannel","mainMessage","sendMessage","err","delete","prevReadyRef","useEffect","nowReady","wasReady","currentIds","Set","map","m","Array","from","keys","has","exports"],"sourceRoot":"../../../src","sources":["hooks/useHeapSender.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -53,7 +53,7 @@ const logoutService = exports.logoutService = {
|
|
|
53
53
|
performLogout: async () => {
|
|
54
54
|
// 0. Flush lastViewedTimestamp to the server's private store BEFORE
|
|
55
55
|
// we close XMPP. Only rooms with no outstanding unread (plus the
|
|
56
|
-
//
|
|
56
|
+
// visible room) get their entries updated — rooms with unread
|
|
57
57
|
// keep their old marker so the next login still surfaces those
|
|
58
58
|
// messages as unread. Without this, an active-room view at
|
|
59
59
|
// logout would still appear unread on next login because we
|
|
@@ -62,10 +62,10 @@ const logoutService = exports.logoutService = {
|
|
|
62
62
|
const state = _roomStore.store.getState();
|
|
63
63
|
const client = state.chatSettingStore?.client;
|
|
64
64
|
const rooms = state.rooms?.rooms;
|
|
65
|
-
const
|
|
65
|
+
const visibleRoomJID = state.rooms?.visibleRoomJID || null;
|
|
66
66
|
if (client?.flushLastViewedToPrivateStoreStanza) {
|
|
67
67
|
await Promise.race([client.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
68
|
-
|
|
68
|
+
visibleRoomJID,
|
|
69
69
|
onlyIfNoUnread: true
|
|
70
70
|
}), new Promise(res => setTimeout(res, 2000))]);
|
|
71
71
|
}
|
|
@@ -132,16 +132,41 @@ const logoutService = exports.logoutService = {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Hook that returns an awaitable logout function.
|
|
138
|
+
*
|
|
139
|
+
* ```tsx
|
|
140
|
+
* const logout = useLogout();
|
|
141
|
+
* await logout();
|
|
142
|
+
* navigation.replace('SignIn'); // disk is provably clean here
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* The returned function resolves AFTER all teardown work has landed:
|
|
146
|
+
* XMPP disconnect, redux reset, persisted slices wiped, stray
|
|
147
|
+
* AsyncStorage keys removed, REST cache cleared. It never rejects —
|
|
148
|
+
* any internal failure is logged via console.warn so a fire-and-forget
|
|
149
|
+
* `logout()` call (no `await`) still won't crash the host.
|
|
150
|
+
*
|
|
151
|
+
* Why awaitable: the persistence middleware debounces writes by 200ms,
|
|
152
|
+
* and the chat-slice `logout` reducer removes ETHORA_USER fire-and-
|
|
153
|
+
* forget. If the host navigated / re-mounted `<Chat>` immediately
|
|
154
|
+
* after a non-awaited call, the next bootstrap could occasionally
|
|
155
|
+
* read stale persisted state ("old chats reappear"). Awaiting the
|
|
156
|
+
* returned promise eliminates that race entirely.
|
|
157
|
+
*/
|
|
135
158
|
const useLogout = () => {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
159
|
+
// dispatch is kept for backward-compat with consumers who treat the
|
|
160
|
+
// hook's presence as a redux-context requirement; not used directly
|
|
161
|
+
// here because the work happens through the module-level service.
|
|
162
|
+
(0, _reactRedux.useDispatch)();
|
|
163
|
+
return (0, _react.useCallback)(async () => {
|
|
164
|
+
try {
|
|
165
|
+
await logoutService.performLogout();
|
|
166
|
+
} catch (err) {
|
|
167
|
+
console.warn('useLogout: performLogout failed', err);
|
|
168
|
+
}
|
|
143
169
|
}, []);
|
|
144
|
-
return handleLogout;
|
|
145
170
|
};
|
|
146
171
|
exports.useLogout = useLogout;
|
|
147
172
|
//# sourceMappingURL=useLogout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactRedux","require","_reactNative","_asyncStorage","_interopRequireDefault","_roomStore","_chatSettingsSlice","_roomsSlice","_react","_roomHeapSlice","_pushSubscriptionService","_rooms","_persistence","_LOCAL_STORAGE","e","__esModule","default","LIBRARY_STRAY_KEYS","logoutService","exports","performLogout","state","store","getState","client","chatSettingStore","rooms","
|
|
1
|
+
{"version":3,"names":["_reactRedux","require","_reactNative","_asyncStorage","_interopRequireDefault","_roomStore","_chatSettingsSlice","_roomsSlice","_react","_roomHeapSlice","_pushSubscriptionService","_rooms","_persistence","_LOCAL_STORAGE","e","__esModule","default","LIBRARY_STRAY_KEYS","logoutService","exports","performLogout","state","store","getState","client","chatSettingStore","rooms","visibleRoomJID","flushLastViewedToPrivateStoreStanza","Promise","race","onlyIfNoUnread","res","setTimeout","console","warn","DeviceEventEmitter","emit","pushSubscriptionService","reset","clearRoomsRestCache","dispatch","setLogoutState","clearHeap","logout","clearPersistedState","AsyncStorage","multiRemove","localStorageConstants","ETHORA_USER","useLogout","useDispatch","useCallback","err"],"sourceRoot":"../../../src","sources":["hooks/useLogout.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,7 +48,11 @@ function usePushNotifications() {
|
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
(0, _react.useEffect)(() => {
|
|
51
|
-
initToken()
|
|
51
|
+
// initToken is async — `initToken()` without `.catch` leaves any
|
|
52
|
+
// rejection unhandled (showed as `Uncaught (in promise, id: X)` red
|
|
53
|
+
// screen in dev). The inner try/catch covers most paths but any
|
|
54
|
+
// synchronous throw before the try-block ran would still leak.
|
|
55
|
+
initToken().catch(err => console.warn('[usePushNotifications] initToken rejected', err));
|
|
52
56
|
const unsubscribeForeground = (0, _pushNotifications.onForegroundMessage)(message => {
|
|
53
57
|
setNotification(message);
|
|
54
58
|
const {
|
|
@@ -75,7 +79,7 @@ function usePushNotifications() {
|
|
|
75
79
|
setNotification(message);
|
|
76
80
|
handleNotificationPress(message);
|
|
77
81
|
}
|
|
78
|
-
});
|
|
82
|
+
}).catch(err => console.warn('[usePushNotifications] getInitialNotification failed', err));
|
|
79
83
|
return () => {
|
|
80
84
|
unsubscribeForeground();
|
|
81
85
|
unsubscribeOpened();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_pushNotifications","_pushSubscriptionService","_reactRedux","_useLocalStorage","_roomsSlice","usePushNotifications","fcmToken","setFcmToken","useState","notification","setNotification","user","config","useSelector","state","chatSettingStore","rooms","dispatch","useDispatch","set","get","useLocalStorage","handleNotificationPress","remoteMessage","console","log","JSON","stringify","jid","data","chatJid","setPendingNotificationJid","warn","initToken","token","newToken","initPushNotifications","error","useEffect","unsubscribeForeground","onForegroundMessage","message","notif","Alert","alert","title","body","text","onPress","unsubscribeOpened","onNotificationOpenedApp","getInitialNotification","then","xmppPassword","defaultWallet","walletAddress","pushSubscriptionService","subscribeToPush","projectName"
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_pushNotifications","_pushSubscriptionService","_reactRedux","_useLocalStorage","_roomsSlice","usePushNotifications","fcmToken","setFcmToken","useState","notification","setNotification","user","config","useSelector","state","chatSettingStore","rooms","dispatch","useDispatch","set","get","useLocalStorage","handleNotificationPress","remoteMessage","console","log","JSON","stringify","jid","data","chatJid","setPendingNotificationJid","warn","initToken","token","newToken","initPushNotifications","error","useEffect","catch","err","unsubscribeForeground","onForegroundMessage","message","notif","Alert","alert","title","body","text","onPress","unsubscribeOpened","onNotificationOpenedApp","getInitialNotification","then","xmppPassword","defaultWallet","walletAddress","pushSubscriptionService","subscribeToPush","projectName"],"sourceRoot":"../../../src","sources":["hooks/usePushNotifications.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ const useRoomState = roomJID => {
|
|
|
12
12
|
const room = (0, _reactRedux.useSelector)(state => roomJID ? state.rooms.rooms[roomJID] : undefined);
|
|
13
13
|
const roomsList = (0, _reactRedux.useSelector)(state => state.rooms.rooms);
|
|
14
14
|
const activeRoomJID = (0, _reactRedux.useSelector)(state => state.rooms.activeRoomJID);
|
|
15
|
+
const visibleRoomJID = (0, _reactRedux.useSelector)(state => state.rooms.visibleRoomJID);
|
|
15
16
|
const editAction = (0, _reactRedux.useSelector)(state => state.rooms.editAction);
|
|
16
17
|
const globalLoading = (0, _reactRedux.useSelector)(state => state.rooms.isLoading);
|
|
17
18
|
const loading = (0, _reactRedux.useSelector)(state => {
|
|
@@ -25,6 +26,7 @@ const useRoomState = roomJID => {
|
|
|
25
26
|
room,
|
|
26
27
|
roomsList,
|
|
27
28
|
activeRoomJID,
|
|
29
|
+
visibleRoomJID,
|
|
28
30
|
editAction,
|
|
29
31
|
globalLoading,
|
|
30
32
|
loadingText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactRedux","useRoomState","roomJID","room","useSelector","state","rooms","undefined","roomsList","activeRoomJID","editAction","globalLoading","isLoading","loading","activeJID","loadingText","usersSet","roomMessages","useMemo","messages","exports"],"sourceRoot":"../../../src","sources":["hooks/useRoomState.tsx"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAHA;;AAMO,MAAME,YAAY,GAAIC,OAAgB,IAAK;EAChD,MAAMC,IAAI,GAAG,IAAAC,uBAAW,EAAEC,KAAgB,IACxCH,OAAO,GAAGG,KAAK,CAACC,KAAK,CAACA,KAAK,CAACJ,OAAO,CAAC,GAAGK,SACzC,CAAC;EACD,MAAMC,SAAS,GAAG,IAAAJ,uBAAW,EAAEC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACA,KAAK,CAAC;EACtE,MAAMG,aAAa,GAAG,IAAAL,uBAAW,EAC9BC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACG,aACpC,CAAC;EACD,MAAMC,
|
|
1
|
+
{"version":3,"names":["_react","require","_reactRedux","useRoomState","roomJID","room","useSelector","state","rooms","undefined","roomsList","activeRoomJID","visibleRoomJID","editAction","globalLoading","isLoading","loading","activeJID","loadingText","usersSet","roomMessages","useMemo","messages","exports"],"sourceRoot":"../../../src","sources":["hooks/useRoomState.tsx"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAHA;;AAMO,MAAME,YAAY,GAAIC,OAAgB,IAAK;EAChD,MAAMC,IAAI,GAAG,IAAAC,uBAAW,EAAEC,KAAgB,IACxCH,OAAO,GAAGG,KAAK,CAACC,KAAK,CAACA,KAAK,CAACJ,OAAO,CAAC,GAAGK,SACzC,CAAC;EACD,MAAMC,SAAS,GAAG,IAAAJ,uBAAW,EAAEC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACA,KAAK,CAAC;EACtE,MAAMG,aAAa,GAAG,IAAAL,uBAAW,EAC9BC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACG,aACpC,CAAC;EACD,MAAMC,cAAc,GAAG,IAAAN,uBAAW,EAC/BC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACI,cACpC,CAAC;EACD,MAAMC,UAAU,GAAG,IAAAP,uBAAW,EAAEC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACK,UAAU,CAAC;EAC5E,MAAMC,aAAa,GAAG,IAAAR,uBAAW,EAC9BC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACO,SACpC,CAAC;EACD,MAAMC,OAAO,GAAG,IAAAV,uBAAW,EAAEC,KAAgB,IAAK;IAChD,MAAMU,SAAS,GAAGV,KAAK,CAACC,KAAK,CAACG,aAAa;IAC3C,OAAOM,SAAS,GAAGV,KAAK,CAACC,KAAK,CAACA,KAAK,CAACS,SAAS,CAAC,EAAEF,SAAS,IAAI,KAAK,GAAG,KAAK;EAC7E,CAAC,CAAC;EACF,MAAMG,WAAW,GAAG,IAAAZ,uBAAW,EAC5BC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACU,WACpC,CAAC;EACD,MAAMC,QAAQ,GAAG,IAAAb,uBAAW,EAAEC,KAAgB,IAAKA,KAAK,CAACC,KAAK,CAACW,QAAQ,CAAC;EAExE,MAAMC,YAAY,GAAG,IAAAC,cAAO,EAC1B,MACEV,aAAa,IAAID,SAAS,CAACC,aAAa,CAAC,GACrCD,SAAS,CAACC,aAAa,CAAC,CAACW,QAAQ,IAAI,EAAE,GACvC,EAAE,EACR,CAACZ,SAAS,EAAEC,aAAa,CAC3B,CAAC;EAED,OAAO;IACLN,IAAI;IACJK,SAAS;IACTC,aAAa;IACbC,cAAc;IACdC,UAAU;IACVC,aAAa;IACbI,WAAW;IACXF,OAAO;IACPI,YAAY;IACZD;EACF,CAAC;AACH,CAAC;AAACI,OAAA,CAAApB,YAAA,GAAAA,YAAA","ignoreList":[]}
|