@ethora/chat-component-rn 26.7.9 → 26.8.1
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 +0 -93
- package/README.md +10 -33
- package/lib/commonjs/assets/icons.js +2 -7
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +4 -4
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +13 -101
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +1 -2
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +10 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +9 -37
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +17 -86
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +3 -9
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +61 -119
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +54 -128
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
- package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/commonjs/helpers/getDataFromXml.js +24 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +8 -14
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/commonjs/helpers/mimeToExtension.js +14 -6
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/resolveLangSource.js +38 -0
- package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
- package/lib/commonjs/helpers/xmppUsername.js +39 -0
- package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +8 -17
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +0 -27
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +7 -15
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +11 -8
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +14 -50
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +133 -121
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/i18n/useT.js +1 -1
- package/lib/commonjs/main.js +0 -44
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/user.api.js +9 -68
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +112 -62
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +51 -93
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +8 -124
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +2 -35
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +39 -226
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +8 -87
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +13 -15
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +3 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/assets/icons.js +1 -6
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +4 -4
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +7 -26
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +3 -9
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +14 -102
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +10 -30
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +1 -5
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +5 -13
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +35 -207
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +1 -9
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +2 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +1 -2
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +10 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +9 -37
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +3 -1
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +18 -87
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +3 -9
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +4 -14
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +62 -120
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +55 -128
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +1 -19
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/ensureScopedChatCache.js +2 -2
- package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/module/helpers/getDataFromXml.js +23 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +3 -66
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +8 -14
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/module/helpers/mimeToExtension.js +13 -6
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/resolveLangSource.js +32 -0
- package/lib/module/helpers/resolveLangSource.js.map +1 -0
- package/lib/module/helpers/xmppUsername.js +35 -0
- package/lib/module/helpers/xmppUsername.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +8 -17
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +14 -32
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +1 -28
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useLogout.js +7 -15
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +11 -8
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +16 -52
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +133 -121
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/i18n/useT.js +1 -1
- package/lib/module/main.js +2 -14
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +59 -131
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +9 -9
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/networking/api-requests/user.api.js +7 -64
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +113 -61
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +52 -94
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +8 -124
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +7 -26
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +4 -37
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +38 -223
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +7 -86
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +13 -15
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +3 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +0 -16
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
- 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 +1 -10
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -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/NewChatModal/ModalContent.d.ts +2 -4
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
- package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- 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/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
- package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
- package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
- package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
- package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/i18n/useT.d.ts +1 -1
- package/lib/typescript/main.d.ts +2 -9
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +6 -12
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +0 -14
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts +1 -18
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +1 -14
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +5 -49
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +29 -41
- package/src/assets/icons.tsx +9 -48
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +6 -24
- package/src/components/MainComponents/ChatHeader.tsx +3 -9
- package/src/components/MainComponents/ChatRoom.tsx +16 -111
- package/src/components/MainComponents/ChatWrapper.tsx +53 -36
- package/src/components/MainComponents/LoginWrapper.tsx +0 -1
- package/src/components/MainComponents/MediaMessage.tsx +8 -26
- package/src/components/MainComponents/MessageContainer.tsx +1 -5
- package/src/components/MainComponents/MessageList.tsx +4 -23
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
- package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
- package/src/components/MainComponents/RoomList.tsx +39 -236
- package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
- package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
- package/src/components/Modals/Modal/Modal.tsx +0 -7
- package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
- package/src/components/Modals/styledModalComponents.tsx +2 -9
- package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
- package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
- package/src/components/styled/AudioMessage.tsx +1 -2
- package/src/components/styled/DateLabel.tsx +10 -3
- package/src/components/styled/MessageImage.tsx +7 -53
- package/src/components/styled/NewMessageLabel.tsx +3 -1
- package/src/components/styled/SendInput.tsx +18 -91
- package/src/components/styled/StyledComponents.ts +3 -9
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
- package/src/components/styled/UnsupportedType.tsx +4 -14
- package/src/components/styled/VideoMessage.tsx +54 -131
- package/src/context/xmppProvider.tsx +51 -134
- package/src/helpers/createMessageFromXml.ts +1 -20
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getDataFromXml.ts +25 -1
- package/src/helpers/historyPreloadScheduler.ts +3 -80
- package/src/helpers/initXmppRooms.tsx +10 -14
- package/src/helpers/insertMessageWithDelimiter.ts +13 -0
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/mimeToExtension.ts +22 -6
- package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
- package/src/helpers/resolveLangSource.ts +40 -0
- package/src/helpers/xmppUsername.ts +38 -0
- package/src/hooks/useChatRoomFocus.ts +5 -14
- package/src/hooks/useChatWrapperInit.ts +16 -32
- package/src/hooks/useComposing.tsx +1 -37
- package/src/hooks/useLogout.tsx +9 -15
- package/src/hooks/usePendingNotification.ts +11 -5
- package/src/hooks/useSendMessage.tsx +15 -60
- package/src/hooks/useUnreadMessagesCounter.ts +0 -11
- package/src/i18n/strings.ts +133 -121
- package/src/i18n/useT.ts +1 -1
- package/src/main.ts +2 -26
- package/src/networking/api-requests/auth.api.ts +48 -156
- package/src/networking/api-requests/roomMembers.api.ts +1 -1
- package/src/networking/api-requests/rooms.api.ts +9 -9
- package/src/networking/api-requests/user.api.ts +7 -79
- package/src/networking/apiClient.ts +123 -68
- package/src/networking/stanzaHandlers.ts +51 -92
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
- package/src/networking/xmppClient.ts +9 -141
- package/src/roomStore/chatSettingsSlice.ts +10 -34
- package/src/roomStore/index.ts +4 -40
- package/src/roomStore/persistence.ts +40 -234
- package/src/roomStore/roomsSlice.ts +7 -87
- package/src/services/pushSubscriptionService.ts +13 -18
- package/src/types/types.ts +5 -58
- package/src/version.ts +3 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/commonjs/helpers/getChatBackground.js +0 -23
- package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
- package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
- package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
- package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -125
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/commonjs/helpers/isOwnMessage.js +0 -75
- package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/commonjs/helpers/persistCrypto.js +0 -122
- package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
- package/lib/commonjs/helpers/pickImageAsset.js +0 -68
- package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
- package/lib/commonjs/helpers/pushPayload.js +0 -71
- package/lib/commonjs/helpers/pushPayload.js.map +0 -1
- package/lib/commonjs/helpers/secureFileUrl.js +0 -101
- package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
- package/lib/commonjs/helpers/secureKeyValue.js +0 -83
- package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
- package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/commonjs/helpers/secureUserStorage.js +0 -75
- package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
- package/lib/commonjs/helpers/shallowEqual.js +0 -36
- package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
- package/lib/commonjs/helpers/sheetGestures.js +0 -32
- package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
- package/lib/commonjs/hooks/useFileToken.js +0 -10
- package/lib/commonjs/hooks/useFileToken.js.map +0 -1
- package/lib/commonjs/networking/authRefresh.js +0 -332
- package/lib/commonjs/networking/authRefresh.js.map +0 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/module/helpers/getChatBackground.js +0 -18
- package/lib/module/helpers/getChatBackground.js.map +0 -1
- package/lib/module/helpers/getDisplayFileName.js +0 -73
- package/lib/module/helpers/getDisplayFileName.js.map +0 -1
- package/lib/module/helpers/getServerReadTimestamp.js +0 -120
- package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/module/helpers/isOwnMessage.js +0 -70
- package/lib/module/helpers/isOwnMessage.js.map +0 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
- package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/module/helpers/persistCrypto.js +0 -115
- package/lib/module/helpers/persistCrypto.js.map +0 -1
- package/lib/module/helpers/pickImageAsset.js +0 -63
- package/lib/module/helpers/pickImageAsset.js.map +0 -1
- package/lib/module/helpers/pushPayload.js +0 -63
- package/lib/module/helpers/pushPayload.js.map +0 -1
- package/lib/module/helpers/secureFileUrl.js +0 -91
- package/lib/module/helpers/secureFileUrl.js.map +0 -1
- package/lib/module/helpers/secureKeyValue.js +0 -75
- package/lib/module/helpers/secureKeyValue.js.map +0 -1
- package/lib/module/helpers/secureStoreRuntime.js +0 -52
- package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/module/helpers/secureUserStorage.js +0 -72
- package/lib/module/helpers/secureUserStorage.js.map +0 -1
- package/lib/module/helpers/shallowEqual.js +0 -31
- package/lib/module/helpers/shallowEqual.js.map +0 -1
- package/lib/module/helpers/sheetGestures.js +0 -26
- package/lib/module/helpers/sheetGestures.js.map +0 -1
- package/lib/module/hooks/useFileToken.js +0 -5
- package/lib/module/hooks/useFileToken.js.map +0 -1
- package/lib/module/networking/authRefresh.js +0 -321
- package/lib/module/networking/authRefresh.js.map +0 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
- package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
- package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -69
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
- package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
- package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
- package/lib/typescript/helpers/pushPayload.d.ts +0 -7
- package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
- package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
- package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
- package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
- package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
- package/lib/typescript/hooks/useFileToken.d.ts +0 -2
- package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
- package/lib/typescript/networking/authRefresh.d.ts +0 -95
- package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
- package/src/helpers/getChatBackground.ts +0 -18
- package/src/helpers/getDisplayFileName.ts +0 -87
- package/src/helpers/getServerReadTimestamp.ts +0 -120
- package/src/helpers/isOwnMessage.ts +0 -90
- package/src/helpers/mediaLibraryRuntime.ts +0 -25
- package/src/helpers/persistCrypto.ts +0 -127
- package/src/helpers/pickImageAsset.ts +0 -68
- package/src/helpers/pushPayload.ts +0 -62
- package/src/helpers/secureFileUrl.ts +0 -103
- package/src/helpers/secureKeyValue.ts +0 -80
- package/src/helpers/secureStoreRuntime.ts +0 -62
- package/src/helpers/secureUserStorage.ts +0 -80
- package/src/helpers/shallowEqual.ts +0 -33
- package/src/helpers/sheetGestures.ts +0 -25
- package/src/hooks/useFileToken.ts +0 -7
- package/src/networking/authRefresh.ts +0 -451
|
@@ -14,7 +14,7 @@ import { VideoCallOverlay } from '../components/VideoCalls/VideoCallOverlay';
|
|
|
14
14
|
import XmppClient, {
|
|
15
15
|
XmppCredentialsProvider,
|
|
16
16
|
} from '../networking/xmppClient';
|
|
17
|
-
import {
|
|
17
|
+
import { refreshTokens } from '../roomStore/chatSettingsSlice';
|
|
18
18
|
import {
|
|
19
19
|
IConfig,
|
|
20
20
|
ProviderBootstrapStatus,
|
|
@@ -37,7 +37,6 @@ import {
|
|
|
37
37
|
import { ensureScopedChatCache } from '../helpers/ensureScopedChatCache';
|
|
38
38
|
import { getRooms as prefetchRoomsViaRest } from '../networking/api-requests/rooms.api';
|
|
39
39
|
import { allRoomPresences } from '../networking/xmpp/allRoomPresences.xmpp';
|
|
40
|
-
import { pushSubscriptionService } from '../services/pushSubscriptionService';
|
|
41
40
|
import { store } from '../roomStore';
|
|
42
41
|
import { logout, setStoreClient, setConfig } from '../roomStore/chatSettingsSlice';
|
|
43
42
|
import {
|
|
@@ -46,12 +45,12 @@ import {
|
|
|
46
45
|
clearVisibleRoom,
|
|
47
46
|
setLastViewedTimestamp,
|
|
48
47
|
deleteRoomMessage,
|
|
48
|
+
msgSortableMs,
|
|
49
49
|
setUnreadSyncing,
|
|
50
50
|
} from '../roomStore/roomsSlice';
|
|
51
|
-
import { getServerReadTimestamp } from '../helpers/getServerReadTimestamp';
|
|
52
51
|
import { runHistoryPreloadScheduler } from '../helpers/historyPreloadScheduler';
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
52
|
+
import { asyncLocalStorage } from '../hooks/useLocalStorage';
|
|
53
|
+
import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
|
|
55
54
|
import { clearPersistedState } from '../roomStore/persistence';
|
|
56
55
|
import { pushLog as devPushLog } from '../utils/devLogger';
|
|
57
56
|
|
|
@@ -84,16 +83,6 @@ interface XmppProviderProps {
|
|
|
84
83
|
|
|
85
84
|
const LOGOUT_EVENT = 'ethora-xmpp-logout';
|
|
86
85
|
|
|
87
|
-
const subscribeAllRoomsForPush = (client: any, reason: string) => {
|
|
88
|
-
const rooms = Object.keys(store.getState().rooms.rooms || {});
|
|
89
|
-
if (!client || !rooms.length) {return;}
|
|
90
|
-
const nick = client.jid?.getLocal();
|
|
91
|
-
pushSubscriptionService
|
|
92
|
-
.subscribeToRooms(client, rooms, nick)
|
|
93
|
-
.then(() => devPushLog('xmpp', `${reason}: mucsub ok for ${rooms.length} rooms`))
|
|
94
|
-
.catch((e) => devPushLog('warn', `${reason}: mucsub subscribe failed`, e));
|
|
95
|
-
};
|
|
96
|
-
|
|
97
86
|
export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, isVisible }) => {
|
|
98
87
|
const [client, setClient] = useState<XmppClient | null>(null);
|
|
99
88
|
const [providerBootstrapStatus, setProviderBootstrapStatus] =
|
|
@@ -118,25 +107,23 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
118
107
|
// the XmppClient at least doesn't crash on `undefined.password`.
|
|
119
108
|
const credentialsProvider = useMemo<XmppCredentialsProvider>(() => {
|
|
120
109
|
return async () => {
|
|
121
|
-
// 1.
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
password: rotated.xmppPassword,
|
|
139
|
-
};
|
|
110
|
+
// 1. Consumer-supplied REST refresh (when wired). This runs
|
|
111
|
+
// before the SDK's own refresh chain so non-Ethora backends
|
|
112
|
+
// can keep auth state in sync with their own token endpoint.
|
|
113
|
+
const customRefresh = config?.refreshTokens?.refreshFunction;
|
|
114
|
+
if (customRefresh) {
|
|
115
|
+
try {
|
|
116
|
+
const result = await customRefresh();
|
|
117
|
+
if (result?.accessToken) {
|
|
118
|
+
store.dispatch(
|
|
119
|
+
refreshTokens({
|
|
120
|
+
token: result.accessToken,
|
|
121
|
+
refreshToken: result.refreshToken || '',
|
|
122
|
+
})
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
} catch (err) {
|
|
126
|
+
devPushLog('warn', 'XMPP creds refresh: customRefresh failed', err);
|
|
140
127
|
}
|
|
141
128
|
}
|
|
142
129
|
|
|
@@ -176,7 +163,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
176
163
|
}, [
|
|
177
164
|
config?.jwtLogin?.enabled,
|
|
178
165
|
config?.jwtLogin?.token,
|
|
179
|
-
config?.refreshTokens?.
|
|
166
|
+
config?.refreshTokens?.refreshFunction,
|
|
180
167
|
config?.userLogin?.enabled,
|
|
181
168
|
config?.customLogin?.enabled,
|
|
182
169
|
config?.initBeforeLoadAuth?.myEndpoint,
|
|
@@ -240,11 +227,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
240
227
|
created.setOnOnline(() => {
|
|
241
228
|
const underlying = (created as any).client;
|
|
242
229
|
if (!underlying) {return;}
|
|
243
|
-
allRoomPresences(underlying)
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
)
|
|
247
|
-
.finally(() => subscribeAllRoomsForPush(underlying, 'reconnect'));
|
|
230
|
+
allRoomPresences(underlying).catch((e) =>
|
|
231
|
+
devPushLog('warn', 'reconnect: allRoomPresences re-join failed', e)
|
|
232
|
+
);
|
|
248
233
|
// Also refresh the private store so unread / lastViewed markers
|
|
249
234
|
// are accurate after a long reconnect — the MUC re-join above only
|
|
250
235
|
// restores delivery, not unread state. Idempotent on first connect.
|
|
@@ -253,19 +238,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
253
238
|
.catch((e: unknown) =>
|
|
254
239
|
devPushLog('warn', 'reconnect: privateStore refresh failed', e)
|
|
255
240
|
);
|
|
256
|
-
// Pull whatever landed in each room's archive while the stream was
|
|
257
|
-
// down. MUC presence re-join above only restores delivery for
|
|
258
|
-
// messages sent AFTER this reconnect — anything sent during the
|
|
259
|
-
// offline window has no live stanza to catch, and previously only
|
|
260
|
-
// came back on a full app restart (fresh useChatWrapperInit mount
|
|
261
|
-
// re-running its own one-shot boot sync). Safe on the very first
|
|
262
|
-
// connect too: rooms have no `lastMessageTimestamp` yet at that
|
|
263
|
-
// point, so this is a no-op until the bootstrap's own history load
|
|
264
|
-
// populates it. Customer-reported #32.
|
|
265
|
-
const rooms = store.getState().rooms?.rooms || {};
|
|
266
|
-
updateMessagesTillLast(rooms, created).catch((e: unknown) =>
|
|
267
|
-
devPushLog('warn', 'reconnect: offline catch-up sync failed', e)
|
|
268
|
-
);
|
|
269
241
|
});
|
|
270
242
|
|
|
271
243
|
setClient(created);
|
|
@@ -350,7 +322,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
350
322
|
devPushLog('rn', 'initBeforeLoad: clearStoreBeforeInit');
|
|
351
323
|
store.dispatch(setLogoutState());
|
|
352
324
|
store.dispatch(logout());
|
|
353
|
-
await
|
|
325
|
+
await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove().catch(() => undefined);
|
|
354
326
|
}
|
|
355
327
|
|
|
356
328
|
await ensureScopedChatCache(config);
|
|
@@ -381,29 +353,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
381
353
|
store.dispatch(setConfig(config));
|
|
382
354
|
}
|
|
383
355
|
|
|
384
|
-
// Rotate BEFORE the first XMPP connect. On the rotating backend
|
|
385
|
-
// the xmpp password is a short-lived JWT that only the newest
|
|
386
|
-
// rotation knows, and each rotation invalidates its predecessors
|
|
387
|
-
// — so a snapshot's password (a host's cached `userLogin.user`,
|
|
388
|
-
// a persisted session) is usually already dead at boot. Without
|
|
389
|
-
// this, the first SASL attempt fails `not-authorized`, all three
|
|
390
|
-
// bootstrap retries re-present the same dead password, and the
|
|
391
|
-
// user dead-ends on the Connection error modal even though one
|
|
392
|
-
// rotation away a perfectly good session existed. The rotation
|
|
393
|
-
// also lands the fileToken pre-render, so secure media never
|
|
394
|
-
// paints blank first. Quiet + deduped; when it can't rotate
|
|
395
|
-
// (no refresh material, non-rotating backend) we just connect
|
|
396
|
-
// with what the snapshot has, exactly as before.
|
|
397
|
-
// jwtLogin is skipped: /users/client just minted fresh creds.
|
|
398
|
-
let connectPassword = resolved.xmppPassword;
|
|
399
|
-
if (config?.refreshTokens?.enabled && !config?.jwtLogin?.enabled) {
|
|
400
|
-
const rotated = await refreshAuthTokensQuietly({ force: true });
|
|
401
|
-
if (cancelled) {return;}
|
|
402
|
-
if (rotated?.xmppPassword) {
|
|
403
|
-
connectPassword = rotated.xmppPassword;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
356
|
// Kick off REST /chats/my; allRoomPresences below needs the
|
|
408
357
|
// room list to be in redux, otherwise it joins 0 MUCs and the
|
|
409
358
|
// user receives zero realtime messages until they manually tap
|
|
@@ -413,7 +362,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
413
362
|
|
|
414
363
|
const c = await initializeClient(
|
|
415
364
|
resolved.xmppUsername!,
|
|
416
|
-
|
|
365
|
+
resolved.xmppPassword,
|
|
417
366
|
config?.xmppSettings
|
|
418
367
|
);
|
|
419
368
|
if (cancelled) {return;}
|
|
@@ -449,7 +398,6 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
449
398
|
} catch (e) {
|
|
450
399
|
devPushLog('warn', 'initBeforeLoad: allRoomPresences failed', e);
|
|
451
400
|
}
|
|
452
|
-
subscribeAllRoomsForPush((c as any).client, 'initBeforeLoad');
|
|
453
401
|
|
|
454
402
|
store.dispatch(setStoreClient(c));
|
|
455
403
|
completedBootstrapKeyRef.current = key;
|
|
@@ -594,14 +542,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
594
542
|
// be re-marked visible on return. Lives in the effect closure (one per
|
|
595
543
|
// client) — persists across the listener's many invocations.
|
|
596
544
|
let visibleBeforeBackground: string | null = null;
|
|
597
|
-
const suspendInBackground = !config?.xmppSettings?.keepAliveInBackground;
|
|
598
545
|
const sub = AppState.addEventListener('change', (next) => {
|
|
599
546
|
const c = client;
|
|
600
547
|
if (next === 'active') {
|
|
601
|
-
if (c?.isSuspended) {
|
|
602
|
-
devPushLog('rn', 'AppState active: resuming suspended XMPP client');
|
|
603
|
-
c.resume();
|
|
604
|
-
}
|
|
605
548
|
// Returned to foreground. If the socket died while backgrounded
|
|
606
549
|
// (iOS suspends the WebSocket; long background kills it), the
|
|
607
550
|
// status may still read 'online' until xmpp.js notices the dead
|
|
@@ -629,39 +572,22 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
629
572
|
}
|
|
630
573
|
// Going to background/inactive (sleep / app switcher / tray):
|
|
631
574
|
if (!c) {return;}
|
|
632
|
-
if (next === 'background' && suspendInBackground) {
|
|
633
|
-
c.suspend().catch(() => undefined);
|
|
634
|
-
}
|
|
635
575
|
const state = store.getState();
|
|
636
576
|
const rooms = state.rooms?.rooms;
|
|
637
577
|
const visibleRoomJID = state.rooms?.visibleRoomJID || null;
|
|
638
578
|
// Mark the open room "not visible" while backgrounded so messages
|
|
639
579
|
// that arrive (or MAM-replay on reconnect) count as unread instead
|
|
640
580
|
// of being silently treated as read — the "mounted == visible ==
|
|
641
|
-
// read" gap. Stamp lastViewed
|
|
642
|
-
//
|
|
643
|
-
//
|
|
644
|
-
//
|
|
645
|
-
//
|
|
646
|
-
// store. Restored on the next 'active' transition above. Handled
|
|
647
|
-
// here in the provider so consumers using the component as a
|
|
648
|
-
// package get correct unread without reaching into the chat store
|
|
649
|
-
// themselves.
|
|
581
|
+
// read" gap. Stamp lastViewed=now as the read baseline, clear
|
|
582
|
+
// visibility, then flush that marker to the server private store.
|
|
583
|
+
// Restored on the next 'active' transition above. Handled here in
|
|
584
|
+
// the provider so consumers using the component as a package get
|
|
585
|
+
// correct unread without reaching into the chat store themselves.
|
|
650
586
|
visibleBeforeBackground = visibleRoomJID;
|
|
651
587
|
if (visibleRoomJID) {
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
state.roomHeapSlice
|
|
588
|
+
store.dispatch(
|
|
589
|
+
setLastViewedTimestamp({ chatJID: visibleRoomJID, timestamp: Date.now() })
|
|
655
590
|
);
|
|
656
|
-
// Nothing to anchor to yet (no known messages, no prior marker)
|
|
657
|
-
// - skip the local stamp rather than fall back to the device
|
|
658
|
-
// clock. The flush below still runs so the visibility clear
|
|
659
|
-
// isn't blocked on this.
|
|
660
|
-
if (readTs > 0) {
|
|
661
|
-
store.dispatch(
|
|
662
|
-
setLastViewedTimestamp({ chatJID: visibleRoomJID, timestamp: readTs })
|
|
663
|
-
);
|
|
664
|
-
}
|
|
665
591
|
// Drop the "New messages" divider for the room we're leaving so it
|
|
666
592
|
// doesn't linger when the user comes back (mirrors ChatRoom's
|
|
667
593
|
// unmount cleanup, which never runs while the pane stays mounted).
|
|
@@ -677,7 +603,7 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
677
603
|
);
|
|
678
604
|
});
|
|
679
605
|
return () => sub.remove();
|
|
680
|
-
}, [client
|
|
606
|
+
}, [client]);
|
|
681
607
|
|
|
682
608
|
// -----------------------------------------------------------
|
|
683
609
|
// Consumer visibility signal (`isVisible` prop). For hosts that keep
|
|
@@ -686,11 +612,11 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
686
612
|
// "shown" from "hidden", so the unread middleware would keep the open
|
|
687
613
|
// room's badge at 0 and messages arriving while you're elsewhere look
|
|
688
614
|
// already-read. When the host passes `isVisible`, mirror the AppState
|
|
689
|
-
// background/foreground handling: hidden → stamp lastViewed
|
|
690
|
-
//
|
|
691
|
-
//
|
|
692
|
-
//
|
|
693
|
-
//
|
|
615
|
+
// background/foreground handling: hidden → stamp lastViewed=now + clear
|
|
616
|
+
// room visibility (so later messages count) + flush; shown → restore
|
|
617
|
+
// visibility for the open room. Doing it here means consumers never
|
|
618
|
+
// touch the chat store themselves. (Undefined = host unmounts on hide,
|
|
619
|
+
// nothing to do.)
|
|
694
620
|
// -----------------------------------------------------------
|
|
695
621
|
const chatWasVisibleRef = useRef(false);
|
|
696
622
|
useEffect(() => {
|
|
@@ -706,18 +632,9 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
706
632
|
}
|
|
707
633
|
} else {
|
|
708
634
|
if (wasVisible && activeRoomJID) {
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
// never correct (bug #38).
|
|
712
|
-
const readTs = getServerReadTimestamp(
|
|
713
|
-
rooms?.[activeRoomJID],
|
|
714
|
-
state.roomHeapSlice
|
|
635
|
+
store.dispatch(
|
|
636
|
+
setLastViewedTimestamp({ chatJID: activeRoomJID, timestamp: Date.now() })
|
|
715
637
|
);
|
|
716
|
-
if (readTs > 0) {
|
|
717
|
-
store.dispatch(
|
|
718
|
-
setLastViewedTimestamp({ chatJID: activeRoomJID, timestamp: readTs })
|
|
719
|
-
);
|
|
720
|
-
}
|
|
721
638
|
// Drop the "New messages" divider so it's gone when the user
|
|
722
639
|
// returns to the chat (mirrors ChatRoom's unmount cleanup).
|
|
723
640
|
store.dispatch(
|
|
@@ -749,18 +666,18 @@ export const XmppProvider: React.FC<XmppProviderProps> = ({ children, config, is
|
|
|
749
666
|
if (room.messages === lastMessagesRef) {return;}
|
|
750
667
|
lastMessagesRef = room.messages;
|
|
751
668
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
if (
|
|
669
|
+
let newest = 0;
|
|
670
|
+
const list = room.messages || [];
|
|
671
|
+
for (const m of list) {
|
|
672
|
+
if (!m || m.id === 'delimiter-new') {continue;}
|
|
673
|
+
const ms = msgSortableMs(m);
|
|
674
|
+
if (ms > newest) {newest = ms;}
|
|
675
|
+
}
|
|
676
|
+
if (newest <= lastStampedMs) {return;}
|
|
760
677
|
lastStampedMs = newest;
|
|
761
678
|
|
|
762
679
|
store.dispatch(
|
|
763
|
-
setLastViewedTimestamp({ chatJID: jid, timestamp:
|
|
680
|
+
setLastViewedTimestamp({ chatJID: jid, timestamp: Date.now() })
|
|
764
681
|
);
|
|
765
682
|
|
|
766
683
|
if (flushTimer) {clearTimeout(flushTimer);}
|
|
@@ -93,25 +93,6 @@ export const createMessageFromXml = async (
|
|
|
93
93
|
const senderLocal = senderJID.includes('@')
|
|
94
94
|
? senderJID.split('@')[0]
|
|
95
95
|
: senderJID;
|
|
96
|
-
|
|
97
|
-
// Bug #41 root cause: the resource of the MUC `from` (room@conference/
|
|
98
|
-
// occupant-id) is the SAME field getDataFromXml uses to derive
|
|
99
|
-
// `user.id` for live messages and for the wrapped MAM convention
|
|
100
|
-
// (getHistory.xmpp.ts) - it's stamped by the server itself when the
|
|
101
|
-
// sender joined the room, so it's always present and always correct.
|
|
102
|
-
// The positional convention (onMessageHistory's MAM catch-up path)
|
|
103
|
-
// never called getDataFromXml, so it fell back to splitting the
|
|
104
|
-
// sender-supplied `<data senderJID>` attr on '@' instead - usually the
|
|
105
|
-
// same value, but WRONG (picks up the room's own id, not the
|
|
106
|
-
// sender's) whenever senderJID is absent from the stanza, and simply a
|
|
107
|
-
// different derivation than the live path even when it happens to
|
|
108
|
-
// agree. Prefer the resource-of-`from` here too so every path that
|
|
109
|
-
// reaches this function resolves the same sender identity the same
|
|
110
|
-
// way, instead of MAM catch-up rows needing a later correction once
|
|
111
|
-
// the "official" fetch lands.
|
|
112
|
-
const xmppFrom = (merged.xmppFrom || '').toString();
|
|
113
|
-
const fromResource = xmppFrom.includes('/') ? xmppFrom.split('/')[1] : '';
|
|
114
|
-
|
|
115
96
|
const composed = [firstName, lastName].filter(Boolean).join(' ').trim();
|
|
116
97
|
const existingName = String(merged?.user?.name || '').trim();
|
|
117
98
|
const resolvedName =
|
|
@@ -126,7 +107,7 @@ export const createMessageFromXml = async (
|
|
|
126
107
|
...merged,
|
|
127
108
|
user: {
|
|
128
109
|
...(merged.user || {}),
|
|
129
|
-
id: merged?.user?.id ||
|
|
110
|
+
id: merged?.user?.id || senderLocal,
|
|
130
111
|
name: resolvedName,
|
|
131
112
|
firstName: firstName || merged?.user?.firstName,
|
|
132
113
|
lastName: lastName || merged?.user?.lastName,
|
|
@@ -3,7 +3,7 @@ import { store } from '../roomStore';
|
|
|
3
3
|
import { logout } from '../roomStore/chatSettingsSlice';
|
|
4
4
|
import { setLogoutState } from '../roomStore/roomsSlice';
|
|
5
5
|
import { asyncLocalStorage } from '../hooks/useLocalStorage';
|
|
6
|
-
import {
|
|
6
|
+
import { localStorageConstants } from './constants/LOCAL_STORAGE';
|
|
7
7
|
import { clearRoomsRestCache } from '../networking/api-requests/rooms.api';
|
|
8
8
|
import { clearPersistedState } from '../roomStore/persistence';
|
|
9
9
|
import {
|
|
@@ -53,7 +53,7 @@ export async function ensureScopedChatCache(config?: IConfig): Promise<void> {
|
|
|
53
53
|
clearRoomsRestCache();
|
|
54
54
|
store.dispatch(setLogoutState());
|
|
55
55
|
store.dispatch(logout());
|
|
56
|
-
await
|
|
56
|
+
await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove();
|
|
57
57
|
await clearPersistedState();
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Element } from 'ltx';
|
|
2
2
|
import { Iso639_1Codes, IUser } from '../types/types';
|
|
3
3
|
import { transformArrayToObject } from './transformTranslatations';
|
|
4
|
+
import { normalizeXmppUsername } from './xmppUsername';
|
|
5
|
+
|
|
6
|
+
const getLocalpartFromJid = (jid?: string): string | undefined => {
|
|
7
|
+
const value = String(jid || '').trim();
|
|
8
|
+
if (!value) {return undefined;}
|
|
9
|
+
return value.split('@')[0] || undefined;
|
|
10
|
+
};
|
|
4
11
|
|
|
5
12
|
// Tolerant JSON parse: a malformed `translations` attr must not reject the
|
|
6
13
|
// whole stanza (which would silently drop the message). Mirrors the web
|
|
@@ -64,7 +71,7 @@ export const getDataFromXml = async (stanza: Element): Promise<DataXml | undefin
|
|
|
64
71
|
|
|
65
72
|
const xmppId = fullData?.attrs.id;
|
|
66
73
|
const xmppFrom = fullData?.attrs?.from;
|
|
67
|
-
const [roomJid,
|
|
74
|
+
const [roomJid, userWalletFromResource] = (xmppFrom || '').split('/');
|
|
68
75
|
let id =
|
|
69
76
|
stanza.getChild('result')?.attrs.id ||
|
|
70
77
|
extractTimestamp(stanza?.getChild('stanza-id')?.attrs?.id, stanza);
|
|
@@ -93,6 +100,23 @@ export const getDataFromXml = async (stanza: Element): Promise<DataXml | undefin
|
|
|
93
100
|
const data = fullData?.getChild('data') || stanza?.getChild('data');
|
|
94
101
|
const photoURL = data?.attrs?.photo;
|
|
95
102
|
|
|
103
|
+
// Sender identity, resolved the way the web SDK does it: the occupant
|
|
104
|
+
// RESOURCE of `from` first, then the localpart of `<data senderJID>`.
|
|
105
|
+
//
|
|
106
|
+
// RN only had the first. The translate-tagged send path arrives with no
|
|
107
|
+
// occupant resource and no senderJID either, so `user.id` came out
|
|
108
|
+
// undefined and every downstream fallback landed on the bare room jid's
|
|
109
|
+
// localpart — which for a 1:1 room is `<appId>_<userA>-<appId>_<userB>`.
|
|
110
|
+
// That composite id is what got rendered as the sender's name.
|
|
111
|
+
//
|
|
112
|
+
// normalizeXmppUsername collapses a doubled `<appId>_` prefix so the key
|
|
113
|
+
// matches what usersSet is indexed by.
|
|
114
|
+
const rawUserWallet =
|
|
115
|
+
userWalletFromResource ||
|
|
116
|
+
getLocalpartFromJid(data?.attrs?.senderJID) ||
|
|
117
|
+
undefined;
|
|
118
|
+
const userWallet = normalizeXmppUsername(rawUserWallet) || rawUserWallet;
|
|
119
|
+
|
|
96
120
|
const user = {
|
|
97
121
|
id: userWallet,
|
|
98
122
|
photoURL,
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { AppState } from 'react-native';
|
|
2
2
|
import XmppClient from '../networking/xmppClient';
|
|
3
3
|
import { store } from '../roomStore';
|
|
4
|
-
import {
|
|
5
|
-
applyRoomsPreloadBatch,
|
|
6
|
-
setUnreadSyncing,
|
|
7
|
-
RUNTIME_MESSAGE_LIMIT,
|
|
8
|
-
} from '../roomStore/roomsSlice';
|
|
4
|
+
import { applyRoomsPreloadBatch, setUnreadSyncing } from '../roomStore/roomsSlice';
|
|
9
5
|
import { IMessage, IRoom } from '../types/types';
|
|
10
6
|
|
|
11
7
|
interface HistoryPreloadSchedulerOptions {
|
|
@@ -34,13 +30,6 @@ const DEFAULT_CONCURRENCY = 3;
|
|
|
34
30
|
// `mergeHistoryIntoCache` rarely has to fall back to clear-and-replace.
|
|
35
31
|
const DEFAULT_PAGE_SIZE = 20;
|
|
36
32
|
const DEFAULT_RETRY_LIMIT = 2;
|
|
37
|
-
// When the first page is entirely unread (every fetched message is newer
|
|
38
|
-
// than `lastViewedTimestamp`), the true unread count could be far bigger
|
|
39
|
-
// than `pageSize` — `useUnread()` only ever sees what's been loaded. Page
|
|
40
|
-
// further back, up to this many extra fetches, until we either find the
|
|
41
|
-
// boundary or give up (`unreadCapped` then stays true so callers at least
|
|
42
|
-
// know the count is a floor, not exact). Customer-reported #34.
|
|
43
|
-
const MAX_UNREAD_CATCHUP_PAGES = 8;
|
|
44
33
|
|
|
45
34
|
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
46
35
|
|
|
@@ -237,75 +226,9 @@ export const runHistoryPreloadScheduler = async (
|
|
|
237
226
|
}
|
|
238
227
|
|
|
239
228
|
const nextRoom = store.getState().rooms.rooms[item.jid];
|
|
240
|
-
let combined: IMessage[] = fetchedMessages || [];
|
|
241
|
-
const lastViewed = Number(nextRoom?.lastViewedTimestamp) || 0;
|
|
242
|
-
|
|
243
|
-
// The first page was entirely unread — keep paging older until
|
|
244
|
-
// we find a message at/before `lastViewedTimestamp` (the true
|
|
245
|
-
// boundary) or run out of catch-up budget, so the count isn't
|
|
246
|
-
// silently truncated at `pageSize`.
|
|
247
|
-
if (lastViewed > 0 && computeUnreadCapped(nextRoom, combined, pageSize)) {
|
|
248
|
-
let lastPageLen = combined.length;
|
|
249
|
-
let extraPages = 0;
|
|
250
|
-
while (
|
|
251
|
-
extraPages < MAX_UNREAD_CATCHUP_PAGES &&
|
|
252
|
-
lastPageLen >= pageSize &&
|
|
253
|
-
!signal?.aborted
|
|
254
|
-
) {
|
|
255
|
-
const oldestId = combined.reduce<number | null>((min, m) => {
|
|
256
|
-
const idNum = Number((m as any)?.id);
|
|
257
|
-
if (!Number.isFinite(idNum)) {return min;}
|
|
258
|
-
return min === null || idNum < min ? idNum : min;
|
|
259
|
-
}, null);
|
|
260
|
-
if (oldestId === null) {break;}
|
|
261
|
-
|
|
262
|
-
let older: IMessage[] | undefined;
|
|
263
|
-
try {
|
|
264
|
-
older = await client.getHistoryStanza(
|
|
265
|
-
item.jid,
|
|
266
|
-
pageSize,
|
|
267
|
-
oldestId,
|
|
268
|
-
undefined,
|
|
269
|
-
{
|
|
270
|
-
coalesceRoom: true,
|
|
271
|
-
skipIfPreloaded: !forceReload,
|
|
272
|
-
source: 'background',
|
|
273
|
-
}
|
|
274
|
-
);
|
|
275
|
-
} catch {
|
|
276
|
-
break;
|
|
277
|
-
}
|
|
278
|
-
if (!older || !older.length) {break;}
|
|
279
|
-
|
|
280
|
-
combined = [...older, ...combined];
|
|
281
|
-
lastPageLen = older.length;
|
|
282
|
-
extraPages++;
|
|
283
|
-
|
|
284
|
-
const oldestTs = combined.reduce<number>((minTs, m) => {
|
|
285
|
-
const ts = messageTimestamp(m);
|
|
286
|
-
return ts > 0 ? Math.min(minTs, ts) : minTs;
|
|
287
|
-
}, Number.MAX_SAFE_INTEGER);
|
|
288
|
-
if (oldestTs !== Number.MAX_SAFE_INTEGER && oldestTs <= lastViewed) {
|
|
289
|
-
break;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// `mergeHistoryIntoCache` (roomsSlice) caps whatever we dispatch
|
|
295
|
-
// here to the newest RUNTIME_MESSAGE_LIMIT messages before it
|
|
296
|
-
// ever reaches `unreadMiddleware` — so a catch-up fetch that
|
|
297
|
-
// pulled the true boundary can still have it silently dropped
|
|
298
|
-
// by that cap, leaving a falsely-confident `unreadCapped:false`
|
|
299
|
-
// (bug #34's failure mode again, just one layer downstream).
|
|
300
|
-
// Simulate that cap here so the flag reflects what will
|
|
301
|
-
// actually survive, not just what this fetch retrieved.
|
|
302
|
-
const simulatedStored =
|
|
303
|
-
combined.length > RUNTIME_MESSAGE_LIMIT
|
|
304
|
-
? combined.slice(-RUNTIME_MESSAGE_LIMIT)
|
|
305
|
-
: combined;
|
|
306
229
|
const unreadCapped = computeUnreadCapped(
|
|
307
230
|
nextRoom,
|
|
308
|
-
|
|
231
|
+
fetchedMessages || [],
|
|
309
232
|
pageSize
|
|
310
233
|
);
|
|
311
234
|
|
|
@@ -314,7 +237,7 @@ export const runHistoryPreloadScheduler = async (
|
|
|
314
237
|
rooms: [
|
|
315
238
|
{
|
|
316
239
|
jid: item.jid,
|
|
317
|
-
messages:
|
|
240
|
+
messages: fetchedMessages || [],
|
|
318
241
|
unreadCapped,
|
|
319
242
|
historyPreloadState: 'done',
|
|
320
243
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { setCurrentRoom, setIsLoading } from '../roomStore/roomsSlice';
|
|
2
|
+
import { updatedChatLastTimestamps } from './updatedChatLastTimestamps';
|
|
2
3
|
import { initRoomsPresence } from './initRoomsPresence';
|
|
3
4
|
import XmppClient from '../networking/xmppClient';
|
|
4
5
|
import { IConfig, IRoom, User } from '../types/types';
|
|
5
6
|
import { store } from '../roomStore';
|
|
6
|
-
import { refreshAuthTokensQuietly } from '../networking/authRefresh';
|
|
7
7
|
|
|
8
8
|
const initXmppRooms = async (
|
|
9
9
|
user: User,
|
|
@@ -47,23 +47,19 @@ const initXmppRooms = async (
|
|
|
47
47
|
console.log(res);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// setLastViewedTimestamp, which has neither the forward-only guard
|
|
55
|
-
// nor the future-marker clamp, so it could silently re-clobber a
|
|
56
|
-
// value the clamp had just corrected (bug #38).
|
|
57
|
-
await (xmmpClient as any as XmppClient).getChatsPrivateStoreRequestStanza();
|
|
50
|
+
//@ts-ignore
|
|
51
|
+
const roomTimestampObject: [jid: string, timestamp: string] =
|
|
52
|
+
await (xmmpClient as any as XmppClient).getChatsPrivateStoreRequestStanza();
|
|
53
|
+
updatedChatLastTimestamps(roomTimestampObject, store.dispatch);
|
|
58
54
|
} else {
|
|
59
|
-
|
|
55
|
+
//@ts-ignore
|
|
56
|
+
const roomTimestampObject: [jid: string, timestamp: string] =
|
|
57
|
+
await xmmpClient.getChatsPrivateStoreRequestStanza();
|
|
58
|
+
updatedChatLastTimestamps(roomTimestampObject, store.dispatch);
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
if (config?.refreshTokens?.enabled) {
|
|
63
|
-
|
|
64
|
-
// rotation completely outside the SDK's lock. Routed through the
|
|
65
|
-
// one rotation point, which calls that same function internally.
|
|
66
|
-
refreshAuthTokensQuietly();
|
|
62
|
+
config?.refreshTokens?.refreshFunction?.();
|
|
67
63
|
}
|
|
68
64
|
} catch (error) {
|
|
69
65
|
console.error(error);
|
|
@@ -3,6 +3,19 @@ import { isDateAfter, isDateBefore } from './dateComparison';
|
|
|
3
3
|
|
|
4
4
|
function deepMerge(target: any, source: any): any {
|
|
5
5
|
for (const key in source) {
|
|
6
|
+
if (source[key] === undefined) {
|
|
7
|
+
// `for...in` visits a key even when its value is `undefined` — every
|
|
8
|
+
// stanza parser (getDataFromXml/createMessageFromXml) returns an
|
|
9
|
+
// object literal with `translations` always present, explicitly
|
|
10
|
+
// `undefined` whenever the wire message didn't carry a
|
|
11
|
+
// <translations> element. Without this guard, merging THAT message
|
|
12
|
+
// over an existing row would blow away a translation the row
|
|
13
|
+
// already had (e.g. a MAM/live echo of a message arriving without
|
|
14
|
+
// its translation re-attached) — a real message flips from
|
|
15
|
+
// translated back to original text for no reason. Absence on the
|
|
16
|
+
// incoming side must mean "leave it alone", never "clear it".
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
6
19
|
if (
|
|
7
20
|
source[key] &&
|
|
8
21
|
typeof source[key] === 'object' &&
|
|
@@ -14,7 +14,15 @@
|
|
|
14
14
|
* matches. A raw objectId on its own is matched too, since some senders
|
|
15
15
|
* carry only that half.
|
|
16
16
|
*/
|
|
17
|
-
const
|
|
17
|
+
const ETHORA_ID_PART = '[0-9a-f]{24}(?:_[0-9a-f]{24})?';
|
|
18
|
+
// A private (1:1) room's own id is two of those joined by a hyphen —
|
|
19
|
+
// `<appId>_<userA>-<appId>_<userB>` — and that is what a message whose
|
|
20
|
+
// `from` carries no occupant resource resolves to. Matched as well, so a
|
|
21
|
+
// bubble is never captioned with a room id.
|
|
22
|
+
const ETHORA_ID = new RegExp(
|
|
23
|
+
`^${ETHORA_ID_PART}(?:-${ETHORA_ID_PART})?$`,
|
|
24
|
+
'i'
|
|
25
|
+
);
|
|
18
26
|
|
|
19
27
|
export const isUnresolvedSenderId = (name?: string): boolean => {
|
|
20
28
|
const trimmed = String(name || '').trim();
|