@ethora/chat-component-rn 26.8.1 → 26.8.2
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 +96 -0
- package/README.md +43 -10
- package/lib/commonjs/assets/icons.js +7 -2
- 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 +29 -8
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +9 -3
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +150 -14
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +34 -13
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +29 -9
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +5 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +13 -5
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +208 -35
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +317 -98
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +322 -110
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +546 -203
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +226 -0
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +69 -27
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +8 -0
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +202 -106
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +563 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +210 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +507 -244
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +74 -46
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +9 -2
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +21 -7
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +2 -1
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +37 -9
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +80 -11
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +9 -3
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +14 -4
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +119 -61
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +184 -59
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +19 -1
- 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/getChatBackground.js +23 -0
- package/lib/commonjs/helpers/getChatBackground.js.map +1 -0
- package/lib/commonjs/helpers/getDisplayFileName.js +79 -0
- package/lib/commonjs/helpers/getDisplayFileName.js.map +1 -0
- package/lib/commonjs/helpers/getServerReadTimestamp.js +188 -0
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/commonjs/helpers/historyPreloadScheduler.js +65 -2
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +14 -8
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +51 -9
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isOwnMessage.js +75 -0
- package/lib/commonjs/helpers/isOwnMessage.js.map +1 -0
- package/lib/commonjs/helpers/keyboardLayout.js +12 -2
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +31 -0
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/commonjs/helpers/mimeToExtension.js +6 -14
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/msgSortableMs.js +37 -0
- package/lib/commonjs/helpers/msgSortableMs.js.map +1 -0
- package/lib/commonjs/helpers/persistCrypto.js +122 -0
- package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
- package/lib/commonjs/helpers/pickImageAsset.js +68 -0
- package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
- package/lib/commonjs/helpers/pushPayload.js +71 -0
- package/lib/commonjs/helpers/pushPayload.js.map +1 -0
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +130 -17
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/secureFileUrl.js +101 -0
- package/lib/commonjs/helpers/secureFileUrl.js.map +1 -0
- package/lib/commonjs/helpers/secureKeyValue.js +83 -0
- package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/commonjs/helpers/secureUserStorage.js +75 -0
- package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
- package/lib/commonjs/helpers/shallowEqual.js +36 -0
- package/lib/commonjs/helpers/shallowEqual.js.map +1 -0
- package/lib/commonjs/helpers/sheetGestures.js +32 -0
- package/lib/commonjs/helpers/sheetGestures.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +45 -12
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +30 -10
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +27 -0
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useFileToken.js +10 -0
- package/lib/commonjs/hooks/useFileToken.js.map +1 -0
- package/lib/commonjs/hooks/useLogout.js +23 -7
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +8 -11
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +50 -14
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +145 -37
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js +44 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +134 -60
- 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 +68 -9
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +62 -112
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/authRefresh.js +332 -0
- package/lib/commonjs/networking/authRefresh.js.map +1 -0
- package/lib/commonjs/networking/stanzaHandlers.js +41 -28
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +124 -8
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +26 -7
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +35 -2
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +226 -23
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +151 -38
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +15 -13
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/assets/icons.js +6 -1
- 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 +29 -8
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +9 -3
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +152 -16
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +35 -14
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +30 -10
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +5 -1
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +13 -5
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +207 -35
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +319 -101
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +313 -113
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +549 -207
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +223 -0
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +70 -28
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +9 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +205 -108
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +555 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +205 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +509 -248
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +76 -48
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +9 -2
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +21 -7
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +2 -1
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +37 -9
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +81 -12
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +9 -3
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +14 -4
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +120 -62
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +184 -60
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +19 -1
- 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/getChatBackground.js +18 -0
- package/lib/module/helpers/getChatBackground.js.map +1 -0
- package/lib/module/helpers/getDisplayFileName.js +73 -0
- package/lib/module/helpers/getDisplayFileName.js.map +1 -0
- package/lib/module/helpers/getServerReadTimestamp.js +181 -0
- package/lib/module/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/module/helpers/historyPreloadScheduler.js +66 -3
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +14 -8
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +52 -9
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isOwnMessage.js +70 -0
- package/lib/module/helpers/isOwnMessage.js.map +1 -0
- package/lib/module/helpers/keyboardLayout.js +12 -2
- package/lib/module/helpers/keyboardLayout.js.map +1 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +25 -0
- package/lib/module/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/module/helpers/mimeToExtension.js +6 -13
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/msgSortableMs.js +32 -0
- package/lib/module/helpers/msgSortableMs.js.map +1 -0
- package/lib/module/helpers/persistCrypto.js +115 -0
- package/lib/module/helpers/persistCrypto.js.map +1 -0
- package/lib/module/helpers/pickImageAsset.js +63 -0
- package/lib/module/helpers/pickImageAsset.js.map +1 -0
- package/lib/module/helpers/pushPayload.js +63 -0
- package/lib/module/helpers/pushPayload.js.map +1 -0
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +130 -16
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/secureFileUrl.js +91 -0
- package/lib/module/helpers/secureFileUrl.js.map +1 -0
- package/lib/module/helpers/secureKeyValue.js +75 -0
- package/lib/module/helpers/secureKeyValue.js.map +1 -0
- package/lib/module/helpers/secureStoreRuntime.js +52 -0
- package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/module/helpers/secureUserStorage.js +72 -0
- package/lib/module/helpers/secureUserStorage.js.map +1 -0
- package/lib/module/helpers/shallowEqual.js +31 -0
- package/lib/module/helpers/shallowEqual.js.map +1 -0
- package/lib/module/helpers/sheetGestures.js +26 -0
- package/lib/module/helpers/sheetGestures.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +46 -13
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +30 -10
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +28 -1
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useFileToken.js +5 -0
- package/lib/module/hooks/useFileToken.js.map +1 -0
- package/lib/module/hooks/useLogout.js +23 -7
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +8 -11
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +52 -16
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +145 -37
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js +14 -2
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +131 -59
- 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 +64 -7
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +61 -113
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/authRefresh.js +321 -0
- package/lib/module/networking/authRefresh.js.map +1 -0
- package/lib/module/networking/stanzaHandlers.js +41 -28
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +124 -8
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +26 -7
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +37 -4
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +223 -22
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +139 -34
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +15 -13
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/assets/icons.d.ts +16 -0
- 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 +10 -1
- 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/RoomList.d.ts +7 -0
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +9 -0
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +10 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +9 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -0
- 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 +4 -2
- 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/ProfileHeader/ProfileHeader.d.ts +75 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +25 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -0
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +6 -1
- 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 +16 -0
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +1 -0
- 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/MessageImage.d.ts +14 -0
- package/lib/typescript/components/styled/MessageImage.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 +8 -0
- 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/getChatBackground.d.ts +15 -0
- package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -0
- package/lib/typescript/helpers/getDisplayFileName.d.ts +49 -0
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +1 -0
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +108 -0
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +1 -0
- 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 +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +36 -0
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +1 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts +5 -1
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +3 -0
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts +0 -15
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/msgSortableMs.d.ts +2 -0
- package/lib/typescript/helpers/msgSortableMs.d.ts.map +1 -0
- package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
- package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
- package/lib/typescript/helpers/pushPayload.d.ts +7 -0
- package/lib/typescript/helpers/pushPayload.d.ts.map +1 -0
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +7 -0
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +1 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
- package/lib/typescript/helpers/shallowEqual.d.ts +11 -0
- package/lib/typescript/helpers/shallowEqual.d.ts.map +1 -0
- package/lib/typescript/helpers/sheetGestures.d.ts +20 -0
- package/lib/typescript/helpers/sheetGestures.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +4 -1
- 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/useFileToken.d.ts +2 -0
- package/lib/typescript/hooks/useFileToken.d.ts.map +1 -0
- 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 +1 -0
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +9 -2
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +27 -0
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +12 -6
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/authRefresh.d.ts +95 -0
- package/lib/typescript/networking/authRefresh.d.ts.map +1 -0
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +10 -2
- 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 +14 -0
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +16 -0
- 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 +18 -1
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +43 -3
- 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 +50 -5
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +41 -28
- package/src/assets/icons.tsx +48 -9
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +29 -7
- package/src/components/MainComponents/ChatHeader.tsx +9 -3
- package/src/components/MainComponents/ChatRoom.tsx +161 -15
- package/src/components/MainComponents/ChatWrapper.tsx +36 -20
- package/src/components/MainComponents/LoginWrapper.tsx +1 -0
- package/src/components/MainComponents/MediaMessage.tsx +26 -8
- package/src/components/MainComponents/MessageContainer.tsx +5 -1
- package/src/components/MainComponents/MessageList.tsx +23 -4
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +21 -14
- package/src/components/MainComponents/RoomList.tsx +236 -39
- package/src/components/Menu/HeaderRoomListMenu.tsx +328 -75
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +333 -97
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +600 -282
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +244 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +79 -38
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +2 -1
- package/src/components/Modals/Modal/Modal.tsx +7 -0
- package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +219 -119
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +624 -0
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +217 -0
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +14 -4
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +617 -307
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +75 -58
- package/src/components/Modals/styledModalComponents.tsx +9 -2
- package/src/components/RoomComponents/ChatRoomItem.tsx +18 -3
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +28 -4
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +18 -3
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +18 -3
- package/src/components/VideoCalls/VideoCallSession.tsx +8 -3
- package/src/components/styled/AudioMessage.tsx +2 -1
- package/src/components/styled/MessageImage.tsx +53 -7
- package/src/components/styled/SendInput.tsx +83 -12
- package/src/components/styled/StyledComponents.ts +9 -3
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +11 -4
- package/src/components/styled/UnsupportedType.tsx +14 -4
- package/src/components/styled/VideoMessage.tsx +131 -54
- package/src/context/xmppProvider.tsx +216 -57
- package/src/helpers/createMessageFromXml.ts +20 -1
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getChatBackground.ts +18 -0
- package/src/helpers/getDisplayFileName.ts +87 -0
- package/src/helpers/getServerReadTimestamp.ts +197 -0
- package/src/helpers/historyPreloadScheduler.ts +80 -3
- package/src/helpers/initXmppRooms.tsx +14 -10
- package/src/helpers/insertMessageWithDelimiter.ts +55 -19
- package/src/helpers/isOwnMessage.ts +90 -0
- package/src/helpers/keyboardLayout.ts +23 -2
- package/src/helpers/mediaLibraryRuntime.ts +25 -0
- package/src/helpers/mimeToExtension.ts +6 -22
- package/src/helpers/msgSortableMs.ts +25 -0
- package/src/helpers/persistCrypto.ts +127 -0
- package/src/helpers/pickImageAsset.ts +68 -0
- package/src/helpers/pushPayload.ts +62 -0
- package/src/helpers/resolveInitBeforeLoadUser.ts +125 -18
- package/src/helpers/secureFileUrl.ts +103 -0
- package/src/helpers/secureKeyValue.ts +80 -0
- package/src/helpers/secureStoreRuntime.ts +62 -0
- package/src/helpers/secureUserStorage.ts +80 -0
- package/src/helpers/shallowEqual.ts +33 -0
- package/src/helpers/sheetGestures.ts +25 -0
- package/src/hooks/useChatRoomFocus.ts +49 -9
- package/src/hooks/useChatWrapperInit.ts +30 -10
- package/src/hooks/useComposing.tsx +37 -1
- package/src/hooks/useFileToken.ts +7 -0
- package/src/hooks/useLogout.tsx +29 -9
- package/src/hooks/usePendingNotification.ts +5 -11
- package/src/hooks/useSendMessage.tsx +60 -15
- package/src/hooks/useUnreadMessagesCounter.ts +11 -0
- package/src/i18n/strings.ts +145 -37
- package/src/main.ts +26 -2
- package/src/networking/api-requests/auth.api.ts +156 -48
- 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 +79 -7
- package/src/networking/apiClient.ts +68 -123
- package/src/networking/authRefresh.ts +451 -0
- package/src/networking/stanzaHandlers.ts +44 -28
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +71 -10
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +6 -1
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +12 -1
- package/src/networking/xmppClient.ts +141 -9
- package/src/roomStore/chatSettingsSlice.ts +34 -10
- package/src/roomStore/index.ts +40 -4
- package/src/roomStore/persistence.ts +234 -24
- package/src/roomStore/roomsSlice.ts +161 -29
- package/src/services/pushSubscriptionService.ts +18 -13
- package/src/types/types.ts +72 -5
- package/src/version.ts +1 -1
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RefreshFatalError = void 0;
|
|
7
|
+
exports.__resetAuthRefreshStateForTests = __resetAuthRefreshStateForTests;
|
|
8
|
+
exports.parseRefreshErrorCode = exports.isRefreshFatalError = void 0;
|
|
9
|
+
exports.refreshAuthTokens = refreshAuthTokens;
|
|
10
|
+
exports.refreshAuthTokensQuietly = refreshAuthTokensQuietly;
|
|
11
|
+
var _apiClient = _interopRequireDefault(require("./apiClient"));
|
|
12
|
+
var _roomStore = require("../roomStore");
|
|
13
|
+
var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
|
|
14
|
+
var _secureUserStorage = require("../helpers/secureUserStorage");
|
|
15
|
+
var _devLogger = require("../utils/devLogger");
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
/**
|
|
18
|
+
* THE single refresh-token rotation point for the SDK.
|
|
19
|
+
*
|
|
20
|
+
* The backend now runs refresh-token ROTATION with REUSE DETECTION:
|
|
21
|
+
* every successful `/users/login/refresh` burns the presented refresh
|
|
22
|
+
* token and issues a new one. Presenting an already-rotated token is
|
|
23
|
+
* indistinguishable, server-side, from a stolen token — so it is
|
|
24
|
+
* treated as theft and (once the backend leaves monitor mode and
|
|
25
|
+
* enables enforcing mode) kills the whole token family.
|
|
26
|
+
*
|
|
27
|
+
* That puts three hard obligations on the client:
|
|
28
|
+
*
|
|
29
|
+
* 1. Persist the NEW refreshToken from every response, immediately,
|
|
30
|
+
* before any other logic can throw and drop it on the floor.
|
|
31
|
+
* 2. Never rotate concurrently. Two parallel refreshes both start
|
|
32
|
+
* from the same token; the loser presents a burned one and looks
|
|
33
|
+
* like an attacker. React Native is single-process, so a shared
|
|
34
|
+
* in-flight promise is the whole lock — no Web Locks needed (the
|
|
35
|
+
* web build of this component does need them, see its own
|
|
36
|
+
* `authRefresh.ts`).
|
|
37
|
+
* 3. Route EVERY refresh path through here. One "side" refresh
|
|
38
|
+
* elsewhere in the codebase breaks the scheme for everyone.
|
|
39
|
+
*
|
|
40
|
+
* Callers must also stop treating 401 as "log out". Two of the four
|
|
41
|
+
* refresh error codes are race signals, not auth failures — see
|
|
42
|
+
* `RefreshErrorCode` below and `RefreshFatalError`.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Thrown when the session is genuinely dead and the caller must do a
|
|
47
|
+
* hard logout (clear storage, drop XMPP, send the user to login).
|
|
48
|
+
*
|
|
49
|
+
* Anything else this module rejects with — network errors, 5xx, an
|
|
50
|
+
* unrecognised 401 — is NOT fatal and must NOT trigger a logout.
|
|
51
|
+
*/
|
|
52
|
+
class RefreshFatalError extends Error {
|
|
53
|
+
constructor(code, message) {
|
|
54
|
+
super(message || `Refresh failed: ${code}`);
|
|
55
|
+
this.name = 'RefreshFatalError';
|
|
56
|
+
this.code = code;
|
|
57
|
+
// Required for `instanceof` to survive TS's ES5 class-extends-builtin
|
|
58
|
+
// downlevelling, which RN's babel preset still applies.
|
|
59
|
+
Object.setPrototypeOf(this, RefreshFatalError.prototype);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.RefreshFatalError = RefreshFatalError;
|
|
63
|
+
const isRefreshFatalError = error => error instanceof RefreshFatalError || error?.name === 'RefreshFatalError';
|
|
64
|
+
exports.isRefreshFatalError = isRefreshFatalError;
|
|
65
|
+
const REFRESH_ENDPOINT = '/v1/users/login/refresh';
|
|
66
|
+
|
|
67
|
+
/** `REFRESH_IN_PROGRESS` retry budget, per backend guidance (~300ms x 2-3). */
|
|
68
|
+
const IN_PROGRESS_MAX_ATTEMPTS = 3;
|
|
69
|
+
const IN_PROGRESS_BASE_DELAY_MS = 300;
|
|
70
|
+
/**
|
|
71
|
+
* Jitter matters: after a network blip every client in the app retries
|
|
72
|
+
* on the same schedule and would hammer the rotation mutex in lockstep.
|
|
73
|
+
*/
|
|
74
|
+
const IN_PROGRESS_JITTER_MS = 150;
|
|
75
|
+
const KNOWN_CODES = ['REFRESH_IN_PROGRESS', 'REFRESH_TOKEN_ALREADY_ROTATED', 'REFRESH_TOKEN_REUSE_DETECTED', 'REFRESH_TOKEN_NOT_FOUND'];
|
|
76
|
+
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
77
|
+
const inProgressDelay = attempt => IN_PROGRESS_BASE_DELAY_MS * attempt + Math.floor(Math.random() * IN_PROGRESS_JITTER_MS);
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* All four codes come back as HTTP 401, so the status alone tells us
|
|
81
|
+
* nothing — the code in the body is the only signal.
|
|
82
|
+
*
|
|
83
|
+
* TODO(backend-confirm): the exact location of `code` in the payload is
|
|
84
|
+
* not documented yet. Until it is, probe every shape the API uses
|
|
85
|
+
* elsewhere and take the first hit. Once confirmed, collapse this to
|
|
86
|
+
* the single real path.
|
|
87
|
+
*/
|
|
88
|
+
const parseRefreshErrorCode = error => {
|
|
89
|
+
const response = error?.response;
|
|
90
|
+
if (!response) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const data = response.data;
|
|
94
|
+
const candidates = [data?.code, data?.error?.code, data?.errors?.[0]?.code, data?.error, data?.message, response.headers?.['x-error-code']];
|
|
95
|
+
for (const candidate of candidates) {
|
|
96
|
+
if (typeof candidate !== 'string') {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const match = KNOWN_CODES.find(code => candidate.includes(code));
|
|
100
|
+
if (match) {
|
|
101
|
+
return match;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
};
|
|
106
|
+
exports.parseRefreshErrorCode = parseRefreshErrorCode;
|
|
107
|
+
const getStoreUser = () => _roomStore.store.getState().chatSettingStore?.user || {};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The refresh token as of RIGHT NOW. Read at the moment of use, never
|
|
111
|
+
* captured ahead of time — that is the single-process equivalent of the
|
|
112
|
+
* web build's "re-read inside the lock".
|
|
113
|
+
*
|
|
114
|
+
* Redux is the source of truth in RN (one process, one store);
|
|
115
|
+
* AsyncStorage is only consulted as a cold-start fallback, before
|
|
116
|
+
* `resolveInitBeforeLoadUser` has hydrated the store.
|
|
117
|
+
*/
|
|
118
|
+
const readCurrentRefreshToken = async () => {
|
|
119
|
+
const fromStore = getStoreUser().refreshToken;
|
|
120
|
+
if (fromStore) {
|
|
121
|
+
return fromStore;
|
|
122
|
+
}
|
|
123
|
+
const stored = await (0, _secureUserStorage.secureUserStorage)().get();
|
|
124
|
+
return stored?.refreshToken || '';
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Persist BEFORE resolving. The dispatch updates redux (and, until
|
|
129
|
+
* phase 6 lands, fires its own best-effort AsyncStorage write); the
|
|
130
|
+
* awaited write below is the one that actually guarantees the rotated
|
|
131
|
+
* token survives the app being killed a moment later. Losing it means
|
|
132
|
+
* the next launch presents a burned token — i.e. looks like theft.
|
|
133
|
+
*/
|
|
134
|
+
const persistTokens = async result => {
|
|
135
|
+
_roomStore.store.dispatch((0, _chatSettingsSlice.refreshTokens)({
|
|
136
|
+
token: result.token,
|
|
137
|
+
refreshToken: result.refreshToken,
|
|
138
|
+
xmppPassword: result.xmppPassword,
|
|
139
|
+
fileToken: result.fileToken
|
|
140
|
+
}));
|
|
141
|
+
try {
|
|
142
|
+
// Write the post-dispatch snapshot rather than a read-modify-write
|
|
143
|
+
// merge, so this can't race the reducer's own write back to a
|
|
144
|
+
// stale copy of the surrounding user fields.
|
|
145
|
+
await (0, _secureUserStorage.secureUserStorage)().set(_roomStore.store.getState().chatSettingStore.user);
|
|
146
|
+
} catch (error) {
|
|
147
|
+
(0, _devLogger.pushLog)('warn', 'authRefresh: failed to persist rotated tokens', error);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* A rotation that happened somewhere we didn't drive — currently only
|
|
153
|
+
* reachable via the ALREADY_ROTATED recovery path, kept separate so the
|
|
154
|
+
* web build and this one stay structurally identical.
|
|
155
|
+
*/
|
|
156
|
+
const adoptStoredTokens = async () => {
|
|
157
|
+
const stored = await (0, _secureUserStorage.secureUserStorage)().get();
|
|
158
|
+
if (!stored?.refreshToken || !stored?.token) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const user = getStoreUser();
|
|
162
|
+
if (user.refreshToken !== stored.refreshToken) {
|
|
163
|
+
_roomStore.store.dispatch((0, _chatSettingsSlice.refreshTokens)({
|
|
164
|
+
token: stored.token,
|
|
165
|
+
refreshToken: stored.refreshToken
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
token: stored.token,
|
|
170
|
+
refreshToken: stored.refreshToken,
|
|
171
|
+
xmppPassword: stored.xmppPassword,
|
|
172
|
+
fileToken: stored.fileToken
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/** Host-supplied rotation, mirrors `IConfig['refreshTokens']['refreshFunction']`. */
|
|
177
|
+
|
|
178
|
+
const runConsumerRefresh = async refreshFunction => {
|
|
179
|
+
const refreshed = await refreshFunction();
|
|
180
|
+
if (!refreshed?.accessToken) {
|
|
181
|
+
throw new Error('Custom refresh function did not return an access token');
|
|
182
|
+
}
|
|
183
|
+
if (!refreshed.refreshToken) {
|
|
184
|
+
// Not fatal — some hosts still run non-rotating backends — but on a
|
|
185
|
+
// rotating one this silently keeps a burned token around, which is
|
|
186
|
+
// exactly the failure the new scheme punishes.
|
|
187
|
+
(0, _devLogger.pushLog)('warn', 'authRefresh: custom refreshFunction returned no refreshToken; ' + 'keeping the existing one. On a rotating backend this will be ' + 'seen as token reuse.');
|
|
188
|
+
}
|
|
189
|
+
const result = {
|
|
190
|
+
token: refreshed.accessToken,
|
|
191
|
+
refreshToken: refreshed.refreshToken || (await readCurrentRefreshToken()) || '',
|
|
192
|
+
xmppPassword: refreshed.xmppPassword,
|
|
193
|
+
fileToken: refreshed.fileToken
|
|
194
|
+
};
|
|
195
|
+
await persistTokens(result);
|
|
196
|
+
return result;
|
|
197
|
+
};
|
|
198
|
+
const requestRotation = async refreshToken => {
|
|
199
|
+
const response = await _apiClient.default.post(REFRESH_ENDPOINT, {}, {
|
|
200
|
+
headers: {
|
|
201
|
+
Authorization: refreshToken
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
const result = {
|
|
205
|
+
token: response?.data?.token || '',
|
|
206
|
+
refreshToken: response?.data?.refreshToken || '',
|
|
207
|
+
wsToken: response?.data?.wsToken,
|
|
208
|
+
xmppPassword: response?.data?.xmppPassword,
|
|
209
|
+
fileToken: response?.data?.fileToken
|
|
210
|
+
};
|
|
211
|
+
if (!result.token || !result.refreshToken) {
|
|
212
|
+
throw new Error('Refresh response did not contain both tokens');
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Persist first, resolve second. Every early return between here and
|
|
216
|
+
// the caller is a chance to lose the rotation.
|
|
217
|
+
await persistTokens(result);
|
|
218
|
+
return result;
|
|
219
|
+
};
|
|
220
|
+
const performRefresh = async overrideToken => {
|
|
221
|
+
const consumerRefresh = _roomStore.store.getState().chatSettingStore?.config?.refreshTokens?.refreshFunction;
|
|
222
|
+
if (consumerRefresh) {
|
|
223
|
+
// A configured host function wins unconditionally — including over
|
|
224
|
+
// an explicit bootstrap token. Hosts that embed this SDK often own
|
|
225
|
+
// the Ethora refresh token themselves (their own storage, their own
|
|
226
|
+
// rotation) and only hand us a copy; rotating it here would burn
|
|
227
|
+
// THEIR token behind their back and leave them holding a dead one.
|
|
228
|
+
//
|
|
229
|
+
// It still has to be serialised — it hits the same backend mutex —
|
|
230
|
+
// hence running it inside the shared in-flight promise.
|
|
231
|
+
return runConsumerRefresh(consumerRefresh);
|
|
232
|
+
}
|
|
233
|
+
for (let attempt = 1; attempt <= IN_PROGRESS_MAX_ATTEMPTS; attempt++) {
|
|
234
|
+
const refreshToken = overrideToken || (await readCurrentRefreshToken());
|
|
235
|
+
if (!refreshToken) {
|
|
236
|
+
// Deliberately NOT fatal: a missing token mid-bootstrap must not
|
|
237
|
+
// nuke a session that is still being hydrated.
|
|
238
|
+
throw new Error('Refresh token is missing');
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
return await requestRotation(refreshToken);
|
|
242
|
+
} catch (error) {
|
|
243
|
+
const code = parseRefreshErrorCode(error);
|
|
244
|
+
if (code === 'REFRESH_IN_PROGRESS') {
|
|
245
|
+
if (attempt < IN_PROGRESS_MAX_ATTEMPTS) {
|
|
246
|
+
await sleep(inProgressDelay(attempt));
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
// Budget spent. Whoever holds the mutex has very likely
|
|
250
|
+
// finished and written a newer token — take it if so. Skipped
|
|
251
|
+
// for an explicit token: it may belong to a different session
|
|
252
|
+
// than whatever is currently in storage.
|
|
253
|
+
const adopted = overrideToken ? null : await adoptStoredTokens();
|
|
254
|
+
if (adopted && adopted.refreshToken !== refreshToken) {
|
|
255
|
+
return adopted;
|
|
256
|
+
}
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
if (code === 'REFRESH_TOKEN_ALREADY_ROTATED') {
|
|
260
|
+
// Our copy is stale. If something already wrote a newer token,
|
|
261
|
+
// this is a benign race — use it. Otherwise the session really
|
|
262
|
+
// is unrecoverable.
|
|
263
|
+
const adopted = overrideToken ? null : await adoptStoredTokens();
|
|
264
|
+
if (adopted && adopted.refreshToken !== refreshToken) {
|
|
265
|
+
return adopted;
|
|
266
|
+
}
|
|
267
|
+
throw new RefreshFatalError(code);
|
|
268
|
+
}
|
|
269
|
+
if (code === 'REFRESH_TOKEN_REUSE_DETECTED' || code === 'REFRESH_TOKEN_NOT_FOUND') {
|
|
270
|
+
throw new RefreshFatalError(code);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Network error, 5xx, plain 401 without a code — pass through
|
|
274
|
+
// untouched. The caller must not log out on these.
|
|
275
|
+
throw error;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Unreachable: the loop either returns or throws.
|
|
280
|
+
throw new Error('Refresh attempts exhausted');
|
|
281
|
+
};
|
|
282
|
+
let inflight = null;
|
|
283
|
+
let lastRotationAt = 0;
|
|
284
|
+
const QUIET_ROTATION_MIN_INTERVAL_MS = 5 * 60 * 1000;
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Rotate the tokens. Concurrent callers share ONE request — this is the
|
|
288
|
+
* lock the new backend scheme requires.
|
|
289
|
+
*
|
|
290
|
+
* Rejects with `RefreshFatalError` when the session is dead (caller
|
|
291
|
+
* should hard-logout) and with a plain error otherwise (caller should
|
|
292
|
+
* surface the failure and leave the session alone).
|
|
293
|
+
*/
|
|
294
|
+
function refreshAuthTokens(options) {
|
|
295
|
+
if (inflight) {
|
|
296
|
+
// Whatever that rotation produces is at least as fresh as anything
|
|
297
|
+
// this caller could have asked for.
|
|
298
|
+
return inflight;
|
|
299
|
+
}
|
|
300
|
+
inflight = performRefresh(options?.refreshToken).then(result => {
|
|
301
|
+
lastRotationAt = Date.now();
|
|
302
|
+
return result;
|
|
303
|
+
}).finally(() => {
|
|
304
|
+
inflight = null;
|
|
305
|
+
});
|
|
306
|
+
return inflight;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Fire-and-forget variant for call sites that only want "make sure the
|
|
311
|
+
* tokens are fresh" and have no meaningful error handling — chat
|
|
312
|
+
* bootstrap, XMPP reconnect. Never rejects.
|
|
313
|
+
*/
|
|
314
|
+
|
|
315
|
+
async function refreshAuthTokensQuietly(options) {
|
|
316
|
+
if (!options?.force && Date.now() - lastRotationAt < QUIET_ROTATION_MIN_INTERVAL_MS) {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
return await refreshAuthTokens();
|
|
321
|
+
} catch (error) {
|
|
322
|
+
(0, _devLogger.pushLog)(isRefreshFatalError(error) ? 'error' : 'warn', 'authRefresh: background refresh failed', error);
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/** Test seam — drops any shared in-flight promise between cases. */
|
|
328
|
+
function __resetAuthRefreshStateForTests() {
|
|
329
|
+
inflight = null;
|
|
330
|
+
lastRotationAt = 0;
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=authRefresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_apiClient","_interopRequireDefault","require","_roomStore","_chatSettingsSlice","_secureUserStorage","_devLogger","e","__esModule","default","RefreshFatalError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","exports","isRefreshFatalError","error","REFRESH_ENDPOINT","IN_PROGRESS_MAX_ATTEMPTS","IN_PROGRESS_BASE_DELAY_MS","IN_PROGRESS_JITTER_MS","KNOWN_CODES","sleep","ms","Promise","resolve","setTimeout","inProgressDelay","attempt","Math","floor","random","parseRefreshErrorCode","response","data","candidates","errors","headers","candidate","match","find","includes","getStoreUser","store","getState","chatSettingStore","user","readCurrentRefreshToken","fromStore","refreshToken","stored","secureUserStorage","get","persistTokens","result","dispatch","refreshTokens","token","xmppPassword","fileToken","set","pushLog","adoptStoredTokens","runConsumerRefresh","refreshFunction","refreshed","accessToken","requestRotation","http","post","Authorization","wsToken","performRefresh","overrideToken","consumerRefresh","config","adopted","inflight","lastRotationAt","QUIET_ROTATION_MIN_INTERVAL_MS","refreshAuthTokens","options","then","Date","now","finally","refreshAuthTokensQuietly","force","__resetAuthRefreshStateForTests"],"sourceRoot":"../../../src","sources":["networking/authRefresh.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -183,7 +183,8 @@ const onMessageHistory = async stanza => {
|
|
|
183
183
|
// what senderJID would have held — fall back to it. createMessageFromXml
|
|
184
184
|
// already derives a display name from the jid when senderFirstName/
|
|
185
185
|
// senderLastName are absent.
|
|
186
|
-
const
|
|
186
|
+
const forwardedMessage = stanza.getChild('result')?.getChild('forwarded')?.getChild('message');
|
|
187
|
+
const innerFrom = forwardedMessage?.attrs?.from || stanza.attrs.from;
|
|
187
188
|
const senderJID = data?.attrs?.senderJID || innerFrom;
|
|
188
189
|
if (!data?.attrs || !senderJID) {
|
|
189
190
|
// console.log(
|
|
@@ -192,35 +193,47 @@ const onMessageHistory = async stanza => {
|
|
|
192
193
|
// );
|
|
193
194
|
return;
|
|
194
195
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
// read only <data> attrs + <body>, so the <translations> payload and
|
|
198
|
-
// the <translate source> tag never made it onto archived messages.
|
|
199
|
-
// Since every transcript is MAM-backfilled on room open, that alone
|
|
200
|
-
// made translation look completely dead — the translations existed on
|
|
201
|
-
// the wire and were dropped at this exact parse. getDataFromXml also
|
|
202
|
-
// supplies xmppId (dedupe against the optimistic copy) and the
|
|
203
|
-
// resource||senderJID-localpart sender id.
|
|
204
|
-
const parsed = await (0, _getDataFromXml.getDataFromXml)(stanza);
|
|
205
|
-
const {
|
|
206
|
-
data: pData,
|
|
207
|
-
id: pId,
|
|
208
|
-
body: pBody,
|
|
209
|
-
...pRest
|
|
210
|
-
} = parsed ?? {};
|
|
211
|
-
const mergedData = {
|
|
212
|
-
...(pData || data.attrs)
|
|
196
|
+
const mergedAttrs = {
|
|
197
|
+
...data.attrs
|
|
213
198
|
};
|
|
214
|
-
if (!
|
|
215
|
-
|
|
199
|
+
if (!mergedAttrs.senderJID) {
|
|
200
|
+
mergedAttrs.senderJID = senderJID;
|
|
216
201
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
202
|
+
// The forwarded <message>'s own stanza id is our original send id
|
|
203
|
+
// (what `xmppId` holds on the live/wrapped paths) - capture it so
|
|
204
|
+
// this MAM-replayed message dedupes against its live echo /
|
|
205
|
+
// optimistic pending bubble the same way, instead of never carrying
|
|
206
|
+
// an xmppId at all.
|
|
207
|
+
if (forwardedMessage?.attrs?.id) {
|
|
208
|
+
mergedAttrs.xmppId = forwardedMessage.attrs.id;
|
|
209
|
+
}
|
|
210
|
+
const positionalMessage = await (0, _createMessageFromXml.createMessageFromXml)(mergedAttrs, body, id,
|
|
211
|
+
// Bug #41: pass the resource-bearing occupant `from`
|
|
212
|
+
// (room@conference/sender-id) here, not the outer envelope's
|
|
213
|
+
// `stanza.attrs.from` (which has no resource for a MAM result).
|
|
214
|
+
// createMessageFromXml derives `user.id` from this field's
|
|
215
|
+
// resource - the same authoritative source getDataFromXml uses
|
|
216
|
+
// for live messages - so catch-up rows resolve the correct
|
|
217
|
+
// sender from the very first render instead of needing a later
|
|
218
|
+
// correction once the "official" history fetch lands.
|
|
219
|
+
innerFrom, !!deleted);
|
|
220
|
+
|
|
221
|
+
// Translations ride on the archived stanza too (<translations> +
|
|
222
|
+
// <translate source>), but the positional parse above only reads
|
|
223
|
+
// <data> attrs + <body>, so every MAM-backfilled message lost them -
|
|
224
|
+
// translation looked dead on every room open. Parse the full stanza
|
|
225
|
+
// the way the realtime path does and carry ONLY those two fields over,
|
|
226
|
+
// so sender/xmppId resolution above (bug #41) stays exactly as is.
|
|
227
|
+
const parsedFull = await (0, _getDataFromXml.getDataFromXml)(stanza).catch(() => undefined);
|
|
228
|
+
const rawMessage = {
|
|
229
|
+
...positionalMessage,
|
|
230
|
+
...(parsedFull?.translations ? {
|
|
231
|
+
translations: parsedFull.translations
|
|
232
|
+
} : {}),
|
|
233
|
+
...(parsedFull?.langSource ? {
|
|
234
|
+
langSource: parsedFull.langSource
|
|
235
|
+
} : {})
|
|
236
|
+
};
|
|
224
237
|
|
|
225
238
|
// Same call-log transform as the realtime path, applied to archived
|
|
226
239
|
// history so calls received while offline still render as log entries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_roomStore","require","_roomsSlice","_createMessageFromXml","_getDataFromXml","_chatSettingsSlice","_messageNotificationManager","_callLogMessage","_strings","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","getDataFromXml","pData","pId","pBody","pRest","mergedData","rawMessage","createMessageFromXml","isDeleted","message","transformCallLogMessage","store","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","addRoomMessage","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","locale","config","i18n","langSource","overrides","strings","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","translateKey","messageNotificationManager","showNotification","err","warn","exports","onDeleteMessage","stanzaId","deleteRoomMessage","by","messageId","setDeleteModal","isDeleteModal","onEditMessage","replace","editRoomMessage","text","onMessageHistory","children","xmlns","delay","innerFrom","getText","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","setComposing","composing","onPresenceInRoom","startsWith","role","setRoomRole","onChatInvite","client","type","chatId","xEls","getChildren","el","child","chat","presenceInRoomStanza","getRoomsStanza","onGetMembers","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","setCurrentRoom","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","Object","values","some","element","jid","roomData","usersCnt","Number","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","addRoom","activeRoomJID","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_roomStore","require","_roomsSlice","_createMessageFromXml","_getDataFromXml","_chatSettingsSlice","_messageNotificationManager","_callLogMessage","_strings","onRealtimeMessage","stanza","getChild","is","attrs","id","body","archived","data","deleted","console","log","toString","senderJID","from","parsed","getDataFromXml","pData","pId","pBody","pRest","mergedData","rawMessage","createMessageFromXml","isDeleted","message","transformCallLogMessage","store","getState","chatSettingStore","user","xmppUsername","roomJID","split","dispatch","addRoomMessage","state","currentUserWallet","walletAddress","toLowerCase","senderJIDLower","String","includes","room","rooms","roomName","title","name","locale","config","i18n","langSource","overrides","strings","senderName","senderFirstName","senderLastName","filter","Boolean","join","trim","translateKey","messageNotificationManager","showNotification","err","warn","exports","onDeleteMessage","stanzaId","deleteRoomMessage","by","messageId","setDeleteModal","isDeleteModal","onEditMessage","replace","editRoomMessage","text","onMessageHistory","children","xmlns","delay","forwardedMessage","innerFrom","mergedAttrs","xmppId","positionalMessage","parsedFull","catch","undefined","translations","handleComposing","currentUser","composingUser","norm","s","senderLocal","selfUser","selfXmppUsername","selfWallet","isSelf","chatJID","composingList","push","fullName","pop","setComposing","composing","onPresenceInRoom","startsWith","role","setRoomRole","onChatInvite","client","type","chatId","xEls","getChildren","el","child","chat","presenceInRoomStanza","getRoomsStanza","onGetMembers","onGetRoomInfo","onGetLastMessageArchive","_xmpp","onNewRoomCreated","xmpp","setCurrentRoom","onGetChatRooms","Array","isArray","forEach","result","currentChatRooms","isRoomAlreadyAdded","Object","values","some","element","jid","roomData","usersCnt","Number","users_cnt","messages","isLoading","roomBg","room_background","icon","room_thumbnail","unreadMessages","lastViewedTimestamp","addRoom","activeRoomJID","error","e","onMessageError","_stanza","onReactionMessage","onReactionHistory","onRoomKicked"],"sourceRoot":"../../../src","sources":["networking/stanzaHandlers.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.flushLastViewedToPrivateStore = flushLastViewedToPrivateStore;
|
|
7
7
|
var _getChatsPrivateStoreRequest = require("./getChatsPrivateStoreRequest.xmpp");
|
|
8
8
|
var _setChatsPrivateStoreRequest = require("./setChatsPrivateStoreRequest.xmpp");
|
|
9
|
+
var _getServerReadTimestamp = require("../../helpers/getServerReadTimestamp");
|
|
9
10
|
/**
|
|
10
11
|
* Merge in-memory lastViewedTimestamp values into the server-side
|
|
11
12
|
* private store. Reads current state, overlays per-room updates, writes
|
|
@@ -13,8 +14,11 @@ var _setChatsPrivateStoreRequest = require("./setChatsPrivateStoreRequest.xmpp")
|
|
|
13
14
|
* each other's entries.
|
|
14
15
|
*
|
|
15
16
|
* Called on: tab change away from chat, AppState background/inactive,
|
|
16
|
-
* and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path
|
|
17
|
-
*
|
|
17
|
+
* and (with onlyIfNoUnread=true) logout. ChatRoom's own unmount path also
|
|
18
|
+
* goes through this (via flushLastViewedToPrivateStoreStanza) for the
|
|
19
|
+
* single-room case - actionSetTimestampToPrivateStore is a separate,
|
|
20
|
+
* unconditional low-level write primitive kept for direct/external use
|
|
21
|
+
* and is not part of this merge path.
|
|
18
22
|
*/
|
|
19
23
|
async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
|
|
20
24
|
if (!client?.client) {
|
|
@@ -22,7 +26,9 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
|
|
|
22
26
|
}
|
|
23
27
|
const {
|
|
24
28
|
visibleRoomJID,
|
|
25
|
-
|
|
29
|
+
visibleRoomTs,
|
|
30
|
+
onlyIfNoUnread,
|
|
31
|
+
heapState
|
|
26
32
|
} = opts;
|
|
27
33
|
const roomList = Object.values(rooms || {});
|
|
28
34
|
if (roomList.length === 0) {
|
|
@@ -37,7 +43,6 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
|
|
|
37
43
|
if (!storeObj || typeof storeObj !== 'object') {
|
|
38
44
|
storeObj = {};
|
|
39
45
|
}
|
|
40
|
-
const nowMs = Date.now();
|
|
41
46
|
let dirty = false;
|
|
42
47
|
for (const room of roomList) {
|
|
43
48
|
if (!room?.jid) {
|
|
@@ -46,14 +51,30 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
|
|
|
46
51
|
const isVisible = !!visibleRoomJID && room.jid === visibleRoomJID;
|
|
47
52
|
const hasUnread = Number(room.unreadMessages || 0) > 0;
|
|
48
53
|
|
|
49
|
-
//
|
|
50
|
-
//
|
|
54
|
+
// Newest message this room actually has server-side proof of. Used
|
|
55
|
+
// both as the "read up to now" fallback for the visible room and as
|
|
56
|
+
// the yardstick for detecting a corrupt (future) stored marker below
|
|
57
|
+
// - never as a substitute for the device clock (bug #38: a device
|
|
58
|
+
// with a fast clock previously stamped Date.now() here, and once
|
|
59
|
+
// that future value reached the server the forward-only check a few
|
|
60
|
+
// lines down rejected every later correct write, forever).
|
|
61
|
+
const newestAckedMs = (0, _getServerReadTimestamp.getServerReadTimestamp)(room, heapState);
|
|
62
|
+
|
|
63
|
+
// For the visible room, persist "read up to the newest message we
|
|
64
|
+
// know the server has" - read state is driven by room visibility,
|
|
65
|
+
// not by a sentinel timestamp. The exception is an explicit
|
|
66
|
+
// `visibleRoomTs`: the caller knows the user only read up to a
|
|
67
|
+
// certain point (left the room while scrolled up), so stamping
|
|
68
|
+
// "everything" here would mark genuinely-unread messages as read.
|
|
51
69
|
let ts;
|
|
52
70
|
if (isVisible) {
|
|
53
|
-
ts =
|
|
71
|
+
ts = typeof visibleRoomTs === 'number' && visibleRoomTs > 0 ? visibleRoomTs : newestAckedMs || undefined;
|
|
54
72
|
} else if (room.lastViewedTimestamp && room.lastViewedTimestamp > 0) {
|
|
55
73
|
ts = room.lastViewedTimestamp;
|
|
56
74
|
}
|
|
75
|
+
|
|
76
|
+
// Nothing to anchor a write to (no boundary, no existing marker, no
|
|
77
|
+
// known messages yet) - skip rather than write a device-clock guess.
|
|
57
78
|
if (!ts) {
|
|
58
79
|
continue;
|
|
59
80
|
}
|
|
@@ -62,7 +83,24 @@ async function flushLastViewedToPrivateStore(client, rooms, opts = {}) {
|
|
|
62
83
|
}
|
|
63
84
|
const prev = storeObj[room.jid];
|
|
64
85
|
const prevNum = prev != null ? Number(prev) : 0;
|
|
65
|
-
|
|
86
|
+
// A currently-stored value that sits well past the newest message we
|
|
87
|
+
// know this room has is not "fresher" - it's a leftover future
|
|
88
|
+
// marker (bug #38). Forward-only logic normally protects a fresher
|
|
89
|
+
// read from being clobbered by a stale fetch, but applied to a
|
|
90
|
+
// corrupt future value it does the opposite: it permanently blocks
|
|
91
|
+
// the correct (smaller) value from ever landing. Detect that case
|
|
92
|
+
// and waive the forward-only check for it specifically; sane values
|
|
93
|
+
// keep the normal forward-only protection.
|
|
94
|
+
//
|
|
95
|
+
// "Well past the newest message we know about" is deliberately NOT
|
|
96
|
+
// sufficient on its own - see isCorruptFutureReadMarker. THIS device's
|
|
97
|
+
// copy of the room can simply be stale (history not synced yet this
|
|
98
|
+
// session), in which case a legitimate marker written by another
|
|
99
|
+
// device that HAS seen newer messages looks exactly like a corrupt
|
|
100
|
+
// one, and "healing" it here would push the server marker BACKWARDS
|
|
101
|
+
// and resurrect already-read messages on every device.
|
|
102
|
+
const prevLooksCorrupt = (0, _getServerReadTimestamp.isCorruptFutureReadMarker)(prevNum, newestAckedMs);
|
|
103
|
+
if (!prevLooksCorrupt && Number.isFinite(prevNum) && prevNum >= ts) {
|
|
66
104
|
continue;
|
|
67
105
|
}
|
|
68
106
|
storeObj[room.jid] = String(ts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_getChatsPrivateStoreRequest","require","_setChatsPrivateStoreRequest","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","onlyIfNoUnread","roomList","Object","values","length","storeObj","getChatsPrivateStoreRequest","
|
|
1
|
+
{"version":3,"names":["_getChatsPrivateStoreRequest","require","_setChatsPrivateStoreRequest","_getServerReadTimestamp","flushLastViewedToPrivateStore","client","rooms","opts","visibleRoomJID","visibleRoomTs","onlyIfNoUnread","heapState","roomList","Object","values","length","storeObj","getChatsPrivateStoreRequest","dirty","room","jid","isVisible","hasUnread","Number","unreadMessages","newestAckedMs","getServerReadTimestamp","ts","undefined","lastViewedTimestamp","prev","prevNum","prevLooksCorrupt","isCorruptFutureReadMarker","isFinite","String","setChatsPrivateStoreRequest","JSON","stringify"],"sourceRoot":"../../../../src","sources":["networking/xmpp/flushLastViewedToPrivateStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -59,7 +59,14 @@ const presenceInRoom = async (client, roomJID, delay = 2000) => {
|
|
|
59
59
|
try {
|
|
60
60
|
await (0, _createTimeoutPromise.createTimeoutPromise)(2000, unsubscribe);
|
|
61
61
|
} catch (err) {
|
|
62
|
-
|
|
62
|
+
// The room's reply schedules resolve() `delay` ms later (2000 by
|
|
63
|
+
// default) — the same length as this timeout, so the timeout used
|
|
64
|
+
// to win the race and reject a join that had actually succeeded
|
|
65
|
+
// (allRoomPresences "failed" with undefined on every bootstrap).
|
|
66
|
+
// Only a join that never got an answer is a failure.
|
|
67
|
+
if (!settled) {
|
|
68
|
+
reject(err);
|
|
69
|
+
}
|
|
63
70
|
}
|
|
64
71
|
})();
|
|
65
72
|
});
|