@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
|
@@ -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 { getFlushBoundaryTs, getReadMarkerTimestamp } 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,49 +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
|
-
// clear visibility and flush that marker to the server private
|
|
547
|
-
// store. Restored on the next 'active' transition above. Handled
|
|
548
|
-
// here in the provider so consumers using the component as a
|
|
549
|
-
// package get correct unread without reaching into the chat store
|
|
550
|
-
// themselves.
|
|
551
|
-
//
|
|
552
|
-
// The read boundary (rooms.readBoundaries) is deliberately left
|
|
553
|
-
// untouched here - MessageList normally stays mounted through a
|
|
554
|
-
// simple background/foreground cycle, so its own scroll-tracking
|
|
555
|
-
// ref (the only thing that could re-derive this value) is still
|
|
556
|
-
// intact, and clearing the redux copy would desync the two. It's
|
|
557
|
-
// only USED here for the one-shot stamp+flush, matching customer
|
|
558
|
-
// #42: leaving (or backgrounding) a room while scrolled up must not
|
|
559
|
-
// mark messages the user never reached as read.
|
|
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.
|
|
560
487
|
visibleBeforeBackground = visibleRoomJID;
|
|
561
|
-
let boundaryTs = null;
|
|
562
488
|
if (visibleRoomJID) {
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
// clock. The flush below still runs so the visibility clear
|
|
568
|
-
// isn't blocked on this.
|
|
569
|
-
if (readTs > 0) {
|
|
570
|
-
store.dispatch(setLastViewedTimestamp({
|
|
571
|
-
chatJID: visibleRoomJID,
|
|
572
|
-
timestamp: readTs
|
|
573
|
-
}));
|
|
574
|
-
}
|
|
489
|
+
store.dispatch(setLastViewedTimestamp({
|
|
490
|
+
chatJID: visibleRoomJID,
|
|
491
|
+
timestamp: Date.now()
|
|
492
|
+
}));
|
|
575
493
|
// Drop the "New messages" divider for the room we're leaving so it
|
|
576
494
|
// doesn't linger when the user comes back (mirrors ChatRoom's
|
|
577
495
|
// unmount cleanup, which never runs while the pane stays mounted).
|
|
@@ -582,18 +500,13 @@ export const XmppProvider = ({
|
|
|
582
500
|
store.dispatch(clearVisibleRoom());
|
|
583
501
|
}
|
|
584
502
|
// Fire-and-forget — we're going to the background and don't
|
|
585
|
-
// care about the resolution path.
|
|
586
|
-
// boundary to the SERVER marker - without it the flush defaults to
|
|
587
|
-
// "everything" for the visible room, overriding a correct smaller
|
|
588
|
-
// local count.
|
|
503
|
+
// care about the resolution path.
|
|
589
504
|
c.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
590
|
-
visibleRoomJID
|
|
591
|
-
// Clamped through the same helper as the local stamp above.
|
|
592
|
-
visibleRoomTs: visibleRoomJID ? getFlushBoundaryTs(rooms?.[visibleRoomJID], state.roomHeapSlice, boundaryTs) : undefined
|
|
505
|
+
visibleRoomJID
|
|
593
506
|
}).catch(() => {});
|
|
594
507
|
});
|
|
595
508
|
return () => sub.remove();
|
|
596
|
-
}, [client
|
|
509
|
+
}, [client]);
|
|
597
510
|
|
|
598
511
|
// -----------------------------------------------------------
|
|
599
512
|
// Consumer visibility signal (`isVisible` prop). For hosts that keep
|
|
@@ -602,11 +515,11 @@ export const XmppProvider = ({
|
|
|
602
515
|
// "shown" from "hidden", so the unread middleware would keep the open
|
|
603
516
|
// room's badge at 0 and messages arriving while you're elsewhere look
|
|
604
517
|
// already-read. When the host passes `isVisible`, mirror the AppState
|
|
605
|
-
// background/foreground handling: hidden → stamp lastViewed
|
|
606
|
-
//
|
|
607
|
-
//
|
|
608
|
-
//
|
|
609
|
-
//
|
|
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.)
|
|
610
523
|
// -----------------------------------------------------------
|
|
611
524
|
const chatWasVisibleRef = useRef(false);
|
|
612
525
|
useEffect(() => {
|
|
@@ -625,25 +538,11 @@ export const XmppProvider = ({
|
|
|
625
538
|
}));
|
|
626
539
|
}
|
|
627
540
|
} else {
|
|
628
|
-
// The read boundary (rooms.readBoundaries) is USED for the stamp
|
|
629
|
-
// and flush below but deliberately left in place - a host using
|
|
630
|
-
// `isVisible` keeps <Chat> mounted while hidden, so MessageList's
|
|
631
|
-
// own scroll-tracking ref is still intact and the redux copy must
|
|
632
|
-
// stay in sync with it. Only consumed, never Date.now(): a fast
|
|
633
|
-
// device clock would write a future marker that the forward-only
|
|
634
|
-
// private-store merge could then never correct (bug #38). And
|
|
635
|
-
// never "the newest acked message" unconditionally either - that
|
|
636
|
-
// silently marks messages the user scrolled past and never reached
|
|
637
|
-
// as read (bug #42, a regression of #33).
|
|
638
|
-
const boundaryTs = activeRoomJID ? state.rooms?.readBoundaries?.[activeRoomJID] ?? null : null;
|
|
639
541
|
if (wasVisible && activeRoomJID) {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
timestamp: readTs
|
|
645
|
-
}));
|
|
646
|
-
}
|
|
542
|
+
store.dispatch(setLastViewedTimestamp({
|
|
543
|
+
chatJID: activeRoomJID,
|
|
544
|
+
timestamp: Date.now()
|
|
545
|
+
}));
|
|
647
546
|
// Drop the "New messages" divider so it's gone when the user
|
|
648
547
|
// returns to the chat (mirrors ChatRoom's unmount cleanup).
|
|
649
548
|
store.dispatch(deleteRoomMessage({
|
|
@@ -654,11 +553,7 @@ export const XmppProvider = ({
|
|
|
654
553
|
store.dispatch(clearVisibleRoom());
|
|
655
554
|
if (wasVisible && client?.flushLastViewedToPrivateStoreStanza) {
|
|
656
555
|
client.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
657
|
-
visibleRoomJID: activeRoomJID
|
|
658
|
-
// Carry the same boundary to the SERVER marker - without it
|
|
659
|
-
// the flush defaults to "everything" for the visible room.
|
|
660
|
-
// Clamped exactly like the local stamp above.
|
|
661
|
-
visibleRoomTs: activeRoomJID ? getFlushBoundaryTs(rooms?.[activeRoomJID], state.roomHeapSlice, boundaryTs) : undefined
|
|
556
|
+
visibleRoomJID: activeRoomJID
|
|
662
557
|
}).catch(() => {});
|
|
663
558
|
}
|
|
664
559
|
}
|
|
@@ -684,44 +579,32 @@ export const XmppProvider = ({
|
|
|
684
579
|
return;
|
|
685
580
|
}
|
|
686
581
|
lastMessagesRef = room.messages;
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
// private-store merge, leaving 0 unread even after a restart
|
|
700
|
-
// (customer #42, a regression of #33 reintroduced by #38).
|
|
701
|
-
const boundaryTs = s.rooms?.readBoundaries?.[jid] ?? null;
|
|
702
|
-
const newest = getReadMarkerTimestamp(room, s.roomHeapSlice, boundaryTs);
|
|
703
|
-
if (!newest || newest <= lastStampedMs) {
|
|
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) {
|
|
704
594
|
return;
|
|
705
595
|
}
|
|
706
596
|
lastStampedMs = newest;
|
|
707
597
|
store.dispatch(setLastViewedTimestamp({
|
|
708
598
|
chatJID: jid,
|
|
709
|
-
timestamp:
|
|
599
|
+
timestamp: Date.now()
|
|
710
600
|
}));
|
|
711
601
|
if (flushTimer) {
|
|
712
602
|
clearTimeout(flushTimer);
|
|
713
603
|
}
|
|
714
604
|
if (client?.flushLastViewedToPrivateStoreStanza) {
|
|
715
605
|
flushTimer = setTimeout(() => {
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
// boundary) in the 2s between the stamp and this flush, and
|
|
719
|
-
// the flush should reflect that.
|
|
720
|
-
const freshState = store.getState();
|
|
721
|
-
const freshBoundaryTs = freshState.rooms?.readBoundaries?.[jid] ?? null;
|
|
722
|
-
client.flushLastViewedToPrivateStoreStanza(freshState.rooms?.rooms, {
|
|
723
|
-
visibleRoomJID: jid,
|
|
724
|
-
visibleRoomTs: getFlushBoundaryTs(freshState.rooms?.rooms?.[jid], freshState.roomHeapSlice, freshBoundaryTs)
|
|
606
|
+
client.flushLastViewedToPrivateStoreStanza(store.getState().rooms?.rooms, {
|
|
607
|
+
visibleRoomJID: jid
|
|
725
608
|
}).catch(() => {});
|
|
726
609
|
}, 2000);
|
|
727
610
|
}
|