@ethora/chat-component-rn 26.7.10 → 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 -96
- package/README.md +10 -43
- 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 +14 -150
- 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 +59 -177
- 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 +22 -51
- 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/keyboardLayout.js +2 -12
- package/lib/commonjs/helpers/keyboardLayout.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 +12 -45
- 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 -23
- 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 +38 -151
- 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 +16 -152
- 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 +60 -177
- 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 +22 -52
- 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/keyboardLayout.js +2 -12
- package/lib/module/helpers/keyboardLayout.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 +13 -46
- 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 -23
- 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 +34 -139
- 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 +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/keyboardLayout.d.ts +1 -5
- package/lib/typescript/helpers/keyboardLayout.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 +3 -43
- 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 -50
- 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 +15 -161
- 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 +57 -209
- 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 +32 -55
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/keyboardLayout.ts +2 -23
- 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 +9 -49
- package/src/hooks/useChatWrapperInit.ts +16 -32
- package/src/hooks/useComposing.tsx +1 -37
- package/src/hooks/useLogout.tsx +9 -29
- 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 +29 -161
- package/src/services/pushSubscriptionService.ts +13 -18
- package/src/types/types.ts +5 -72
- 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 -188
- 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/msgSortableMs.js +0 -37
- package/lib/commonjs/helpers/msgSortableMs.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 -181
- 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/msgSortableMs.js +0 -32
- package/lib/module/helpers/msgSortableMs.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 -108
- 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/msgSortableMs.d.ts +0 -2
- package/lib/typescript/helpers/msgSortableMs.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 -197
- package/src/helpers/isOwnMessage.ts +0 -90
- package/src/helpers/mediaLibraryRuntime.ts +0 -25
- package/src/helpers/msgSortableMs.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
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
import { useEffect, useRef, useState } from 'react';
|
|
4
4
|
import { useDispatch, useSelector } from 'react-redux';
|
|
5
5
|
import { IConfig } from '../types/types';
|
|
6
|
+
import { resolveLegacyTranslatesLangSource } from '../helpers/resolveLangSource';
|
|
6
7
|
import XmppClient from '../networking/xmppClient';
|
|
7
8
|
import { AppDispatch, RootState } from '../roomStore';
|
|
8
9
|
import { useXmppClient } from '../context/xmppProvider';
|
|
9
10
|
import { chatAutoEnterer } from '../helpers/chatAutoEnterer';
|
|
10
11
|
import { initRoomsPresence } from '../helpers/initRoomsPresence';
|
|
12
|
+
import { updatedChatLastTimestamps } from '../helpers/updatedChatLastTimestamps';
|
|
11
13
|
import { updateMessagesTillLast } from '../helpers/updateMessagesTillLast';
|
|
12
|
-
import {
|
|
14
|
+
import { refresh } from '../networking/apiClient';
|
|
13
15
|
import { setLangSource, setConfig } from '../roomStore/chatSettingsSlice';
|
|
14
16
|
import { setIsLoading } from '../roomStore/roomsSlice';
|
|
15
17
|
import { useRoomState } from './useRoomState';
|
|
@@ -17,7 +19,6 @@ import { useChatSettingState } from './useChatSettingState';
|
|
|
17
19
|
import { isChatIdPresentInArray } from '../helpers/isChatIdPresentInArray';
|
|
18
20
|
import useGetNewArchRoom from './useGetNewArchRoom';
|
|
19
21
|
import { getRoomsWithRetry } from '../helpers/getRoomsWithRetry';
|
|
20
|
-
import { shallowEqual } from '../helpers/shallowEqual';
|
|
21
22
|
|
|
22
23
|
interface useChatWrapperInitProps {
|
|
23
24
|
roomJID: string | null | undefined;
|
|
@@ -65,20 +66,6 @@ const useChatWrapperInit = ({
|
|
|
65
66
|
};
|
|
66
67
|
}, [user.xmppPassword]);
|
|
67
68
|
|
|
68
|
-
// Presentational config flags (e.g. `disableHeader`) can change while the
|
|
69
|
-
// chat stays mounted — sync them to redux whenever `config` actually
|
|
70
|
-
// changes, not just at init. Shallow-equal guard: an inline object
|
|
71
|
-
// literal from the host is a fresh reference every render even when
|
|
72
|
-
// nothing in it changed, and dispatching unconditionally would re-render
|
|
73
|
-
// every config consumer on every host render.
|
|
74
|
-
const lastSyncedConfigRef = useRef<IConfig | undefined>(undefined);
|
|
75
|
-
useEffect(() => {
|
|
76
|
-
if (!shallowEqual(lastSyncedConfigRef.current, config)) {
|
|
77
|
-
lastSyncedConfigRef.current = config;
|
|
78
|
-
dispatch(setConfig(config));
|
|
79
|
-
}
|
|
80
|
-
}, [config, dispatch]);
|
|
81
|
-
|
|
82
69
|
const getRoomsWithRertyRequest = async () => {
|
|
83
70
|
setIsRetrying(true);
|
|
84
71
|
const retryRooms = await getRoomsWithRetry(
|
|
@@ -111,8 +98,11 @@ const useChatWrapperInit = ({
|
|
|
111
98
|
let retryTimeout: NodeJS.Timeout;
|
|
112
99
|
|
|
113
100
|
const initXmmpClient = async () => {
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
const legacyLangSource = resolveLegacyTranslatesLangSource(
|
|
102
|
+
config?.translates
|
|
103
|
+
);
|
|
104
|
+
if (legacyLangSource) {
|
|
105
|
+
dispatch(setLangSource(legacyLangSource));
|
|
116
106
|
}
|
|
117
107
|
|
|
118
108
|
dispatch(setConfig(config));
|
|
@@ -169,21 +159,15 @@ const useChatWrapperInit = ({
|
|
|
169
159
|
}
|
|
170
160
|
}
|
|
171
161
|
try {
|
|
172
|
-
// getChatsPrivateStoreRequestStanza hydrates redux itself
|
|
173
|
-
// (dispatch(applyPrivateStoreMarkers(...)) internally,
|
|
174
|
-
// clamped + forward-only) - do not also apply the raw
|
|
175
|
-
// return value here. That used to double-dispatch via
|
|
176
|
-
// updatedChatLastTimestamps' unconditional
|
|
177
|
-
// setLastViewedTimestamp, which has neither the
|
|
178
|
-
// forward-only guard nor the future-marker clamp, so on
|
|
179
|
-
// every reconnect it could silently re-clobber a value
|
|
180
|
-
// the clamp had just corrected (bug #38).
|
|
181
162
|
const roomTimestampObject: any =
|
|
182
163
|
await newClient.getChatsPrivateStoreRequestStanza();
|
|
183
164
|
console.log(
|
|
184
165
|
'Got chats private store',
|
|
185
166
|
roomTimestampObject?.length || 0
|
|
186
167
|
);
|
|
168
|
+
if (roomTimestampObject) {
|
|
169
|
+
updatedChatLastTimestamps(roomTimestampObject, dispatch);
|
|
170
|
+
}
|
|
187
171
|
if (!hasSyncedHistoryRef.current) {
|
|
188
172
|
console.log('Updating messages till last');
|
|
189
173
|
await updateMessagesTillLast(rooms, newClient);
|
|
@@ -199,7 +183,7 @@ const useChatWrapperInit = ({
|
|
|
199
183
|
}
|
|
200
184
|
|
|
201
185
|
{
|
|
202
|
-
config?.refreshTokens?.enabled &&
|
|
186
|
+
config?.refreshTokens?.enabled && refresh();
|
|
203
187
|
}
|
|
204
188
|
} catch (error) {
|
|
205
189
|
console.error(' Error during initialization', error);
|
|
@@ -225,15 +209,15 @@ const useChatWrapperInit = ({
|
|
|
225
209
|
setInited(true);
|
|
226
210
|
console.log(' Getting chats private store for existing client');
|
|
227
211
|
try {
|
|
228
|
-
// See the "new client" branch above: getChatsPrivateStoreRequestStanza
|
|
229
|
-
// already hydrates redux (clamped + forward-only); do not
|
|
230
|
-
// also apply the raw return value here.
|
|
231
212
|
const roomTimestampObject: any =
|
|
232
213
|
await client.getChatsPrivateStoreRequestStanza();
|
|
233
214
|
console.log(
|
|
234
215
|
'Got chats private store for existing client',
|
|
235
216
|
roomTimestampObject?.length || 0
|
|
236
217
|
);
|
|
218
|
+
if (roomTimestampObject) {
|
|
219
|
+
updatedChatLastTimestamps(roomTimestampObject, dispatch);
|
|
220
|
+
}
|
|
237
221
|
if (!hasSyncedHistoryRef.current) {
|
|
238
222
|
console.log(
|
|
239
223
|
'Updating messages till last for existing client'
|
|
@@ -253,7 +237,7 @@ const useChatWrapperInit = ({
|
|
|
253
237
|
setConnectionLost(false);
|
|
254
238
|
}
|
|
255
239
|
{
|
|
256
|
-
config?.refreshTokens?.enabled &&
|
|
240
|
+
config?.refreshTokens?.enabled && refresh();
|
|
257
241
|
}
|
|
258
242
|
}
|
|
259
243
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { useCallback, useEffect,
|
|
2
|
-
import { AppState, AppStateStatus } from 'react-native';
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
2
|
import { useXmppClient } from '../context/xmppProvider';
|
|
4
3
|
import { useSelector } from 'react-redux';
|
|
5
4
|
import { RootState } from '../roomStore';
|
|
@@ -10,16 +9,8 @@ const useComposing = (config?: IConfig) => {
|
|
|
10
9
|
const { client } = useXmppClient();
|
|
11
10
|
const { activeRoomJID } = useSelector((state: RootState) => state.rooms);
|
|
12
11
|
const { user } = useChatSettingState();
|
|
13
|
-
// RN keeps a focused TextInput focused when the app is backgrounded or
|
|
14
|
-
// the device is locked — nothing fires `onBlur`, so without this the
|
|
15
|
-
// other participant sees "typing…" for as long as the user is away.
|
|
16
|
-
// Tracks whether the input is *currently* focused, independent of the
|
|
17
|
-
// foreground/background transition, so we know whether to resume
|
|
18
|
-
// composing on return.
|
|
19
|
-
const isFocusedRef = useRef(false);
|
|
20
12
|
|
|
21
13
|
const sendStartComposing = useCallback(() => {
|
|
22
|
-
isFocusedRef.current = true;
|
|
23
14
|
if (config?.disableTypingIndicator) {
|
|
24
15
|
return;
|
|
25
16
|
}
|
|
@@ -33,7 +24,6 @@ const useComposing = (config?: IConfig) => {
|
|
|
33
24
|
}, [activeRoomJID, client, config?.disableTypingIndicator, user.firstName, user.lastName]);
|
|
34
25
|
|
|
35
26
|
const sendEndComposing = useCallback(() => {
|
|
36
|
-
isFocusedRef.current = false;
|
|
37
27
|
if (config?.disableTypingIndicator) {
|
|
38
28
|
return;
|
|
39
29
|
}
|
|
@@ -54,32 +44,6 @@ const useComposing = (config?: IConfig) => {
|
|
|
54
44
|
return () => clearTimeout(timerId);
|
|
55
45
|
}, [sendEndComposing]);
|
|
56
46
|
|
|
57
|
-
// Foreground/background transition only — a pause in typing must NOT
|
|
58
|
-
// clear the indicator (that would flicker for a slowly-composing user),
|
|
59
|
-
// so this deliberately does not hook keystroke/idle timing at all.
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
const handleAppStateChange = (nextState: AppStateStatus) => {
|
|
62
|
-
if (nextState !== 'active') {
|
|
63
|
-
if (isFocusedRef.current && !config?.disableTypingIndicator && client) {
|
|
64
|
-
client.sendTypingRequestStanza(
|
|
65
|
-
activeRoomJID || '',
|
|
66
|
-
`${user.firstName} ${user.lastName}`,
|
|
67
|
-
false
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
} else if (isFocusedRef.current && !config?.disableTypingIndicator && client) {
|
|
71
|
-
client.sendTypingRequestStanza(
|
|
72
|
-
activeRoomJID || '',
|
|
73
|
-
`${user.firstName} ${user.lastName}`,
|
|
74
|
-
true
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const subscription = AppState.addEventListener('change', handleAppStateChange);
|
|
80
|
-
return () => subscription.remove();
|
|
81
|
-
}, [activeRoomJID, client, config?.disableTypingIndicator, user.firstName, user.lastName]);
|
|
82
|
-
|
|
83
47
|
return { sendStartComposing, sendEndComposing };
|
|
84
48
|
};
|
|
85
49
|
|
package/src/hooks/useLogout.tsx
CHANGED
|
@@ -9,8 +9,7 @@ import { clearHeap } from '../roomStore/roomHeapSlice';
|
|
|
9
9
|
import { pushSubscriptionService } from '../services/pushSubscriptionService';
|
|
10
10
|
import { clearRoomsRestCache } from '../networking/api-requests/rooms.api';
|
|
11
11
|
import { clearPersistedState } from '../roomStore/persistence';
|
|
12
|
-
import {
|
|
13
|
-
import { getFlushBoundaryTs } from '../helpers/getServerReadTimestamp';
|
|
12
|
+
import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
|
|
14
13
|
|
|
15
14
|
// AsyncStorage keys the library writes but that aren't cleared by any
|
|
16
15
|
// slice reducer. Listed here so a single logout call wipes the full
|
|
@@ -60,23 +59,10 @@ const logoutService = {
|
|
|
60
59
|
const client = (state.chatSettingStore as any)?.client;
|
|
61
60
|
const rooms = state.rooms?.rooms;
|
|
62
61
|
const visibleRoomJID = state.rooms?.visibleRoomJID || null;
|
|
63
|
-
// The visible room is exempt from `onlyIfNoUnread`'s skip (it's
|
|
64
|
-
// meant to write "read up to now" for whatever's open), so if the
|
|
65
|
-
// user is logging out while scrolled up with unread messages
|
|
66
|
-
// above, the boundary must still be carried through here - same
|
|
67
|
-
// reasoning as every other "leaving a room" path (bug #42).
|
|
68
|
-
const boundaryTs = visibleRoomJID
|
|
69
|
-
? getFlushBoundaryTs(
|
|
70
|
-
rooms?.[visibleRoomJID],
|
|
71
|
-
state.roomHeapSlice,
|
|
72
|
-
state.rooms?.readBoundaries?.[visibleRoomJID] ?? null
|
|
73
|
-
)
|
|
74
|
-
: undefined;
|
|
75
62
|
if (client?.flushLastViewedToPrivateStoreStanza) {
|
|
76
63
|
await Promise.race([
|
|
77
64
|
client.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
78
65
|
visibleRoomJID,
|
|
79
|
-
visibleRoomTs: boundaryTs,
|
|
80
66
|
onlyIfNoUnread: true,
|
|
81
67
|
}),
|
|
82
68
|
new Promise((res) => setTimeout(res, 2000)),
|
|
@@ -134,23 +120,17 @@ const logoutService = {
|
|
|
134
120
|
|
|
135
121
|
// 6. Stray keys the slices don't touch.
|
|
136
122
|
try {
|
|
137
|
-
await AsyncStorage.multiRemove(
|
|
123
|
+
await AsyncStorage.multiRemove([
|
|
124
|
+
...LIBRARY_STRAY_KEYS,
|
|
125
|
+
// Belt-and-suspenders: the chat slice's `logout` reducer
|
|
126
|
+
// schedules an async remove of ETHORA_USER fire-and-forget;
|
|
127
|
+
// re-issue it here so the disk is provably clean before this
|
|
128
|
+
// Promise resolves.
|
|
129
|
+
localStorageConstants.ETHORA_USER,
|
|
130
|
+
]);
|
|
138
131
|
} catch (e) {
|
|
139
132
|
console.warn('logoutService: stray-key clear failed', e);
|
|
140
133
|
}
|
|
141
|
-
|
|
142
|
-
// 7. Belt-and-suspenders: the chat slice's `logout` reducer already
|
|
143
|
-
// fires an async ETHORA_USER removal, but re-issue it here (via
|
|
144
|
-
// the same secureUserStorage split the reducer uses) so BOTH the
|
|
145
|
-
// plain-AsyncStorage profile half AND the Keychain/Keystore
|
|
146
|
-
// secrets are provably gone before this Promise resolves — a bare
|
|
147
|
-
// `AsyncStorage.removeItem(ETHORA_USER)` here would only clear the
|
|
148
|
-
// profile half and leave the tokens behind.
|
|
149
|
-
try {
|
|
150
|
-
await secureUserStorage().remove();
|
|
151
|
-
} catch (e) {
|
|
152
|
-
console.warn('logoutService: secure user storage clear failed', e);
|
|
153
|
-
}
|
|
154
134
|
},
|
|
155
135
|
};
|
|
156
136
|
|
|
@@ -4,7 +4,7 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
|
4
4
|
import { RootState } from '../roomStore';
|
|
5
5
|
import { setCurrentRoom, clearPendingNotificationJid } from '../roomStore/roomsSlice';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const PENDING_NOTIFICATION_JID_KEY = 'ethora_pending_notification_jid';
|
|
8
8
|
|
|
9
9
|
export function usePendingNotification() {
|
|
10
10
|
const dispatch = useDispatch();
|
|
@@ -21,15 +21,21 @@ export function usePendingNotification() {
|
|
|
21
21
|
let jidToOpen = pendingNotificationJid;
|
|
22
22
|
|
|
23
23
|
if (!jidToOpen) {
|
|
24
|
-
|
|
24
|
+
try {
|
|
25
|
+
const storedJid = await AsyncStorage.getItem(PENDING_NOTIFICATION_JID_KEY);
|
|
26
|
+
if (storedJid) {
|
|
27
|
+
jidToOpen = storedJid;
|
|
28
|
+
await AsyncStorage.removeItem(PENDING_NOTIFICATION_JID_KEY);
|
|
29
|
+
}
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.error('Error reading from AsyncStorage:', error);
|
|
32
|
+
}
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
if (jidToOpen) {
|
|
28
36
|
const room = rooms[jidToOpen];
|
|
29
37
|
if (room) {
|
|
30
|
-
|
|
31
|
-
AsyncStorage.removeItem(PENDING_NOTIFICATION_JID_KEY).catch(() => undefined);
|
|
32
|
-
dispatch(setCurrentRoom({ roomJID: jidToOpen }));
|
|
38
|
+
return;
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
};
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
clearMessageFailure,
|
|
10
10
|
markMessageFailed,
|
|
11
11
|
} from '../roomStore/roomHeapSlice';
|
|
12
|
-
import {
|
|
13
|
-
import { enqueueOutboundSend
|
|
12
|
+
import { uploadFileViaFetch } from '../networking/api-requests/auth.api';
|
|
13
|
+
import { enqueueOutboundSend } from '../networking/outboundQueue';
|
|
14
14
|
import { RootState, store } from '../roomStore';
|
|
15
15
|
import { getGlobalXmppClient } from '../utils/clientRegistry';
|
|
16
16
|
import { useEventHandlers } from './useEventHandlers';
|
|
@@ -182,45 +182,17 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
182
182
|
// PENDING_WATCHDOG_MS, flip the bubble to "failed → tap to
|
|
183
183
|
// retry". We check at fire-time whether the message is still
|
|
184
184
|
// pending and not already marked failed by the catch path.
|
|
185
|
-
|
|
186
|
-
// timer so the rescheduled run can't extend again.
|
|
187
|
-
let watchdogExtended = false;
|
|
188
|
-
const runWatchdog = () => {
|
|
185
|
+
const watchdogTimer = setTimeout(() => {
|
|
189
186
|
const state = reduxStore.getState();
|
|
190
187
|
const roomMsgs = state.rooms?.rooms?.[activeRoomJID]?.messages || [];
|
|
191
188
|
const stillPending = roomMsgs.find(
|
|
192
189
|
(m: any) => m.id === optimisticId && m.pending
|
|
193
190
|
);
|
|
194
191
|
const alreadyFailed = state.roomHeapSlice?.failedMessages?.[optimisticId];
|
|
195
|
-
|
|
196
|
-
// Don't call it a failure while the stream is still coming back.
|
|
197
|
-
// A reconnect tears the old client down and builds a new one, and
|
|
198
|
-
// any echo in flight during that window is simply lost — the
|
|
199
|
-
// message may well have been delivered (it has been observed
|
|
200
|
-
// arriving twice on the receiving side). Failing it here shows a
|
|
201
|
-
// red "tap to retry" under a message that actually went through.
|
|
202
|
-
// Give the reconnect one more window to produce an echo, once.
|
|
203
|
-
const streamOnline = getGlobalXmppClient()?.status === 'online';
|
|
204
|
-
if (stillPending && !alreadyFailed && !streamOnline && !watchdogExtended) {
|
|
205
|
-
watchdogExtended = true;
|
|
206
|
-
console.warn(
|
|
207
|
-
`Send watchdog — ${optimisticId} still pending but the stream is not online; extending one window`
|
|
208
|
-
);
|
|
209
|
-
watchdogTimer = setTimeout(runWatchdog, PENDING_WATCHDOG_MS);
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
192
|
if (stillPending && !alreadyFailed) {
|
|
214
193
|
console.warn(
|
|
215
194
|
`Send watchdog fired — message ${optimisticId} stuck pending > ${PENDING_WATCHDOG_MS}ms; marking failed`
|
|
216
195
|
);
|
|
217
|
-
// Drop the buffered replay now that the bubble is showing
|
|
218
|
-
// "failed / tap to retry" — a later onOnline flush must not
|
|
219
|
-
// silently resend it behind the user's back. If the original
|
|
220
|
-
// send actually lands after this point, the server echo still
|
|
221
|
-
// flips the bubble back to delivered (newMessageMidlleware);
|
|
222
|
-
// only an explicit tap-to-retry should trigger another send.
|
|
223
|
-
removeOutboundSend(optimisticId);
|
|
224
196
|
dispatch(
|
|
225
197
|
markMessageFailed({
|
|
226
198
|
kind: 'text',
|
|
@@ -239,9 +211,7 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
239
211
|
messageType: 'text',
|
|
240
212
|
});
|
|
241
213
|
}
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
let watchdogTimer = setTimeout(runWatchdog, PENDING_WATCHDOG_MS);
|
|
214
|
+
}, PENDING_WATCHDOG_MS);
|
|
245
215
|
|
|
246
216
|
try {
|
|
247
217
|
// The single send closure, used both for the immediate send and for
|
|
@@ -315,9 +285,6 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
315
285
|
});
|
|
316
286
|
} catch (error) {
|
|
317
287
|
clearTimeout(watchdogTimer);
|
|
318
|
-
// Same reasoning as the watchdog: once the bubble shows failed,
|
|
319
|
-
// only an explicit tap-to-retry should resend it.
|
|
320
|
-
removeOutboundSend(optimisticId);
|
|
321
288
|
dispatch(
|
|
322
289
|
markMessageFailed({
|
|
323
290
|
kind: 'text',
|
|
@@ -464,10 +431,6 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
464
431
|
console.warn(
|
|
465
432
|
`Media-send watchdog fired — ${id} stuck pending > ${PENDING_WATCHDOG_MS}ms; marking failed`
|
|
466
433
|
);
|
|
467
|
-
// See the text-send watchdog above: drop the buffered replay so
|
|
468
|
-
// a later onOnline flush can't silently resend behind the
|
|
469
|
-
// "failed / tap to retry" bubble.
|
|
470
|
-
removeOutboundSend(id);
|
|
471
434
|
dispatch(
|
|
472
435
|
markMessageFailed({
|
|
473
436
|
kind: 'media',
|
|
@@ -504,11 +467,19 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
504
467
|
name: data?.name || data?.fileName || `media_${Date.now()}`,
|
|
505
468
|
};
|
|
506
469
|
|
|
470
|
+
// Mirror the web client: a single multipart POST to /files/ with
|
|
471
|
+
// the file under the plural "files" field. We send it via fetch
|
|
472
|
+
// (not axios) because RN's fetch sets the multipart boundary on the
|
|
473
|
+
// Content-Type header correctly. The previous axios fallback omitted
|
|
474
|
+
// a valid boundary, so the server mis-parsed one file as many and
|
|
475
|
+
// rejected the request with HTTP 413 "TOO_MANY_FILES". The only
|
|
476
|
+
// retry is the documented singular-"file" fallback for deployments
|
|
477
|
+
// that 500 on the plural field (bug #10).
|
|
507
478
|
const tryUpload = async () => {
|
|
508
479
|
const fd = new FormData();
|
|
509
480
|
fd.append('files', fileBlob as any);
|
|
510
481
|
try {
|
|
511
|
-
return await
|
|
482
|
+
return await uploadFileViaFetch(fd);
|
|
512
483
|
} catch (err: any) {
|
|
513
484
|
if (err?.response?.status === 500) {
|
|
514
485
|
console.warn(
|
|
@@ -517,7 +488,7 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
517
488
|
);
|
|
518
489
|
const fd2 = new FormData();
|
|
519
490
|
fd2.append('file', fileBlob as any);
|
|
520
|
-
return await
|
|
491
|
+
return await uploadFileViaFetch(fd2);
|
|
521
492
|
}
|
|
522
493
|
throw err;
|
|
523
494
|
}
|
|
@@ -675,22 +646,6 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
675
646
|
async (failedId: string) => {
|
|
676
647
|
const payload = failedMessages[failedId];
|
|
677
648
|
if (!payload) {return;}
|
|
678
|
-
|
|
679
|
-
// The server may have accepted the original send even though its
|
|
680
|
-
// echo arrived too late to beat the watchdog — the bubble shows
|
|
681
|
-
// failed, but a confirmed (non-pending) copy is already sitting in
|
|
682
|
-
// the room. Resending here would deliver a genuine duplicate; just
|
|
683
|
-
// clear the failure and let the existing copy stand.
|
|
684
|
-
const roomMsgs = rooms?.[payload.roomJID]?.messages || [];
|
|
685
|
-
const alreadyDelivered = roomMsgs.some(
|
|
686
|
-
(m: any) =>
|
|
687
|
-
!m.pending && (m.id === failedId || m.xmppId === failedId)
|
|
688
|
-
);
|
|
689
|
-
if (alreadyDelivered) {
|
|
690
|
-
dispatch(clearMessageFailure(failedId));
|
|
691
|
-
return;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
649
|
dispatch(clearMessageFailure(failedId));
|
|
695
650
|
handleMessageRetry({
|
|
696
651
|
messageId: failedId,
|
|
@@ -720,7 +675,7 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
720
675
|
);
|
|
721
676
|
}
|
|
722
677
|
},
|
|
723
|
-
[failedMessages,
|
|
678
|
+
[failedMessages, dispatch, handleMessageRetry, sendMessage, sendMedia]
|
|
724
679
|
);
|
|
725
680
|
|
|
726
681
|
// ChatRoom/ThreadWrapper consume this as the "edit branch" of send.
|
|
@@ -11,12 +11,6 @@ interface UnreadMessagesStats {
|
|
|
11
11
|
totalCount: number;
|
|
12
12
|
unreadByRoom: UnreadMessagesMap;
|
|
13
13
|
isLoading: boolean;
|
|
14
|
-
// True while at least one room's unread count could still be a floor
|
|
15
|
-
// rather than the true total — the history-preload scheduler paged back
|
|
16
|
-
// as far as its catch-up budget allows without finding the read
|
|
17
|
-
// boundary. Lets a host show "99+"-style affordances honestly instead of
|
|
18
|
-
// implying an exact count it can't back up.
|
|
19
|
-
isCapped: boolean;
|
|
20
14
|
}
|
|
21
15
|
|
|
22
16
|
export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
@@ -41,7 +35,6 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
41
35
|
const rooms = roomsState.rooms;
|
|
42
36
|
const unreadByRoom: UnreadMessagesMap = {};
|
|
43
37
|
let totalCount = 0;
|
|
44
|
-
let isCapped = false;
|
|
45
38
|
|
|
46
39
|
Object.entries(rooms).forEach(([roomJid, room]: [string, IRoom]) => {
|
|
47
40
|
const unreadCount = room.unreadMessages || 0;
|
|
@@ -49,9 +42,6 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
49
42
|
unreadByRoom[roomJid] = unreadCount;
|
|
50
43
|
totalCount += unreadCount;
|
|
51
44
|
}
|
|
52
|
-
if ((room as any)?.unreadCapped) {
|
|
53
|
-
isCapped = true;
|
|
54
|
-
}
|
|
55
45
|
});
|
|
56
46
|
|
|
57
47
|
return {
|
|
@@ -59,7 +49,6 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
59
49
|
totalCount,
|
|
60
50
|
unreadByRoom,
|
|
61
51
|
isLoading: !!roomsState.isUnreadSyncing || !!roomsState.isLoading,
|
|
62
|
-
isCapped,
|
|
63
52
|
};
|
|
64
53
|
};
|
|
65
54
|
|