@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
|
@@ -6,12 +6,10 @@ import { useDispatch } from 'react-redux';
|
|
|
6
6
|
import MessageList from './MessageList';
|
|
7
7
|
import SendInput from '../styled/SendInput';
|
|
8
8
|
import {
|
|
9
|
-
clearReadBoundary,
|
|
10
9
|
clearVisibleRoom,
|
|
11
10
|
deleteRoomMessage,
|
|
12
11
|
setEditAction,
|
|
13
12
|
setLastViewedTimestamp,
|
|
14
|
-
setReadBoundary,
|
|
15
13
|
setVisibleRoom,
|
|
16
14
|
} from '../../roomStore/roomsSlice';
|
|
17
15
|
import Loader from '../styled/Loader';
|
|
@@ -22,7 +20,6 @@ import NewChatModal from '../Modals/NewChatModal/NewChatModal';
|
|
|
22
20
|
import { EditWrapper } from './EditWrapper';
|
|
23
21
|
import { EmptyChatIllustration } from '../../assets/EmptyChatIllustration';
|
|
24
22
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
25
|
-
import { getChatBackgroundColor } from '../../helpers/getChatBackground';
|
|
26
23
|
import { ChooseChatMessage } from './ChooseChatMessage';
|
|
27
24
|
import { useRoomUrl } from '../../hooks/useRoomUrl';
|
|
28
25
|
import { useSendMessage } from '../../hooks/useSendMessage';
|
|
@@ -30,14 +27,10 @@ import { IConfig } from '../../types/models/config.model';
|
|
|
30
27
|
import { useRoomInitialization } from '../../hooks/useRoomInitialization';
|
|
31
28
|
import { useRoomState } from '../../hooks/useRoomState';
|
|
32
29
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
33
|
-
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
34
30
|
import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
|
|
35
31
|
// import {PanGestureHandler} from 'react-native-gesture-handler';
|
|
36
32
|
import { FlatList } from 'react-native';
|
|
37
33
|
import {
|
|
38
|
-
AppState,
|
|
39
|
-
AppStateStatus,
|
|
40
|
-
Keyboard,
|
|
41
34
|
Platform,
|
|
42
35
|
TouchableWithoutFeedback,
|
|
43
36
|
View,
|
|
@@ -49,10 +42,6 @@ import {
|
|
|
49
42
|
} from 'react-native-keyboard-controller';
|
|
50
43
|
import useComposing from '../../hooks/useComposing';
|
|
51
44
|
import { store } from '../../roomStore';
|
|
52
|
-
import {
|
|
53
|
-
getFlushBoundaryTs,
|
|
54
|
-
getReadMarkerTimestamp,
|
|
55
|
-
} from '../../helpers/getServerReadTimestamp';
|
|
56
45
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
57
46
|
import {
|
|
58
47
|
getInputDockPaddingBottom,
|
|
@@ -117,45 +106,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
117
106
|
configWithEventHandlers || storeConfig,
|
|
118
107
|
);
|
|
119
108
|
|
|
120
|
-
// Under the sticky keyboard strategy, the input dock's position is
|
|
121
|
-
// driven by KeyboardStickyView's native-animated offset. If the app
|
|
122
|
-
// is backgrounded while the keyboard-close animation hasn't finished,
|
|
123
|
-
// the OS removes the keyboard from the app-switcher snapshot but the
|
|
124
|
-
// shared value hasn't caught up to "closed" yet, so the input appears
|
|
125
|
-
// to float in that preview.
|
|
126
|
-
//
|
|
127
|
-
// NOTE on what this does and doesn't fix: iOS actually captures that
|
|
128
|
-
// preview during the active→inactive transition, BEFORE 'background'
|
|
129
|
-
// fires — so dismissing here on 'background' lands too late to affect
|
|
130
|
-
// the snapshot already taken, and is effectively a no-op for the exact
|
|
131
|
-
// iOS symptom in bug #37. An earlier version keyed this off 'inactive'
|
|
132
|
-
// instead, which does land in time, but 'inactive' also fires for
|
|
133
|
-
// Control Center, share sheets, and permission prompts — none of which
|
|
134
|
-
// should close the user's keyboard — so that traded a rare cosmetic
|
|
135
|
-
// preview glitch for a much more common false dismissal. Kept on
|
|
136
|
-
// 'background': it still resets the offset for genuine backgrounding
|
|
137
|
-
// (home button, app switch) and for Android's recents preview (RN's
|
|
138
|
-
// AppState has no 'inactive' there), at the cost of leaving the iOS
|
|
139
|
-
// switcher-preview glitch itself unresolved. Both symptoms are cosmetic
|
|
140
|
-
// per the QA report, which explicitly accepted leaving this imperfect
|
|
141
|
-
// rather than risk destabilizing the sticky strategy. Sticky-only;
|
|
142
|
-
// doesn't touch the other keyboard strategies.
|
|
143
|
-
const stickyInputEnabled =
|
|
144
|
-
!configWithEventHandlers?.disableKeyboardAvoidingView &&
|
|
145
|
-
!!configWithEventHandlers?.keyboardStickyInput;
|
|
146
|
-
useEffect(() => {
|
|
147
|
-
if (!stickyInputEnabled) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
const onAppStateChange = (nextState: AppStateStatus) => {
|
|
151
|
-
if (nextState === 'background') {
|
|
152
|
-
Keyboard.dismiss();
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
const subscription = AppState.addEventListener('change', onAppStateChange);
|
|
156
|
-
return () => subscription.remove();
|
|
157
|
-
}, [stickyInputEnabled]);
|
|
158
|
-
|
|
159
109
|
const sendMessage = useCallback(
|
|
160
110
|
(message: string) => {
|
|
161
111
|
if (!activeRoomJID) {
|
|
@@ -220,103 +170,31 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
220
170
|
clientRef.current = client;
|
|
221
171
|
}, [client]);
|
|
222
172
|
|
|
223
|
-
// Tracks what the user actually saw: `null` while they're at the
|
|
224
|
-
// bottom (safe to mark everything read), or the timestamp of the
|
|
225
|
-
// newest message visible when they scrolled away from it. Reported
|
|
226
|
-
// by MessageList via onReadBoundaryChange, and mirrored into redux
|
|
227
|
-
// (`rooms.readBoundaries`) rather than kept only in a local ref - it
|
|
228
|
-
// is the single source of truth every "leaving this room" path
|
|
229
|
-
// consults (xmppProvider's AppState background handler, its
|
|
230
|
-
// `isVisible=false` handler, the live `advance()` effect, and
|
|
231
|
-
// `useChatRoomFocus`'s `leaveRoom`), not just this component's own
|
|
232
|
-
// unmount cleanup below. Without a boundary, leaving a room (or
|
|
233
|
-
// backgrounding) while scrolled up stamped `now()` (bug #33) or,
|
|
234
|
-
// after the #38 fix, the newest acked message regardless of scroll
|
|
235
|
-
// position (bug #42) - both silently discard genuinely-unread
|
|
236
|
-
// messages.
|
|
237
|
-
//
|
|
238
|
-
// MessageList reports the boundary from onScroll, which fires on
|
|
239
|
-
// every frame of a drag (the "back at the bottom" branch re-reports
|
|
240
|
-
// `null` each time). Mirror only actual CHANGES into redux: an
|
|
241
|
-
// unconditional dispatch per scroll frame would run the whole
|
|
242
|
-
// middleware chain and, worse, reset persistenceMiddleware's 200 ms
|
|
243
|
-
// debounce on every frame, starving the persisted write for as long
|
|
244
|
-
// as the user keeps scrolling.
|
|
245
|
-
const lastBoundarySentRef = useRef<number | null>(null);
|
|
246
|
-
const handleReadBoundaryChange = useCallback((boundaryTs: number | null) => {
|
|
247
|
-
if (!activeRoomJID) {
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const next = boundaryTs && boundaryTs > 0 ? boundaryTs : null;
|
|
251
|
-
if (lastBoundarySentRef.current === next) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
lastBoundarySentRef.current = next;
|
|
255
|
-
dispatch(setReadBoundary({ jid: activeRoomJID, ts: next }));
|
|
256
|
-
}, [activeRoomJID, dispatch]);
|
|
257
|
-
|
|
258
173
|
useEffect(() => {
|
|
259
174
|
if (!activeRoomJID) {
|
|
260
175
|
return;
|
|
261
176
|
}
|
|
262
177
|
|
|
263
|
-
lastBoundarySentRef.current = null;
|
|
264
|
-
dispatch(setReadBoundary({ jid: activeRoomJID, ts: null }));
|
|
265
178
|
dispatch(setVisibleRoom({ roomJID: activeRoomJID }));
|
|
266
179
|
setIsLoadingMore(false);
|
|
267
180
|
return () => {
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
// back to the newest server-acked message - never the device
|
|
275
|
-
// clock: a fast device clock would write a future marker that the
|
|
276
|
-
// forward-only private-store merge could never correct (bug #38).
|
|
277
|
-
const timestamp = getReadMarkerTimestamp(
|
|
278
|
-
rooms?.[activeRoomJID],
|
|
279
|
-
heapState,
|
|
280
|
-
boundaryTs,
|
|
181
|
+
const timestamp = new Date().getTime();
|
|
182
|
+
dispatch(
|
|
183
|
+
setLastViewedTimestamp({
|
|
184
|
+
chatJID: activeRoomJID,
|
|
185
|
+
timestamp,
|
|
186
|
+
}),
|
|
281
187
|
);
|
|
282
|
-
if (timestamp > 0) {
|
|
283
|
-
dispatch(
|
|
284
|
-
setLastViewedTimestamp({
|
|
285
|
-
chatJID: activeRoomJID,
|
|
286
|
-
timestamp,
|
|
287
|
-
}),
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
188
|
dispatch(clearVisibleRoom());
|
|
291
189
|
const liveClient = clientRef.current;
|
|
292
190
|
if (liveClient) {
|
|
293
191
|
liveClient
|
|
294
|
-
.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
192
|
+
.flushLastViewedToPrivateStoreStanza(store.getState().rooms?.rooms, {
|
|
295
193
|
visibleRoomJID: activeRoomJID,
|
|
296
|
-
// Carry the same boundary to the SERVER marker. Without
|
|
297
|
-
// this the flush defaults to "everything" for the visible
|
|
298
|
-
// room, so messages the user never scrolled down to come
|
|
299
|
-
// back as read on the next login - the local count was
|
|
300
|
-
// right but the server overrode it.
|
|
301
|
-
// Clamped through the same helper as the local stamp -
|
|
302
|
-
// an unclamped boundary would bypass the newest-acked
|
|
303
|
-
// ceiling on the one path where a bad value is permanent
|
|
304
|
-
// (the private-store merge is forward-only, bug #38).
|
|
305
|
-
visibleRoomTs: getFlushBoundaryTs(
|
|
306
|
-
rooms?.[activeRoomJID],
|
|
307
|
-
heapState,
|
|
308
|
-
boundaryTs,
|
|
309
|
-
),
|
|
310
194
|
})
|
|
311
195
|
.catch(() => {});
|
|
312
196
|
}
|
|
313
197
|
dispatch(deleteRoomMessage({ roomJID: activeRoomJID, messageId: 'delimiter-new' }));
|
|
314
|
-
// The room is genuinely being left (unmount, or activeRoomJID
|
|
315
|
-
// changed to a different room) - release the boundary now that
|
|
316
|
-
// it's been consumed, so a stale value can't leak into the next
|
|
317
|
-
// time this room becomes visible.
|
|
318
|
-
dispatch(clearReadBoundary({ jid: activeRoomJID }));
|
|
319
|
-
lastBoundarySentRef.current = null;
|
|
320
198
|
setIsLoadingMore(false);
|
|
321
199
|
};
|
|
322
200
|
}, [activeRoomJID, dispatch]);
|
|
@@ -352,8 +230,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
352
230
|
const inputDockPaddingBottom = getInputDockPaddingBottom({
|
|
353
231
|
platform: Platform.OS,
|
|
354
232
|
bottomInset: insets.bottom,
|
|
355
|
-
configuredPadding: configWithEventHandlers?.inputDockPaddingBottom,
|
|
356
|
-
hostOwnsLayout: !!configWithEventHandlers?.disableKeyboardAvoidingView,
|
|
357
233
|
});
|
|
358
234
|
|
|
359
235
|
// Keyboard avoidance is delegated to react-native-keyboard-controller's
|
|
@@ -403,20 +279,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
403
279
|
? KeyboardStickyView
|
|
404
280
|
: View;
|
|
405
281
|
const inputDockProps: any = {
|
|
406
|
-
|
|
407
|
-
// bottom edge, so it needs the same rounded top and upward shadow —
|
|
408
|
-
// a square white block behind a rounded composer just hid the corners.
|
|
409
|
-
style: {
|
|
410
|
-
paddingBottom: inputDockPaddingBottom,
|
|
411
|
-
backgroundColor: '#fff',
|
|
412
|
-
borderTopLeftRadius: 20,
|
|
413
|
-
borderTopRightRadius: 20,
|
|
414
|
-
shadowColor: '#101828',
|
|
415
|
-
shadowOffset: { width: 0, height: -4 },
|
|
416
|
-
shadowOpacity: 0.06,
|
|
417
|
-
shadowRadius: 12,
|
|
418
|
-
elevation: 8,
|
|
419
|
-
},
|
|
282
|
+
style: { paddingBottom: inputDockPaddingBottom, backgroundColor: '#fff' },
|
|
420
283
|
...(stickyInput
|
|
421
284
|
? { offset: { closed: 0, opened: keyboardVerticalOffset } }
|
|
422
285
|
: {}),
|
|
@@ -425,15 +288,11 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
425
288
|
return (
|
|
426
289
|
<KeyboardWrapper {...keyboardWrapperProps}>
|
|
427
290
|
<ChatContainer
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
configWithEventHandlers?.chatRoomStyles as
|
|
434
|
-
| import('react-native').ViewStyle
|
|
435
|
-
| undefined,
|
|
436
|
-
]}
|
|
291
|
+
style={
|
|
292
|
+
configWithEventHandlers?.chatRoomStyles
|
|
293
|
+
? (configWithEventHandlers.chatRoomStyles as import('react-native').ViewStyle)
|
|
294
|
+
: undefined
|
|
295
|
+
}
|
|
437
296
|
>
|
|
438
297
|
{!configWithEventHandlers?.disableHeader && (
|
|
439
298
|
<ChatHeader
|
|
@@ -472,11 +331,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
472
331
|
flex: 1,
|
|
473
332
|
justifyContent: 'center',
|
|
474
333
|
alignItems: 'center',
|
|
475
|
-
|
|
476
|
-
// header's rounded corners in exactly the same way.
|
|
477
|
-
backgroundColor: getChatBackgroundColor(
|
|
478
|
-
configWithEventHandlers
|
|
479
|
-
),
|
|
334
|
+
backgroundColor: '#ffffff',
|
|
480
335
|
}}
|
|
481
336
|
>
|
|
482
337
|
<NoMessagesPlaceholder />
|
|
@@ -502,7 +357,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
502
357
|
CustomMessageComponent ? (
|
|
503
358
|
<CustomMessageComponent
|
|
504
359
|
message={decorated.message}
|
|
505
|
-
isUser={
|
|
360
|
+
isUser={decorated.message.user.id === user.xmppUsername}
|
|
506
361
|
isReply={false}
|
|
507
362
|
/>
|
|
508
363
|
) : null
|
|
@@ -549,7 +404,6 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
549
404
|
config={configWithEventHandlers}
|
|
550
405
|
loading={isLoadingMore}
|
|
551
406
|
isReply={false}
|
|
552
|
-
onReadBoundaryChange={handleReadBoundaryChange}
|
|
553
407
|
/>
|
|
554
408
|
)}
|
|
555
409
|
</View>
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import React, {FC, useEffect, useMemo,
|
|
1
|
+
import React, {FC, useEffect, useMemo, useState} from 'react';
|
|
2
2
|
import {useDispatch, useSelector} from 'react-redux';
|
|
3
3
|
import ChatRoom from './ChatRoom';
|
|
4
4
|
import {
|
|
5
5
|
setActiveModal,
|
|
6
6
|
setConfig,
|
|
7
7
|
setDeleteModal,
|
|
8
|
+
setLangSource,
|
|
8
9
|
setStoreClient,
|
|
9
10
|
} from '../../roomStore/chatSettingsSlice';
|
|
11
|
+
import {
|
|
12
|
+
resolveExternalReaderLocaleLangSource,
|
|
13
|
+
resolveLegacyTranslatesLangSource,
|
|
14
|
+
} from '../../helpers/resolveLangSource';
|
|
10
15
|
import {ChatWrapperBox} from '../styled/ChatWrapperBox';
|
|
11
16
|
import {Overlay, StyledModal} from '../styled/MediaModal';
|
|
12
17
|
import ConnectionBanner from './ConnectionBanner';
|
|
@@ -23,19 +28,17 @@ import {
|
|
|
23
28
|
setIsLoading,
|
|
24
29
|
setLastViewedTimestamp,
|
|
25
30
|
} from '../../roomStore/roomsSlice';
|
|
26
|
-
import {
|
|
31
|
+
import {refresh} from '../../networking/apiClient';
|
|
27
32
|
import RoomList from './RoomList';
|
|
28
33
|
import {StyledLoaderWrapper} from '../styled/StyledComponents';
|
|
29
34
|
import Modal from '../Modals/Modal/Modal';
|
|
30
35
|
import ThreadWrapper from '../Thread/ThreadWrapper';
|
|
31
36
|
import {ModalWrapper} from '../Modals/ModalWrapper/ModalWrapper';
|
|
32
37
|
import {useChatSettingState} from '../../hooks/useChatSettingState';
|
|
33
|
-
import { usePendingNotification } from '../../hooks/usePendingNotification';
|
|
34
38
|
import {DeviceEventEmitter, Pressable, Text, View} from 'react-native';
|
|
35
39
|
import {pushLog as devPushLog} from '../../utils/devLogger';
|
|
36
40
|
import {normalizeRoomJid} from '../../helpers/normalizeRoomJid';
|
|
37
41
|
import {buildSeedRoom} from '../../helpers/buildSeedRoom';
|
|
38
|
-
import {shallowEqual} from '../../helpers/shallowEqual';
|
|
39
42
|
import {InteractionsOverlayProvider} from '../MessageBubble/InteractionsOverlay';
|
|
40
43
|
|
|
41
44
|
interface ChatWrapperProps {
|
|
@@ -62,8 +65,6 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
62
65
|
client: storedClient,
|
|
63
66
|
} = useChatSettingState();
|
|
64
67
|
|
|
65
|
-
usePendingNotification();
|
|
66
|
-
|
|
67
68
|
const [isInited, setInited] = useState(false);
|
|
68
69
|
const [showModal, setShowModal] = useState(false);
|
|
69
70
|
const [errorMsg, setErrorMsg] = useState<string | null>(null);
|
|
@@ -116,6 +117,26 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
116
117
|
dispatch(setDeleteModal({isDeleteModal: false}));
|
|
117
118
|
};
|
|
118
119
|
|
|
120
|
+
// A host drives the reader's language from OUTSIDE the component through
|
|
121
|
+
// `config.translates.readerLocale` (their own switcher, or the testbed's
|
|
122
|
+
// Setup tab). Nothing was syncing it into `langSource`, so pinning it only
|
|
123
|
+
// redirected the incoming-translation lookup while the UI captions and the
|
|
124
|
+
// `<translate source>` on outgoing messages kept following the unset
|
|
125
|
+
// langSource — which is why picking a language appeared to do nothing.
|
|
126
|
+
//
|
|
127
|
+
// Its own effect, not part of init: it has to re-fire whenever the host
|
|
128
|
+
// changes the value mid-session. And it dispatches only when the value is
|
|
129
|
+
// actually set, so a host that leaves it unset never clobbers what the
|
|
130
|
+
// reader picked from the globe.
|
|
131
|
+
useEffect(() => {
|
|
132
|
+
const resolved = resolveExternalReaderLocaleLangSource(
|
|
133
|
+
config?.translates?.readerLocale
|
|
134
|
+
);
|
|
135
|
+
if (resolved) {
|
|
136
|
+
dispatch(setLangSource(resolved));
|
|
137
|
+
}
|
|
138
|
+
}, [config?.translates?.readerLocale, dispatch]);
|
|
139
|
+
|
|
119
140
|
useEffect(() => {
|
|
120
141
|
return () => {
|
|
121
142
|
if (client && user.xmppPassword === '') {
|
|
@@ -165,23 +186,6 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
165
186
|
dispatch(addRoom({roomData: buildSeedRoom(seededRoomJID)}));
|
|
166
187
|
}, [seededRoomJID, seededRoomMissing, dispatch]);
|
|
167
188
|
|
|
168
|
-
// Presentational config flags (e.g. `disableHeader`) can change while the
|
|
169
|
-
// chat stays mounted — sync them to redux whenever `config` actually
|
|
170
|
-
// changes, not just at init. Kept separate from the init effect below so
|
|
171
|
-
// toggling a flag doesn't re-run client/token setup. Guarded with a
|
|
172
|
-
// shallow-equal check (not just the `config` reference) because hosts
|
|
173
|
-
// commonly pass an inline object literal (`<Chat config={{...}}/>`) that
|
|
174
|
-
// is a new reference on every render even when nothing in it changed —
|
|
175
|
-
// dispatching unconditionally there would re-render every config
|
|
176
|
-
// consumer (ChatRoom, modals, ...) on every host render.
|
|
177
|
-
const lastSyncedConfigRef = useRef<IConfig | undefined>(undefined);
|
|
178
|
-
useEffect(() => {
|
|
179
|
-
if (config && !shallowEqual(lastSyncedConfigRef.current, config)) {
|
|
180
|
-
lastSyncedConfigRef.current = config;
|
|
181
|
-
dispatch(setConfig(config));
|
|
182
|
-
}
|
|
183
|
-
}, [config, dispatch]);
|
|
184
|
-
|
|
185
189
|
useEffect(() => {
|
|
186
190
|
if (roomJID) {
|
|
187
191
|
dispatch(
|
|
@@ -191,20 +195,18 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
191
195
|
);
|
|
192
196
|
}
|
|
193
197
|
|
|
194
|
-
// Top-up rotation after the client is up. Deduped inside
|
|
195
|
-
// `refreshAuthTokensQuietly`, so it can no longer race the 401
|
|
196
|
-
// interceptor into a second, parallel rotation — which the backend
|
|
197
|
-
// would read as reuse. Never rejects, hence no `.catch` here.
|
|
198
|
-
const ensureFreshTokens = () => {
|
|
199
|
-
if (config?.refreshTokens?.enabled) {
|
|
200
|
-
refreshAuthTokensQuietly();
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
|
|
204
198
|
const initXmmpClient = async () => {
|
|
205
199
|
// Only sync config to redux if we have one — passing `undefined`
|
|
206
200
|
// wipes whatever XmppProvider already set up.
|
|
207
201
|
if (config) {dispatch(setConfig(config));}
|
|
202
|
+
// Seeds only when the host actually set the legacy single-locale
|
|
203
|
+
// field, never on mere `enabled` — see resolveLangSource.
|
|
204
|
+
const legacyLangSource = resolveLegacyTranslatesLangSource(
|
|
205
|
+
config?.translates
|
|
206
|
+
);
|
|
207
|
+
if (legacyLangSource) {
|
|
208
|
+
dispatch(setLangSource(legacyLangSource));
|
|
209
|
+
}
|
|
208
210
|
try {
|
|
209
211
|
const hasUser =
|
|
210
212
|
!!user?.defaultWallet?.walletAddress &&
|
|
@@ -283,7 +285,14 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
283
285
|
devPushLog('warn', 'initializeClient failed (legacy path)', err);
|
|
284
286
|
}
|
|
285
287
|
setInited(true);
|
|
286
|
-
|
|
288
|
+
if (config?.refreshTokens?.enabled) {
|
|
289
|
+
// refresh() is fire-and-forget but rejects on bad
|
|
290
|
+
// refreshToken / network — surface via .catch instead of
|
|
291
|
+
// leaving the rejection unhandled (was bug #4, id:2).
|
|
292
|
+
refresh().catch((err) =>
|
|
293
|
+
console.warn('refresh failed', err)
|
|
294
|
+
);
|
|
295
|
+
}
|
|
287
296
|
} else if (storedClient) {
|
|
288
297
|
devPushLog('rn', 'ChatWrapper: reusing storedClient');
|
|
289
298
|
setClient(storedClient);
|
|
@@ -298,7 +307,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
298
307
|
.catch((err: unknown) => console.warn('getRoomsStanza failed', err));
|
|
299
308
|
}
|
|
300
309
|
setInited(true);
|
|
301
|
-
|
|
310
|
+
if (config?.refreshTokens?.enabled) {
|
|
311
|
+
refresh().catch((err) =>
|
|
312
|
+
console.warn('refresh failed', err)
|
|
313
|
+
);
|
|
314
|
+
}
|
|
302
315
|
} else if (client) {
|
|
303
316
|
devPushLog('rn', 'ChatWrapper: reusing provider client');
|
|
304
317
|
if (!activeRoomJID) {
|
|
@@ -315,7 +328,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
315
328
|
console.warn('getChatsPrivateStoreRequestStanza failed', err)
|
|
316
329
|
);
|
|
317
330
|
setInited(true);
|
|
318
|
-
|
|
331
|
+
if (config?.refreshTokens?.enabled) {
|
|
332
|
+
refresh().catch((err) =>
|
|
333
|
+
console.warn('refresh failed', err)
|
|
334
|
+
);
|
|
335
|
+
}
|
|
319
336
|
}
|
|
320
337
|
|
|
321
338
|
dispatch(setIsLoading({loading: false}));
|
|
@@ -36,7 +36,6 @@ const LoginWrapper: React.FC<LoginWrapperProps> = ({...props}) => {
|
|
|
36
36
|
...authData.data.user,
|
|
37
37
|
token: authData.data.token,
|
|
38
38
|
refreshToken: authData.data.refreshToken,
|
|
39
|
-
fileToken: (authData.data as any).fileToken || '',
|
|
40
39
|
};
|
|
41
40
|
} catch (error) {
|
|
42
41
|
console.error('Login failed:', error);
|
|
@@ -11,13 +11,10 @@ import {
|
|
|
11
11
|
Text,
|
|
12
12
|
View,
|
|
13
13
|
} from 'react-native';
|
|
14
|
-
import { isLikelyAudio } from '../../helpers/mimeToExtension';
|
|
15
|
-
import { getDisplayFileName } from '../../helpers/getDisplayFileName';
|
|
14
|
+
import { deriveDisplayFilename, isLikelyAudio } from '../../helpers/mimeToExtension';
|
|
16
15
|
import { FileIcon, PlayIcon } from '../../assets/icons';
|
|
17
16
|
import { defaultMediaDims } from '../../helpers/mediaDimensions';
|
|
18
17
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
19
|
-
import { useFileToken } from '../../hooks/useFileToken';
|
|
20
|
-
import { appendFileToken } from '../../helpers/secureFileUrl';
|
|
21
18
|
|
|
22
19
|
interface MediaMessageProps {
|
|
23
20
|
mimeType?: string;
|
|
@@ -139,26 +136,22 @@ const PendingMediaMessage: React.FC<{
|
|
|
139
136
|
|
|
140
137
|
const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
141
138
|
mimeType,
|
|
142
|
-
location
|
|
143
|
-
messageText
|
|
139
|
+
location,
|
|
140
|
+
messageText,
|
|
144
141
|
message,
|
|
145
142
|
isUser,
|
|
146
143
|
}) => {
|
|
147
|
-
const fileToken = useFileToken();
|
|
148
|
-
const location = appendFileToken(rawLocation, fileToken);
|
|
149
|
-
const messageText = appendFileToken(rawMessageText, fileToken);
|
|
150
|
-
|
|
151
144
|
if (mimeType) {
|
|
152
|
-
const displayName =
|
|
153
|
-
originalName: (message as any)?.originalName,
|
|
145
|
+
const displayName = deriveDisplayFilename({
|
|
154
146
|
fileName: message?.fileName,
|
|
155
|
-
|
|
156
|
-
|
|
147
|
+
originalName: (message as any)?.originalName,
|
|
148
|
+
url: location || messageText,
|
|
149
|
+
mime: mimeType,
|
|
157
150
|
});
|
|
158
151
|
const isAudioPayload = isLikelyAudio(
|
|
159
152
|
mimeType,
|
|
160
153
|
displayName,
|
|
161
|
-
|
|
154
|
+
location,
|
|
162
155
|
{
|
|
163
156
|
duration: (message as any)?.duration,
|
|
164
157
|
waveForm: (message as any)?.waveForm,
|
|
@@ -181,12 +174,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
|
181
174
|
return (
|
|
182
175
|
<CustomMessageImage
|
|
183
176
|
fileName={displayName}
|
|
184
|
-
originalName={(message as any)?.originalName}
|
|
185
|
-
// Full-size original: opened by the preview modal.
|
|
186
177
|
fileURL={location || messageText || ''}
|
|
187
|
-
// ...and the thumbnail the bubble actually renders, which is
|
|
188
|
-
// what the web client shows too.
|
|
189
|
-
locationPreview={messageText}
|
|
190
178
|
mimetype={mimeType}
|
|
191
179
|
/>
|
|
192
180
|
);
|
|
@@ -194,13 +182,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
|
194
182
|
return (
|
|
195
183
|
<CustomMessageVideo
|
|
196
184
|
fileName={displayName}
|
|
197
|
-
originalName={(message as any)?.originalName}
|
|
198
185
|
fileURL={location || ''}
|
|
199
|
-
// `messageText` is the message's locationPreview — the poster
|
|
200
|
-
// frame the backend generated for this video. Handing it over
|
|
201
|
-
// lets the bubble render as a still + play badge instead of
|
|
202
|
-
// mounting a video surface per row (see VideoMessage).
|
|
203
|
-
previewURL={messageText}
|
|
204
186
|
mimetype={mimeType}
|
|
205
187
|
/>
|
|
206
188
|
);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { FC, Fragment, useMemo } from 'react';
|
|
2
2
|
import { IConfig, IMessage } from '../../types/types';
|
|
3
|
-
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
4
3
|
import DateLabel from '../styled/DateLabel';
|
|
5
4
|
import SystemMessage from './SystemMessage';
|
|
6
5
|
import NewMessageLabel from '../styled/NewMessageLabel';
|
|
@@ -47,10 +46,7 @@ export const MessageContainer: FC<MessageContainerProps> = ({
|
|
|
47
46
|
isReply,
|
|
48
47
|
className,
|
|
49
48
|
}) => {
|
|
50
|
-
|
|
51
|
-
// empty/undefined ids as a match, briefly rendering catch-up messages
|
|
52
|
-
// from other users as our own. isOwnMessage() never does that.
|
|
53
|
-
const isUser = isOwnMessage(message, walletAddress);
|
|
49
|
+
const isUser = message.user.id === walletAddress;
|
|
54
50
|
|
|
55
51
|
const messageDate = new Date(message.date);
|
|
56
52
|
|
|
@@ -28,8 +28,6 @@ import Loader from '../styled/Loader';
|
|
|
28
28
|
import { ArowDownIcon } from '../../assets/icons';
|
|
29
29
|
import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
|
|
30
30
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
31
|
-
import { getChatBackgroundColor } from '../../helpers/getChatBackground';
|
|
32
|
-
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
33
31
|
|
|
34
32
|
interface MessageListProps<TMessage extends IMessage> {
|
|
35
33
|
CustomMessage?: React.ComponentType<{
|
|
@@ -55,15 +53,6 @@ interface MessageListProps<TMessage extends IMessage> {
|
|
|
55
53
|
config?: IConfig;
|
|
56
54
|
isReply: boolean;
|
|
57
55
|
activeMessage?: IMessage;
|
|
58
|
-
/**
|
|
59
|
-
* Fired whenever the "read up to" boundary changes: `null` while the
|
|
60
|
-
* user is at the bottom (everything is read), or the timestamp of the
|
|
61
|
-
* newest message they'd actually seen when they scrolled away from it.
|
|
62
|
-
* Lets the host mark only what was actually viewed as read instead of
|
|
63
|
-
* stamping "now" on unmount/leave, which would wrongly clear unread
|
|
64
|
-
* messages the user scrolled up and never got back down to.
|
|
65
|
-
*/
|
|
66
|
-
onReadBoundaryChange?: (boundaryTs: number | null) => void;
|
|
67
56
|
}
|
|
68
57
|
|
|
69
58
|
const MessageList = <TMessage extends IMessage>({
|
|
@@ -77,7 +66,6 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
77
66
|
loading,
|
|
78
67
|
isReply,
|
|
79
68
|
activeMessage,
|
|
80
|
-
onReadBoundaryChange,
|
|
81
69
|
}: MessageListProps<TMessage>) => {
|
|
82
70
|
const { composing, messages, composingList } = useRoomState(roomJID)
|
|
83
71
|
.room! as IRoom;
|
|
@@ -344,7 +332,6 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
344
332
|
// counter so the badge disappears with the arrow.
|
|
345
333
|
setUnreadWhileScrolledUp(0);
|
|
346
334
|
newestSeenTsRef.current = null;
|
|
347
|
-
onReadBoundaryChange?.(null);
|
|
348
335
|
} else {
|
|
349
336
|
isUserAtBottomRef.current = false;
|
|
350
337
|
if (hasUserScrolledRef.current) {
|
|
@@ -362,12 +349,11 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
362
349
|
},
|
|
363
350
|
0
|
|
364
351
|
);
|
|
365
|
-
onReadBoundaryChange?.(newestSeenTsRef.current);
|
|
366
352
|
}
|
|
367
353
|
setIsUserAtBottom(false);
|
|
368
354
|
}
|
|
369
355
|
},
|
|
370
|
-
[memoizedMessages
|
|
356
|
+
[memoizedMessages]
|
|
371
357
|
);
|
|
372
358
|
|
|
373
359
|
// Keep the badge in sync with messages that arrive while the user is
|
|
@@ -396,7 +382,6 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
396
382
|
setIsUserAtBottom(true);
|
|
397
383
|
setUnreadWhileScrolledUp(0);
|
|
398
384
|
newestSeenTsRef.current = null;
|
|
399
|
-
onReadBoundaryChange?.(null);
|
|
400
385
|
scrollToBottom();
|
|
401
386
|
};
|
|
402
387
|
|
|
@@ -407,8 +392,6 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
407
392
|
setIsUserAtBottom(true);
|
|
408
393
|
setUnreadWhileScrolledUp(0);
|
|
409
394
|
newestSeenTsRef.current = null;
|
|
410
|
-
onReadBoundaryChange?.(null);
|
|
411
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
412
395
|
}, [roomJID]);
|
|
413
396
|
|
|
414
397
|
const BackgroundImage = useMemo(() => {
|
|
@@ -430,7 +413,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
430
413
|
<View
|
|
431
414
|
style={[
|
|
432
415
|
styles.container,
|
|
433
|
-
{ backgroundColor:
|
|
416
|
+
{ backgroundColor: config?.backgroundChat?.color || '#F3F6FC' },
|
|
434
417
|
]}
|
|
435
418
|
>
|
|
436
419
|
<View style={styles.backgroundImageContainer}>{BackgroundImage}</View>
|
|
@@ -439,7 +422,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
439
422
|
{CustomMessage && (
|
|
440
423
|
<CustomMessage
|
|
441
424
|
message={activeMessage}
|
|
442
|
-
isUser={
|
|
425
|
+
isUser={activeMessage.user.id === user.walletAddress}
|
|
443
426
|
isReply={isReply}
|
|
444
427
|
/>
|
|
445
428
|
)}
|
|
@@ -459,9 +442,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
459
442
|
onLayout={handleLayout}
|
|
460
443
|
inverted={true}
|
|
461
444
|
keyboardShouldPersistTaps="handled"
|
|
462
|
-
keyboardDismissMode=
|
|
463
|
-
config?.keepKeyboardOpenOnScroll ? 'none' : 'interactive'
|
|
464
|
-
}
|
|
445
|
+
keyboardDismissMode="interactive"
|
|
465
446
|
contentContainerStyle={styles.flatListContent}
|
|
466
447
|
ListFooterComponent={
|
|
467
448
|
loading && memoizedMessages.length > 15 ? (
|