@ethora/chat-component-rn 26.7.9 → 26.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -93
- package/README.md +10 -33
- package/lib/commonjs/assets/icons.js +2 -7
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +4 -4
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +13 -101
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +1 -2
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +10 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +9 -37
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +17 -86
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +3 -9
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +61 -119
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +54 -128
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
- package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/commonjs/helpers/getDataFromXml.js +24 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +8 -14
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/commonjs/helpers/mimeToExtension.js +14 -6
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/resolveLangSource.js +38 -0
- package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
- package/lib/commonjs/helpers/xmppUsername.js +39 -0
- package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +8 -17
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +0 -27
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +7 -15
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +11 -8
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +14 -50
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +133 -121
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/i18n/useT.js +1 -1
- package/lib/commonjs/main.js +0 -44
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/user.api.js +9 -68
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +112 -62
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +51 -93
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +8 -124
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +2 -35
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +39 -226
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +8 -87
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +13 -15
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +3 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/assets/icons.js +1 -6
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +4 -4
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +7 -26
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +3 -9
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +14 -102
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +10 -30
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +1 -5
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +5 -13
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +35 -207
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +1 -9
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +2 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +1 -2
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +10 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +9 -37
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +3 -1
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +18 -87
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +3 -9
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +4 -14
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +62 -120
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +55 -128
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +1 -19
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/ensureScopedChatCache.js +2 -2
- package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/module/helpers/getDataFromXml.js +23 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +3 -66
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +8 -14
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/module/helpers/mimeToExtension.js +13 -6
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/resolveLangSource.js +32 -0
- package/lib/module/helpers/resolveLangSource.js.map +1 -0
- package/lib/module/helpers/xmppUsername.js +35 -0
- package/lib/module/helpers/xmppUsername.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +8 -17
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +14 -32
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +1 -28
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useLogout.js +7 -15
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +11 -8
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +16 -52
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +133 -121
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/i18n/useT.js +1 -1
- package/lib/module/main.js +2 -14
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +59 -131
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +9 -9
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/networking/api-requests/user.api.js +7 -64
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +113 -61
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +52 -94
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +8 -124
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +7 -26
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +4 -37
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +38 -223
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +7 -86
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +13 -15
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +3 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +0 -16
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
- package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
- package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
- package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
- package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
- package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/i18n/useT.d.ts +1 -1
- package/lib/typescript/main.d.ts +2 -9
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +6 -12
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +0 -14
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts +1 -18
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +1 -14
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +5 -49
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +29 -41
- package/src/assets/icons.tsx +9 -48
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +6 -24
- package/src/components/MainComponents/ChatHeader.tsx +3 -9
- package/src/components/MainComponents/ChatRoom.tsx +16 -111
- package/src/components/MainComponents/ChatWrapper.tsx +53 -36
- package/src/components/MainComponents/LoginWrapper.tsx +0 -1
- package/src/components/MainComponents/MediaMessage.tsx +8 -26
- package/src/components/MainComponents/MessageContainer.tsx +1 -5
- package/src/components/MainComponents/MessageList.tsx +4 -23
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
- package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
- package/src/components/MainComponents/RoomList.tsx +39 -236
- package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
- package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
- package/src/components/Modals/Modal/Modal.tsx +0 -7
- package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
- package/src/components/Modals/styledModalComponents.tsx +2 -9
- package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
- package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
- package/src/components/styled/AudioMessage.tsx +1 -2
- package/src/components/styled/DateLabel.tsx +10 -3
- package/src/components/styled/MessageImage.tsx +7 -53
- package/src/components/styled/NewMessageLabel.tsx +3 -1
- package/src/components/styled/SendInput.tsx +18 -91
- package/src/components/styled/StyledComponents.ts +3 -9
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
- package/src/components/styled/UnsupportedType.tsx +4 -14
- package/src/components/styled/VideoMessage.tsx +54 -131
- package/src/context/xmppProvider.tsx +51 -134
- package/src/helpers/createMessageFromXml.ts +1 -20
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getDataFromXml.ts +25 -1
- package/src/helpers/historyPreloadScheduler.ts +3 -80
- package/src/helpers/initXmppRooms.tsx +10 -14
- package/src/helpers/insertMessageWithDelimiter.ts +13 -0
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/mimeToExtension.ts +22 -6
- package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
- package/src/helpers/resolveLangSource.ts +40 -0
- package/src/helpers/xmppUsername.ts +38 -0
- package/src/hooks/useChatRoomFocus.ts +5 -14
- package/src/hooks/useChatWrapperInit.ts +16 -32
- package/src/hooks/useComposing.tsx +1 -37
- package/src/hooks/useLogout.tsx +9 -15
- package/src/hooks/usePendingNotification.ts +11 -5
- package/src/hooks/useSendMessage.tsx +15 -60
- package/src/hooks/useUnreadMessagesCounter.ts +0 -11
- package/src/i18n/strings.ts +133 -121
- package/src/i18n/useT.ts +1 -1
- package/src/main.ts +2 -26
- package/src/networking/api-requests/auth.api.ts +48 -156
- package/src/networking/api-requests/roomMembers.api.ts +1 -1
- package/src/networking/api-requests/rooms.api.ts +9 -9
- package/src/networking/api-requests/user.api.ts +7 -79
- package/src/networking/apiClient.ts +123 -68
- package/src/networking/stanzaHandlers.ts +51 -92
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
- package/src/networking/xmppClient.ts +9 -141
- package/src/roomStore/chatSettingsSlice.ts +10 -34
- package/src/roomStore/index.ts +4 -40
- package/src/roomStore/persistence.ts +40 -234
- package/src/roomStore/roomsSlice.ts +7 -87
- package/src/services/pushSubscriptionService.ts +13 -18
- package/src/types/types.ts +5 -58
- package/src/version.ts +3 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/commonjs/helpers/getChatBackground.js +0 -23
- package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
- package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
- package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
- package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -125
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/commonjs/helpers/isOwnMessage.js +0 -75
- package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/commonjs/helpers/persistCrypto.js +0 -122
- package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
- package/lib/commonjs/helpers/pickImageAsset.js +0 -68
- package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
- package/lib/commonjs/helpers/pushPayload.js +0 -71
- package/lib/commonjs/helpers/pushPayload.js.map +0 -1
- package/lib/commonjs/helpers/secureFileUrl.js +0 -101
- package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
- package/lib/commonjs/helpers/secureKeyValue.js +0 -83
- package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
- package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/commonjs/helpers/secureUserStorage.js +0 -75
- package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
- package/lib/commonjs/helpers/shallowEqual.js +0 -36
- package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
- package/lib/commonjs/helpers/sheetGestures.js +0 -32
- package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
- package/lib/commonjs/hooks/useFileToken.js +0 -10
- package/lib/commonjs/hooks/useFileToken.js.map +0 -1
- package/lib/commonjs/networking/authRefresh.js +0 -332
- package/lib/commonjs/networking/authRefresh.js.map +0 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/module/helpers/getChatBackground.js +0 -18
- package/lib/module/helpers/getChatBackground.js.map +0 -1
- package/lib/module/helpers/getDisplayFileName.js +0 -73
- package/lib/module/helpers/getDisplayFileName.js.map +0 -1
- package/lib/module/helpers/getServerReadTimestamp.js +0 -120
- package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/module/helpers/isOwnMessage.js +0 -70
- package/lib/module/helpers/isOwnMessage.js.map +0 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
- package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/module/helpers/persistCrypto.js +0 -115
- package/lib/module/helpers/persistCrypto.js.map +0 -1
- package/lib/module/helpers/pickImageAsset.js +0 -63
- package/lib/module/helpers/pickImageAsset.js.map +0 -1
- package/lib/module/helpers/pushPayload.js +0 -63
- package/lib/module/helpers/pushPayload.js.map +0 -1
- package/lib/module/helpers/secureFileUrl.js +0 -91
- package/lib/module/helpers/secureFileUrl.js.map +0 -1
- package/lib/module/helpers/secureKeyValue.js +0 -75
- package/lib/module/helpers/secureKeyValue.js.map +0 -1
- package/lib/module/helpers/secureStoreRuntime.js +0 -52
- package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/module/helpers/secureUserStorage.js +0 -72
- package/lib/module/helpers/secureUserStorage.js.map +0 -1
- package/lib/module/helpers/shallowEqual.js +0 -31
- package/lib/module/helpers/shallowEqual.js.map +0 -1
- package/lib/module/helpers/sheetGestures.js +0 -26
- package/lib/module/helpers/sheetGestures.js.map +0 -1
- package/lib/module/hooks/useFileToken.js +0 -5
- package/lib/module/hooks/useFileToken.js.map +0 -1
- package/lib/module/networking/authRefresh.js +0 -321
- package/lib/module/networking/authRefresh.js.map +0 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
- package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
- package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -69
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
- package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
- package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
- package/lib/typescript/helpers/pushPayload.d.ts +0 -7
- package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
- package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
- package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
- package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
- package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
- package/lib/typescript/hooks/useFileToken.d.ts +0 -2
- package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
- package/lib/typescript/networking/authRefresh.d.ts +0 -95
- package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
- package/src/helpers/getChatBackground.ts +0 -18
- package/src/helpers/getDisplayFileName.ts +0 -87
- package/src/helpers/getServerReadTimestamp.ts +0 -120
- package/src/helpers/isOwnMessage.ts +0 -90
- package/src/helpers/mediaLibraryRuntime.ts +0 -25
- package/src/helpers/persistCrypto.ts +0 -127
- package/src/helpers/pickImageAsset.ts +0 -68
- package/src/helpers/pushPayload.ts +0 -62
- package/src/helpers/secureFileUrl.ts +0 -103
- package/src/helpers/secureKeyValue.ts +0 -80
- package/src/helpers/secureStoreRuntime.ts +0 -62
- package/src/helpers/secureUserStorage.ts +0 -80
- package/src/helpers/shallowEqual.ts +0 -33
- package/src/helpers/sheetGestures.ts +0 -25
- package/src/hooks/useFileToken.ts +0 -7
- package/src/networking/authRefresh.ts +0 -451
|
@@ -1,144 +1,86 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useVideoPlayer, VideoView } from 'expo-video';
|
|
6
6
|
import { useDispatch } from 'react-redux';
|
|
7
7
|
import { setActiveFile, setActiveModal } from '../../roomStore/chatSettingsSlice';
|
|
8
8
|
import { MODAL_TYPES } from '../../helpers/constants/MODAL_TYPES';
|
|
9
9
|
import { PlayIcon } from '../../assets/icons';
|
|
10
10
|
import { defaultMediaDims, fitMediaDimensions } from '../../helpers/mediaDimensions';
|
|
11
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
-
const PlayBadge = () => /*#__PURE__*/_jsx(View, {
|
|
13
|
-
style: styles.overlay,
|
|
14
|
-
pointerEvents: "none",
|
|
15
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
16
|
-
style: styles.playButton,
|
|
17
|
-
children: /*#__PURE__*/_jsx(PlayIcon, {
|
|
18
|
-
width: 28,
|
|
19
|
-
height: 28
|
|
20
|
-
})
|
|
21
|
-
})
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Poster path — taken whenever the message carries a `locationPreview`.
|
|
26
|
-
*
|
|
27
|
-
* A chat row only ever needs a still and a play affordance; actual
|
|
28
|
-
* playback happens in the full-screen preview. Drawing that still with a
|
|
29
|
-
* plain <Image> keeps the whole bubble inside the RN view hierarchy, so
|
|
30
|
-
* the play badge is guaranteed to composite on top of it.
|
|
31
|
-
*/
|
|
32
|
-
const PosterVideo = ({
|
|
33
|
-
previewURL,
|
|
34
|
-
onOpen,
|
|
35
|
-
onPosterError
|
|
36
|
-
}) => {
|
|
37
|
-
const [dims, setDims] = useState(defaultMediaDims());
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (!previewURL) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
let active = true;
|
|
43
|
-
Image.getSize(previewURL, (w, h) => {
|
|
44
|
-
if (active) {
|
|
45
|
-
setDims(fitMediaDimensions(w, h));
|
|
46
|
-
}
|
|
47
|
-
}, () => {
|
|
48
|
-
/* keep the default box if the size probe fails */
|
|
49
|
-
});
|
|
50
|
-
return () => {
|
|
51
|
-
active = false;
|
|
52
|
-
};
|
|
53
|
-
}, [previewURL]);
|
|
54
|
-
return /*#__PURE__*/_jsxs(Pressable, {
|
|
55
|
-
onPress: onOpen,
|
|
56
|
-
style: [styles.wrapper, {
|
|
57
|
-
width: dims.width,
|
|
58
|
-
height: dims.height
|
|
59
|
-
}],
|
|
60
|
-
accessibilityRole: "button",
|
|
61
|
-
accessibilityLabel: "Play video",
|
|
62
|
-
children: [/*#__PURE__*/_jsx(Image, {
|
|
63
|
-
source: {
|
|
64
|
-
uri: previewURL
|
|
65
|
-
},
|
|
66
|
-
style: styles.video,
|
|
67
|
-
resizeMode: "cover"
|
|
68
|
-
// Not every backend returns a real still — some set
|
|
69
|
-
// locationPreview to the video URL itself, which decodes to
|
|
70
|
-
// nothing. Rather than show an empty box, fall back to the
|
|
71
|
-
// static placeholder branch.
|
|
72
|
-
,
|
|
73
|
-
onError: onPosterError
|
|
74
|
-
}), /*#__PURE__*/_jsx(PlayBadge, {})]
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Fallback for messages with no usable poster frame: a static dark
|
|
80
|
-
* placeholder behind the play badge.
|
|
81
|
-
*
|
|
82
|
-
* This branch used to mount an expo-video player purely to paint the
|
|
83
|
-
* first frame (`VideoView` + `surfaceType="textureView"`). That never
|
|
84
|
-
* composited reliably: on Android (Pixel, Android 16, New Architecture)
|
|
85
|
-
* the native video surface draws ABOVE sibling RN views, swallowing the
|
|
86
|
-
* play badge — the video looked like a plain photo. There is no
|
|
87
|
-
* surfaceType/zIndex combination that guarantees ordering across SDK 54
|
|
88
|
-
* and 57, so we don't fight it: no live surface in the bubble at all.
|
|
89
|
-
* The badge is plain RN views over a plain RN background, which cannot
|
|
90
|
-
* be occluded, and we drop the per-row player instance as a bonus.
|
|
91
|
-
* Actual playback (and the real first frame) happens in the full-screen
|
|
92
|
-
* preview modal.
|
|
93
|
-
*/
|
|
94
|
-
const PlaceholderVideo = ({
|
|
95
|
-
onOpen
|
|
96
|
-
}) => {
|
|
97
|
-
const dims = defaultMediaDims();
|
|
98
|
-
return /*#__PURE__*/_jsx(Pressable, {
|
|
99
|
-
onPress: onOpen,
|
|
100
|
-
style: [styles.wrapper, {
|
|
101
|
-
width: dims.width,
|
|
102
|
-
height: dims.height
|
|
103
|
-
}],
|
|
104
|
-
accessibilityRole: "button",
|
|
105
|
-
accessibilityLabel: "Play video",
|
|
106
|
-
children: /*#__PURE__*/_jsx(PlayBadge, {})
|
|
107
|
-
});
|
|
108
|
-
};
|
|
109
12
|
const CustomMessageVideo = ({
|
|
110
13
|
fileName,
|
|
111
|
-
originalName,
|
|
112
14
|
fileURL,
|
|
113
|
-
mimetype
|
|
114
|
-
previewURL
|
|
15
|
+
mimetype
|
|
115
16
|
}) => {
|
|
116
17
|
const dispatch = useDispatch();
|
|
117
|
-
const [
|
|
18
|
+
const [dims, setDims] = useState(defaultMediaDims());
|
|
19
|
+
const player = useVideoPlayer(fileURL, p => {
|
|
20
|
+
p.muted = true;
|
|
21
|
+
});
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const sub = player.addListener('statusChange', () => {
|
|
24
|
+
const size = player.videoTrack?.size;
|
|
25
|
+
if (size?.width && size?.height) {
|
|
26
|
+
setDims(fitMediaDimensions(size.width, size.height));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return () => sub.remove();
|
|
30
|
+
}, [player]);
|
|
118
31
|
const handleOpen = () => {
|
|
119
32
|
dispatch(setActiveFile({
|
|
120
33
|
fileName,
|
|
121
34
|
fileURL,
|
|
122
|
-
mimetype
|
|
123
|
-
originalName
|
|
35
|
+
mimetype
|
|
124
36
|
}));
|
|
125
37
|
dispatch(setActiveModal(MODAL_TYPES.FILE_PREVIEW));
|
|
126
38
|
};
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
39
|
+
return (
|
|
40
|
+
/*#__PURE__*/
|
|
41
|
+
// Capture-overlay pattern: VideoView sits underneath without ANY
|
|
42
|
+
// touch participation; a transparent absolute-fill <Pressable> on
|
|
43
|
+
// top owns the tap. Previously we wrapped VideoView in a
|
|
44
|
+
// TouchableOpacity and set `pointerEvents="none"` on the inner
|
|
45
|
+
// VideoView — but on some expo-video versions / iOS the native
|
|
46
|
+
// VideoView still intercepted gestures despite that hint, so
|
|
47
|
+
// tapping the poster did nothing. Customer-reported #9 (video
|
|
48
|
+
// preview unresponsive). The Pressable now guarantees the tap
|
|
49
|
+
// reaches `handleOpen`.
|
|
50
|
+
_jsxs(View, {
|
|
51
|
+
style: [styles.wrapper, {
|
|
52
|
+
width: dims.width,
|
|
53
|
+
height: dims.height
|
|
54
|
+
}],
|
|
55
|
+
children: [/*#__PURE__*/_jsx(VideoView, {
|
|
56
|
+
player: player,
|
|
57
|
+
style: styles.video,
|
|
58
|
+
contentFit: "cover",
|
|
59
|
+
nativeControls: false,
|
|
60
|
+
surfaceType: "textureView",
|
|
61
|
+
pointerEvents: "none"
|
|
62
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
63
|
+
style: styles.overlay,
|
|
64
|
+
pointerEvents: "none",
|
|
65
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
66
|
+
style: styles.playButton,
|
|
67
|
+
children: /*#__PURE__*/_jsx(PlayIcon, {
|
|
68
|
+
width: 28,
|
|
69
|
+
height: 28
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
73
|
+
onPress: handleOpen
|
|
74
|
+
// Sits ON TOP of VideoView + the play-button overlay; transparent
|
|
75
|
+
// so the poster + play icon show through. Captures the tap and
|
|
76
|
+
// routes to handleOpen → setActiveModal(FILE_PREVIEW).
|
|
77
|
+
,
|
|
78
|
+
style: StyleSheet.absoluteFill,
|
|
79
|
+
accessibilityRole: "button",
|
|
80
|
+
accessibilityLabel: "Play video"
|
|
81
|
+
})]
|
|
82
|
+
})
|
|
83
|
+
);
|
|
142
84
|
};
|
|
143
85
|
export default CustomMessageVideo;
|
|
144
86
|
const styles = StyleSheet.create({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Pressable","StyleSheet","View","useVideoPlayer","VideoView","useDispatch","setActiveFile","setActiveModal","MODAL_TYPES","PlayIcon","defaultMediaDims","fitMediaDimensions","jsx","_jsx","jsxs","_jsxs","CustomMessageVideo","fileName","fileURL","mimetype","dispatch","dims","setDims","player","p","muted","sub","addListener","size","videoTrack","width","height","remove","handleOpen","FILE_PREVIEW","style","styles","wrapper","children","video","contentFit","nativeControls","surfaceType","pointerEvents","overlay","playButton","onPress","absoluteFill","accessibilityRole","accessibilityLabel","create","borderRadius","overflow","backgroundColor","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["components/styled/VideoMessage.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAClD,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC1D,SAASC,cAAc,EAAEC,SAAS,QAAQ,YAAY;AACtD,SAASC,WAAW,QAAQ,aAAa;AACzC,SACEC,aAAa,EACbC,cAAc,QACT,mCAAmC;AAC1C,SAASC,WAAW,QAAQ,qCAAqC;AACjE,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SACEC,gBAAgB,EAChBC,kBAAkB,QAEb,+BAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQvC,MAAMC,kBAAqD,GAAGA,CAAC;EAC7DC,QAAQ;EACRC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAMC,QAAQ,GAAGf,WAAW,CAAC,CAAC;EAC9B,MAAM,CAACgB,IAAI,EAAEC,OAAO,CAAC,GAAGvB,QAAQ,CAAYW,gBAAgB,CAAC,CAAC,CAAC;EAE/D,MAAMa,MAAM,GAAGpB,cAAc,CAACe,OAAO,EAAGM,CAAC,IAAK;IAC5CA,CAAC,CAACC,KAAK,GAAG,IAAI;EAChB,CAAC,CAAC;EAEF3B,SAAS,CAAC,MAAM;IACd,MAAM4B,GAAG,GAAGH,MAAM,CAACI,WAAW,CAAC,cAAc,EAAE,MAAM;MACnD,MAAMC,IAAI,GAAGL,MAAM,CAACM,UAAU,EAAED,IAAI;MACpC,IAAIA,IAAI,EAAEE,KAAK,IAAIF,IAAI,EAAEG,MAAM,EAAE;QAC/BT,OAAO,CAACX,kBAAkB,CAACiB,IAAI,CAACE,KAAK,EAAEF,IAAI,CAACG,MAAM,CAAC,CAAC;MACtD;IACF,CAAC,CAAC;IACF,OAAO,MAAML,GAAG,CAACM,MAAM,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACT,MAAM,CAAC,CAAC;EAEZ,MAAMU,UAAU,GAAGA,CAAA,KAAM;IACvBb,QAAQ,CAACd,aAAa,CAAC;MAAEW,QAAQ;MAAEC,OAAO;MAAEC;IAAS,CAAC,CAAC,CAAC;IACxDC,QAAQ,CAACb,cAAc,CAACC,WAAW,CAAC0B,YAAY,CAAC,CAAC;EACpD,CAAC;EAED;IAAA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAnB,KAAA,CAACb,IAAI;MACHiC,KAAK,EAAE,CAACC,MAAM,CAACC,OAAO,EAAE;QAAEP,KAAK,EAAET,IAAI,CAACS,KAAK;QAAEC,MAAM,EAAEV,IAAI,CAACU;MAAO,CAAC,CAAE;MAAAO,QAAA,gBAEpEzB,IAAA,CAACT,SAAS;QACRmB,MAAM,EAAEA,MAAO;QACfY,KAAK,EAAEC,MAAM,CAACG,KAAM;QACpBC,UAAU,EAAC,OAAO;QAClBC,cAAc,EAAE,KAAM;QACtBC,WAAW,EAAC,aAAa;QACzBC,aAAa,EAAC;MAAM,CACrB,CAAC,eACF9B,IAAA,CAACX,IAAI;QAACiC,KAAK,EAAEC,MAAM,CAACQ,OAAQ;QAACD,aAAa,EAAC,MAAM;QAAAL,QAAA,eAC/CzB,IAAA,CAACX,IAAI;UAACiC,KAAK,EAAEC,MAAM,CAACS,UAAW;UAAAP,QAAA,eAC7BzB,IAAA,CAACJ,QAAQ;YAACqB,KAAK,EAAE,EAAG;YAACC,MAAM,EAAE;UAAG,CAAE;QAAC,CAC/B;MAAC,CACH,CAAC,eACPlB,IAAA,CAACb,SAAS;QACR8C,OAAO,EAAEb;QACT;QACA;QACA;QAAA;QACAE,KAAK,EAAElC,UAAU,CAAC8C,YAAa;QAC/BC,iBAAiB,EAAC,QAAQ;QAC1BC,kBAAkB,EAAC;MAAY,CAChC,CAAC;IAAA,CACE;EAAC;AAEX,CAAC;AAED,eAAejC,kBAAkB;AAEjC,MAAMoB,MAAM,GAAGnC,UAAU,CAACiD,MAAM,CAAC;EAC/Bb,OAAO,EAAE;IACPc,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE,QAAQ;IAClBC,eAAe,EAAE;EACnB,CAAC;EACDd,KAAK,EAAE;IACLT,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV,CAAC;EACDa,OAAO,EAAE;IACP,GAAG3C,UAAU,CAAC8C,YAAY;IAC1BO,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDV,UAAU,EAAE;IACVf,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVoB,YAAY,EAAE,EAAE;IAChBE,eAAe,EAAE,qBAAqB;IACtCC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,33 +5,23 @@ import { AppState, DeviceEventEmitter } from 'react-native';
|
|
|
5
5
|
import NetInfo from '@react-native-community/netinfo';
|
|
6
6
|
import { VideoCallOverlay } from '../components/VideoCalls/VideoCallOverlay';
|
|
7
7
|
import XmppClient from '../networking/xmppClient';
|
|
8
|
-
import {
|
|
8
|
+
import { refreshTokens } from '../roomStore/chatSettingsSlice';
|
|
9
9
|
import { buildXmppClientKey, getGlobalXmppClient, getReusableXmppClientByKey, isXmppClientReusable, setGlobalXmppClient, withXmppClientInitLock } from '../utils/clientRegistry';
|
|
10
10
|
import { applyResolvedUserToStore, refreshUserCredentialsForXmpp, resolveInitBeforeLoadUser } from '../helpers/resolveInitBeforeLoadUser';
|
|
11
11
|
import { ensureScopedChatCache } from '../helpers/ensureScopedChatCache';
|
|
12
12
|
import { getRooms as prefetchRoomsViaRest } from '../networking/api-requests/rooms.api';
|
|
13
13
|
import { allRoomPresences } from '../networking/xmpp/allRoomPresences.xmpp';
|
|
14
|
-
import { pushSubscriptionService } from '../services/pushSubscriptionService';
|
|
15
14
|
import { store } from '../roomStore';
|
|
16
15
|
import { logout, setStoreClient, setConfig } from '../roomStore/chatSettingsSlice';
|
|
17
|
-
import { setLogoutState, setVisibleRoom, clearVisibleRoom, setLastViewedTimestamp, deleteRoomMessage, setUnreadSyncing } from '../roomStore/roomsSlice';
|
|
18
|
-
import { getServerReadTimestamp } from '../helpers/getServerReadTimestamp';
|
|
16
|
+
import { setLogoutState, setVisibleRoom, clearVisibleRoom, setLastViewedTimestamp, deleteRoomMessage, msgSortableMs, setUnreadSyncing } from '../roomStore/roomsSlice';
|
|
19
17
|
import { runHistoryPreloadScheduler } from '../helpers/historyPreloadScheduler';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
18
|
+
import { asyncLocalStorage } from '../hooks/useLocalStorage';
|
|
19
|
+
import { localStorageConstants } from '../helpers/constants/LOCAL_STORAGE';
|
|
22
20
|
import { clearPersistedState } from '../roomStore/persistence';
|
|
23
21
|
import { pushLog as devPushLog } from '../utils/devLogger';
|
|
24
22
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
23
|
const XmppContext = /*#__PURE__*/createContext(null);
|
|
26
24
|
const LOGOUT_EVENT = 'ethora-xmpp-logout';
|
|
27
|
-
const subscribeAllRoomsForPush = (client, reason) => {
|
|
28
|
-
const rooms = Object.keys(store.getState().rooms.rooms || {});
|
|
29
|
-
if (!client || !rooms.length) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
const nick = client.jid?.getLocal();
|
|
33
|
-
pushSubscriptionService.subscribeToRooms(client, rooms, nick).then(() => devPushLog('xmpp', `${reason}: mucsub ok for ${rooms.length} rooms`)).catch(e => devPushLog('warn', `${reason}: mucsub subscribe failed`, e));
|
|
34
|
-
};
|
|
35
25
|
export const XmppProvider = ({
|
|
36
26
|
children,
|
|
37
27
|
config,
|
|
@@ -58,23 +48,21 @@ export const XmppProvider = ({
|
|
|
58
48
|
// the XmppClient at least doesn't crash on `undefined.password`.
|
|
59
49
|
const credentialsProvider = useMemo(() => {
|
|
60
50
|
return async () => {
|
|
61
|
-
// 1.
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
password: rotated.xmppPassword
|
|
77
|
-
};
|
|
51
|
+
// 1. Consumer-supplied REST refresh (when wired). This runs
|
|
52
|
+
// before the SDK's own refresh chain so non-Ethora backends
|
|
53
|
+
// can keep auth state in sync with their own token endpoint.
|
|
54
|
+
const customRefresh = config?.refreshTokens?.refreshFunction;
|
|
55
|
+
if (customRefresh) {
|
|
56
|
+
try {
|
|
57
|
+
const result = await customRefresh();
|
|
58
|
+
if (result?.accessToken) {
|
|
59
|
+
store.dispatch(refreshTokens({
|
|
60
|
+
token: result.accessToken,
|
|
61
|
+
refreshToken: result.refreshToken || ''
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
devPushLog('warn', 'XMPP creds refresh: customRefresh failed', err);
|
|
78
66
|
}
|
|
79
67
|
}
|
|
80
68
|
|
|
@@ -106,7 +94,7 @@ export const XmppProvider = ({
|
|
|
106
94
|
password: u?.xmppPassword || ''
|
|
107
95
|
};
|
|
108
96
|
};
|
|
109
|
-
}, [config?.jwtLogin?.enabled, config?.jwtLogin?.token, config?.refreshTokens?.
|
|
97
|
+
}, [config?.jwtLogin?.enabled, config?.jwtLogin?.token, config?.refreshTokens?.refreshFunction, config?.userLogin?.enabled, config?.customLogin?.enabled, config?.initBeforeLoadAuth?.myEndpoint]);
|
|
110
98
|
const initializeClient = useCallback(async (username, password, xmppSettings) => {
|
|
111
99
|
const settings = xmppSettings || config?.xmppSettings;
|
|
112
100
|
const key = buildXmppClientKey(username, settings);
|
|
@@ -172,22 +160,11 @@ export const XmppProvider = ({
|
|
|
172
160
|
if (!underlying) {
|
|
173
161
|
return;
|
|
174
162
|
}
|
|
175
|
-
allRoomPresences(underlying).catch(e => devPushLog('warn', 'reconnect: allRoomPresences re-join failed', e))
|
|
163
|
+
allRoomPresences(underlying).catch(e => devPushLog('warn', 'reconnect: allRoomPresences re-join failed', e));
|
|
176
164
|
// Also refresh the private store so unread / lastViewed markers
|
|
177
165
|
// are accurate after a long reconnect — the MUC re-join above only
|
|
178
166
|
// restores delivery, not unread state. Idempotent on first connect.
|
|
179
167
|
created.getChatsPrivateStoreRequestStanza().catch(e => devPushLog('warn', 'reconnect: privateStore refresh failed', e));
|
|
180
|
-
// Pull whatever landed in each room's archive while the stream was
|
|
181
|
-
// down. MUC presence re-join above only restores delivery for
|
|
182
|
-
// messages sent AFTER this reconnect — anything sent during the
|
|
183
|
-
// offline window has no live stanza to catch, and previously only
|
|
184
|
-
// came back on a full app restart (fresh useChatWrapperInit mount
|
|
185
|
-
// re-running its own one-shot boot sync). Safe on the very first
|
|
186
|
-
// connect too: rooms have no `lastMessageTimestamp` yet at that
|
|
187
|
-
// point, so this is a no-op until the bootstrap's own history load
|
|
188
|
-
// populates it. Customer-reported #32.
|
|
189
|
-
const rooms = store.getState().rooms?.rooms || {};
|
|
190
|
-
updateMessagesTillLast(rooms, created).catch(e => devPushLog('warn', 'reconnect: offline catch-up sync failed', e));
|
|
191
168
|
});
|
|
192
169
|
setClient(created);
|
|
193
170
|
lastCredsRef.current = {
|
|
@@ -260,7 +237,7 @@ export const XmppProvider = ({
|
|
|
260
237
|
devPushLog('rn', 'initBeforeLoad: clearStoreBeforeInit');
|
|
261
238
|
store.dispatch(setLogoutState());
|
|
262
239
|
store.dispatch(logout());
|
|
263
|
-
await
|
|
240
|
+
await asyncLocalStorage(localStorageConstants.ETHORA_USER).remove().catch(() => undefined);
|
|
264
241
|
}
|
|
265
242
|
await ensureScopedChatCache(config);
|
|
266
243
|
devPushLog('rn', 'initBeforeLoad: scope ok, resolving user…');
|
|
@@ -288,40 +265,13 @@ export const XmppProvider = ({
|
|
|
288
265
|
store.dispatch(setConfig(config));
|
|
289
266
|
}
|
|
290
267
|
|
|
291
|
-
// Rotate BEFORE the first XMPP connect. On the rotating backend
|
|
292
|
-
// the xmpp password is a short-lived JWT that only the newest
|
|
293
|
-
// rotation knows, and each rotation invalidates its predecessors
|
|
294
|
-
// — so a snapshot's password (a host's cached `userLogin.user`,
|
|
295
|
-
// a persisted session) is usually already dead at boot. Without
|
|
296
|
-
// this, the first SASL attempt fails `not-authorized`, all three
|
|
297
|
-
// bootstrap retries re-present the same dead password, and the
|
|
298
|
-
// user dead-ends on the Connection error modal even though one
|
|
299
|
-
// rotation away a perfectly good session existed. The rotation
|
|
300
|
-
// also lands the fileToken pre-render, so secure media never
|
|
301
|
-
// paints blank first. Quiet + deduped; when it can't rotate
|
|
302
|
-
// (no refresh material, non-rotating backend) we just connect
|
|
303
|
-
// with what the snapshot has, exactly as before.
|
|
304
|
-
// jwtLogin is skipped: /users/client just minted fresh creds.
|
|
305
|
-
let connectPassword = resolved.xmppPassword;
|
|
306
|
-
if (config?.refreshTokens?.enabled && !config?.jwtLogin?.enabled) {
|
|
307
|
-
const rotated = await refreshAuthTokensQuietly({
|
|
308
|
-
force: true
|
|
309
|
-
});
|
|
310
|
-
if (cancelled) {
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
if (rotated?.xmppPassword) {
|
|
314
|
-
connectPassword = rotated.xmppPassword;
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
|
|
318
268
|
// Kick off REST /chats/my; allRoomPresences below needs the
|
|
319
269
|
// room list to be in redux, otherwise it joins 0 MUCs and the
|
|
320
270
|
// user receives zero realtime messages until they manually tap
|
|
321
271
|
// into each room. Track the promise so we can await it before
|
|
322
272
|
// joining presences.
|
|
323
273
|
const restRoomsPromise = prefetchRoomsViaRest().catch(() => undefined);
|
|
324
|
-
const c = await initializeClient(resolved.xmppUsername,
|
|
274
|
+
const c = await initializeClient(resolved.xmppUsername, resolved.xmppPassword, config?.xmppSettings);
|
|
325
275
|
if (cancelled) {
|
|
326
276
|
return;
|
|
327
277
|
}
|
|
@@ -357,7 +307,6 @@ export const XmppProvider = ({
|
|
|
357
307
|
} catch (e) {
|
|
358
308
|
devPushLog('warn', 'initBeforeLoad: allRoomPresences failed', e);
|
|
359
309
|
}
|
|
360
|
-
subscribeAllRoomsForPush(c.client, 'initBeforeLoad');
|
|
361
310
|
store.dispatch(setStoreClient(c));
|
|
362
311
|
completedBootstrapKeyRef.current = key;
|
|
363
312
|
inflightBootstrapKeyRef.current = '';
|
|
@@ -490,14 +439,9 @@ export const XmppProvider = ({
|
|
|
490
439
|
// be re-marked visible on return. Lives in the effect closure (one per
|
|
491
440
|
// client) — persists across the listener's many invocations.
|
|
492
441
|
let visibleBeforeBackground = null;
|
|
493
|
-
const suspendInBackground = !config?.xmppSettings?.keepAliveInBackground;
|
|
494
442
|
const sub = AppState.addEventListener('change', next => {
|
|
495
443
|
const c = client;
|
|
496
444
|
if (next === 'active') {
|
|
497
|
-
if (c?.isSuspended) {
|
|
498
|
-
devPushLog('rn', 'AppState active: resuming suspended XMPP client');
|
|
499
|
-
c.resume();
|
|
500
|
-
}
|
|
501
445
|
// Returned to foreground. If the socket died while backgrounded
|
|
502
446
|
// (iOS suspends the WebSocket; long background kills it), the
|
|
503
447
|
// status may still read 'online' until xmpp.js notices the dead
|
|
@@ -529,37 +473,23 @@ export const XmppProvider = ({
|
|
|
529
473
|
if (!c) {
|
|
530
474
|
return;
|
|
531
475
|
}
|
|
532
|
-
if (next === 'background' && suspendInBackground) {
|
|
533
|
-
c.suspend().catch(() => undefined);
|
|
534
|
-
}
|
|
535
476
|
const state = store.getState();
|
|
536
477
|
const rooms = state.rooms?.rooms;
|
|
537
478
|
const visibleRoomJID = state.rooms?.visibleRoomJID || null;
|
|
538
479
|
// Mark the open room "not visible" while backgrounded so messages
|
|
539
480
|
// that arrive (or MAM-replay on reconnect) count as unread instead
|
|
540
481
|
// of being silently treated as read — the "mounted == visible ==
|
|
541
|
-
// read" gap. Stamp lastViewed
|
|
542
|
-
//
|
|
543
|
-
//
|
|
544
|
-
//
|
|
545
|
-
//
|
|
546
|
-
// store. Restored on the next 'active' transition above. Handled
|
|
547
|
-
// here in the provider so consumers using the component as a
|
|
548
|
-
// package get correct unread without reaching into the chat store
|
|
549
|
-
// themselves.
|
|
482
|
+
// read" gap. Stamp lastViewed=now as the read baseline, clear
|
|
483
|
+
// visibility, then flush that marker to the server private store.
|
|
484
|
+
// Restored on the next 'active' transition above. Handled here in
|
|
485
|
+
// the provider so consumers using the component as a package get
|
|
486
|
+
// correct unread without reaching into the chat store themselves.
|
|
550
487
|
visibleBeforeBackground = visibleRoomJID;
|
|
551
488
|
if (visibleRoomJID) {
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
// isn't blocked on this.
|
|
557
|
-
if (readTs > 0) {
|
|
558
|
-
store.dispatch(setLastViewedTimestamp({
|
|
559
|
-
chatJID: visibleRoomJID,
|
|
560
|
-
timestamp: readTs
|
|
561
|
-
}));
|
|
562
|
-
}
|
|
489
|
+
store.dispatch(setLastViewedTimestamp({
|
|
490
|
+
chatJID: visibleRoomJID,
|
|
491
|
+
timestamp: Date.now()
|
|
492
|
+
}));
|
|
563
493
|
// Drop the "New messages" divider for the room we're leaving so it
|
|
564
494
|
// doesn't linger when the user comes back (mirrors ChatRoom's
|
|
565
495
|
// unmount cleanup, which never runs while the pane stays mounted).
|
|
@@ -576,7 +506,7 @@ export const XmppProvider = ({
|
|
|
576
506
|
}).catch(() => {});
|
|
577
507
|
});
|
|
578
508
|
return () => sub.remove();
|
|
579
|
-
}, [client
|
|
509
|
+
}, [client]);
|
|
580
510
|
|
|
581
511
|
// -----------------------------------------------------------
|
|
582
512
|
// Consumer visibility signal (`isVisible` prop). For hosts that keep
|
|
@@ -585,11 +515,11 @@ export const XmppProvider = ({
|
|
|
585
515
|
// "shown" from "hidden", so the unread middleware would keep the open
|
|
586
516
|
// room's badge at 0 and messages arriving while you're elsewhere look
|
|
587
517
|
// already-read. When the host passes `isVisible`, mirror the AppState
|
|
588
|
-
// background/foreground handling: hidden → stamp lastViewed
|
|
589
|
-
//
|
|
590
|
-
//
|
|
591
|
-
//
|
|
592
|
-
//
|
|
518
|
+
// background/foreground handling: hidden → stamp lastViewed=now + clear
|
|
519
|
+
// room visibility (so later messages count) + flush; shown → restore
|
|
520
|
+
// visibility for the open room. Doing it here means consumers never
|
|
521
|
+
// touch the chat store themselves. (Undefined = host unmounts on hide,
|
|
522
|
+
// nothing to do.)
|
|
593
523
|
// -----------------------------------------------------------
|
|
594
524
|
const chatWasVisibleRef = useRef(false);
|
|
595
525
|
useEffect(() => {
|
|
@@ -609,16 +539,10 @@ export const XmppProvider = ({
|
|
|
609
539
|
}
|
|
610
540
|
} else {
|
|
611
541
|
if (wasVisible && activeRoomJID) {
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
if (readTs > 0) {
|
|
617
|
-
store.dispatch(setLastViewedTimestamp({
|
|
618
|
-
chatJID: activeRoomJID,
|
|
619
|
-
timestamp: readTs
|
|
620
|
-
}));
|
|
621
|
-
}
|
|
542
|
+
store.dispatch(setLastViewedTimestamp({
|
|
543
|
+
chatJID: activeRoomJID,
|
|
544
|
+
timestamp: Date.now()
|
|
545
|
+
}));
|
|
622
546
|
// Drop the "New messages" divider so it's gone when the user
|
|
623
547
|
// returns to the chat (mirrors ChatRoom's unmount cleanup).
|
|
624
548
|
store.dispatch(deleteRoomMessage({
|
|
@@ -655,21 +579,24 @@ export const XmppProvider = ({
|
|
|
655
579
|
return;
|
|
656
580
|
}
|
|
657
581
|
lastMessagesRef = room.messages;
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
582
|
+
let newest = 0;
|
|
583
|
+
const list = room.messages || [];
|
|
584
|
+
for (const m of list) {
|
|
585
|
+
if (!m || m.id === 'delimiter-new') {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
const ms = msgSortableMs(m);
|
|
589
|
+
if (ms > newest) {
|
|
590
|
+
newest = ms;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
if (newest <= lastStampedMs) {
|
|
667
594
|
return;
|
|
668
595
|
}
|
|
669
596
|
lastStampedMs = newest;
|
|
670
597
|
store.dispatch(setLastViewedTimestamp({
|
|
671
598
|
chatJID: jid,
|
|
672
|
-
timestamp:
|
|
599
|
+
timestamp: Date.now()
|
|
673
600
|
}));
|
|
674
601
|
if (flushTimer) {
|
|
675
602
|
clearTimeout(flushTimer);
|