@ethora/chat-component-rn 26.8.1 → 26.8.3
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 +110 -0
- package/README.md +70 -11
- package/lib/commonjs/assets/EmptyChatIllustration.js +7 -6
- package/lib/commonjs/assets/EmptyChatIllustration.js.map +1 -1
- package/lib/commonjs/assets/icons.js +7 -2
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +27 -12
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +12 -4
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/commonjs/components/DropdownMenu/DropdownMenu.js +16 -9
- package/lib/commonjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/lib/commonjs/components/ExampleComponents/CustomMessage.js +25 -7
- package/lib/commonjs/components/ExampleComponents/CustomMessage.js.map +1 -1
- package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
- package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +34 -10
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/InputComponents/Search.js +13 -4
- package/lib/commonjs/components/InputComponents/Search.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +18 -6
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +154 -15
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +42 -19
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +37 -10
- package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +72 -28
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +5 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +22 -8
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RNStyled.js +12 -4
- package/lib/commonjs/components/MainComponents/RNStyled.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +25 -8
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +214 -38
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/Select.js +29 -8
- package/lib/commonjs/components/MainComponents/Select.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +329 -99
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +24 -8
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/Message.js +46 -24
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +15 -4
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageReaction.js +10 -5
- package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js +1 -5
- package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +345 -118
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +599 -203
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +5 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +230 -0
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +89 -36
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +8 -0
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js +8 -2
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +8 -8
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +3 -6
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +205 -106
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +563 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +215 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +7 -9
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
- package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
- package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
- package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +10 -22
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +510 -244
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +77 -46
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +68 -17
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +30 -10
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +6 -2
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
- package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
- package/lib/commonjs/components/Thread/ThreadWrapper.js +9 -2
- package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/commonjs/components/Toast/Toast.js +3 -1
- package/lib/commonjs/components/Toast/Toast.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +18 -12
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/Button.js +18 -9
- package/lib/commonjs/components/styled/Button.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +8 -5
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MediaModal.js +27 -21
- package/lib/commonjs/components/styled/MediaModal.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +37 -9
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/RoomListComponents/index.js +60 -38
- package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +93 -19
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +75 -25
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInput.js +32 -18
- package/lib/commonjs/components/styled/StyledInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
- package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +20 -9
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +50 -22
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/TreadLabel.js +6 -3
- package/lib/commonjs/components/styled/TreadLabel.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +14 -4
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +119 -61
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/MessageNotificationContext.js +14 -3
- package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +184 -59
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +19 -1
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
- package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/commonjs/helpers/getChatBackground.js +26 -0
- package/lib/commonjs/helpers/getChatBackground.js.map +1 -0
- package/lib/commonjs/helpers/getDateLabelColor.js +3 -1
- package/lib/commonjs/helpers/getDateLabelColor.js.map +1 -1
- package/lib/commonjs/helpers/getDisplayFileName.js +79 -0
- package/lib/commonjs/helpers/getDisplayFileName.js.map +1 -0
- package/lib/commonjs/helpers/getIconColor.js +4 -1
- package/lib/commonjs/helpers/getIconColor.js.map +1 -1
- package/lib/commonjs/helpers/getSenderNameColor.js +3 -1
- package/lib/commonjs/helpers/getSenderNameColor.js.map +1 -1
- package/lib/commonjs/helpers/getServerReadTimestamp.js +188 -0
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/commonjs/helpers/historyPreloadScheduler.js +65 -2
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +14 -8
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +51 -9
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isOwnMessage.js +75 -0
- package/lib/commonjs/helpers/isOwnMessage.js.map +1 -0
- package/lib/commonjs/helpers/keyboardLayout.js +12 -2
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
- package/lib/commonjs/helpers/markdownParser.js +27 -5
- package/lib/commonjs/helpers/markdownParser.js.map +1 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +31 -0
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/commonjs/helpers/mimeToExtension.js +6 -14
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/msgSortableMs.js +37 -0
- package/lib/commonjs/helpers/msgSortableMs.js.map +1 -0
- package/lib/commonjs/helpers/parseMessageBody.js +82 -24
- package/lib/commonjs/helpers/parseMessageBody.js.map +1 -1
- package/lib/commonjs/helpers/persistCrypto.js +122 -0
- package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
- package/lib/commonjs/helpers/pickImageAsset.js +68 -0
- package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
- package/lib/commonjs/helpers/pushPayload.js +71 -0
- package/lib/commonjs/helpers/pushPayload.js.map +1 -0
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +130 -17
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/secureFileUrl.js +101 -0
- package/lib/commonjs/helpers/secureFileUrl.js.map +1 -0
- package/lib/commonjs/helpers/secureKeyValue.js +83 -0
- package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/commonjs/helpers/secureUserStorage.js +75 -0
- package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
- package/lib/commonjs/helpers/shallowEqual.js +36 -0
- package/lib/commonjs/helpers/shallowEqual.js.map +1 -0
- package/lib/commonjs/helpers/sheetGestures.js +32 -0
- package/lib/commonjs/helpers/sheetGestures.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +45 -12
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +30 -10
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +27 -0
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useCustomTypingIndicator.js +7 -3
- package/lib/commonjs/hooks/useCustomTypingIndicator.js.map +1 -1
- package/lib/commonjs/hooks/useFileToken.js +10 -0
- package/lib/commonjs/hooks/useFileToken.js.map +1 -0
- package/lib/commonjs/hooks/useLogout.js +33 -10
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +8 -11
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +50 -14
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useTheme.js +35 -0
- package/lib/commonjs/hooks/useTheme.js.map +1 -0
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +163 -37
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js +119 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +134 -60
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/push.api.js +130 -45
- package/lib/commonjs/networking/api-requests/push.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 +22 -9
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/user.api.js +68 -9
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +62 -112
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/authRefresh.js +332 -0
- package/lib/commonjs/networking/authRefresh.js.map +1 -0
- package/lib/commonjs/networking/stanzaHandlers.js +41 -28
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +124 -8
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +26 -7
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +35 -2
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +226 -23
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +151 -38
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushRegistration.js +250 -0
- package/lib/commonjs/services/pushRegistration.js.map +1 -0
- package/lib/commonjs/services/pushSubscriptionService.js +15 -37
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/theme/index.js +38 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/theme/styled.d.js +4 -0
- package/lib/commonjs/theme/styled.d.js.map +1 -0
- package/lib/commonjs/theme/theme.js +137 -0
- package/lib/commonjs/theme/theme.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/module/assets/EmptyChatIllustration.js +7 -6
- package/lib/module/assets/EmptyChatIllustration.js.map +1 -1
- package/lib/module/assets/icons.js +6 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +27 -12
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/ContextMenu/ContextMenuComponents.js +12 -4
- package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/module/components/DropdownMenu/DropdownMenu.js +16 -9
- package/lib/module/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/lib/module/components/ExampleComponents/CustomMessage.js +25 -7
- package/lib/module/components/ExampleComponents/CustomMessage.js.map +1 -1
- package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
- package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +34 -10
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/InputComponents/Search.js +13 -4
- package/lib/module/components/InputComponents/Search.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +18 -6
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +156 -17
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +43 -20
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LanguageSelectorModal.js +37 -10
- package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +72 -29
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +5 -1
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +22 -8
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/RNStyled.js +12 -4
- package/lib/module/components/MainComponents/RNStyled.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +25 -8
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +213 -38
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/MainComponents/Select.js +29 -8
- package/lib/module/components/MainComponents/Select.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +331 -102
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/BottomReplyContainer.js +24 -8
- package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/module/components/MessageBubble/Message.js +47 -25
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +15 -4
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageReaction.js +10 -5
- package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js +2 -6
- package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +336 -121
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +603 -208
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +6 -8
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +225 -0
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +90 -37
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +9 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/ModalHeaderComponent.js +8 -2
- package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +10 -10
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +4 -7
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +208 -108
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +555 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +210 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +8 -10
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
- package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
- package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
- package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
- package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
- package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +11 -24
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +512 -248
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +79 -48
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +67 -16
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +30 -10
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +6 -2
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
- package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
- package/lib/module/components/Thread/ThreadWrapper.js +9 -2
- package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/module/components/Toast/Toast.js +3 -1
- package/lib/module/components/Toast/Toast.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +18 -12
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/Button.js +17 -9
- package/lib/module/components/styled/Button.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +8 -5
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MediaModal.js +29 -23
- package/lib/module/components/styled/MediaModal.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +37 -9
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/RoomListComponents/index.js +62 -39
- package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +94 -20
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +75 -25
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInput.js +32 -18
- package/lib/module/components/styled/StyledInput.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
- package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +20 -9
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +50 -22
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/TreadLabel.js +6 -3
- package/lib/module/components/styled/TreadLabel.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +14 -4
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +120 -62
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/MessageNotificationContext.js +14 -3
- package/lib/module/context/MessageNotificationContext.js.map +1 -1
- package/lib/module/context/xmppProvider.js +184 -60
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +19 -1
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/ensureScopedChatCache.js +2 -2
- package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/module/helpers/getChatBackground.js +22 -0
- package/lib/module/helpers/getChatBackground.js.map +1 -0
- package/lib/module/helpers/getDateLabelColor.js +4 -1
- package/lib/module/helpers/getDateLabelColor.js.map +1 -1
- package/lib/module/helpers/getDisplayFileName.js +73 -0
- package/lib/module/helpers/getDisplayFileName.js.map +1 -0
- package/lib/module/helpers/getIconColor.js +5 -1
- package/lib/module/helpers/getIconColor.js.map +1 -1
- package/lib/module/helpers/getSenderNameColor.js +4 -1
- package/lib/module/helpers/getSenderNameColor.js.map +1 -1
- package/lib/module/helpers/getServerReadTimestamp.js +181 -0
- package/lib/module/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/module/helpers/historyPreloadScheduler.js +66 -3
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +14 -8
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +52 -9
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isOwnMessage.js +70 -0
- package/lib/module/helpers/isOwnMessage.js.map +1 -0
- package/lib/module/helpers/keyboardLayout.js +12 -2
- package/lib/module/helpers/keyboardLayout.js.map +1 -1
- package/lib/module/helpers/markdownParser.js +27 -5
- package/lib/module/helpers/markdownParser.js.map +1 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +25 -0
- package/lib/module/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/module/helpers/mimeToExtension.js +6 -13
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/msgSortableMs.js +32 -0
- package/lib/module/helpers/msgSortableMs.js.map +1 -0
- package/lib/module/helpers/parseMessageBody.js +82 -24
- package/lib/module/helpers/parseMessageBody.js.map +1 -1
- package/lib/module/helpers/persistCrypto.js +115 -0
- package/lib/module/helpers/persistCrypto.js.map +1 -0
- package/lib/module/helpers/pickImageAsset.js +63 -0
- package/lib/module/helpers/pickImageAsset.js.map +1 -0
- package/lib/module/helpers/pushPayload.js +63 -0
- package/lib/module/helpers/pushPayload.js.map +1 -0
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +130 -16
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/secureFileUrl.js +91 -0
- package/lib/module/helpers/secureFileUrl.js.map +1 -0
- package/lib/module/helpers/secureKeyValue.js +75 -0
- package/lib/module/helpers/secureKeyValue.js.map +1 -0
- package/lib/module/helpers/secureStoreRuntime.js +52 -0
- package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/module/helpers/secureUserStorage.js +72 -0
- package/lib/module/helpers/secureUserStorage.js.map +1 -0
- package/lib/module/helpers/shallowEqual.js +31 -0
- package/lib/module/helpers/shallowEqual.js.map +1 -0
- package/lib/module/helpers/sheetGestures.js +26 -0
- package/lib/module/helpers/sheetGestures.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +46 -13
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +30 -10
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +28 -1
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useCustomTypingIndicator.js +8 -3
- package/lib/module/hooks/useCustomTypingIndicator.js.map +1 -1
- package/lib/module/hooks/useFileToken.js +5 -0
- package/lib/module/hooks/useFileToken.js.map +1 -0
- package/lib/module/hooks/useLogout.js +33 -10
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +8 -11
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +52 -16
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useTheme.js +30 -0
- package/lib/module/hooks/useTheme.js.map +1 -0
- package/lib/module/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +163 -37
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js +17 -2
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +131 -59
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/push.api.js +119 -45
- package/lib/module/networking/api-requests/push.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 +21 -9
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/networking/api-requests/user.api.js +64 -7
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +61 -113
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/authRefresh.js +321 -0
- package/lib/module/networking/authRefresh.js.map +1 -0
- package/lib/module/networking/stanzaHandlers.js +41 -28
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +124 -8
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +26 -7
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +37 -4
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +223 -22
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +139 -34
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushRegistration.js +239 -0
- package/lib/module/services/pushRegistration.js.map +1 -0
- package/lib/module/services/pushSubscriptionService.js +15 -37
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/theme/index.js +7 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/theme/styled.d.js +6 -0
- package/lib/module/theme/styled.d.js.map +1 -0
- package/lib/module/theme/theme.js +131 -0
- package/lib/module/theme/theme.js.map +1 -0
- package/lib/module/version.js +1 -1
- package/lib/typescript/assets/EmptyChatIllustration.d.ts +1 -0
- package/lib/typescript/assets/EmptyChatIllustration.d.ts.map +1 -1
- package/lib/typescript/assets/icons.d.ts +24 -0
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
- package/lib/typescript/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/lib/typescript/components/ExampleComponents/CustomMessage.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/InputComponents/Search.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/LanguageSelectorModal.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts +10 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts +7 -0
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/Select.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +9 -0
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +10 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +9 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -0
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +75 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +25 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -0
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +6 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Referrals/Referrals.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts +2 -2
- package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Visibility/RadioInput.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Visibility/VisibilityModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +16 -0
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +1 -0
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts +2 -0
- 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/LastAudioMessage.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/RoomComponents/styled/StyledRoomComponents.d.ts.map +1 -1
- package/lib/typescript/components/Thread/ThreadWrapper.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/Button.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MediaModal.d.ts +2 -2
- package/lib/typescript/components/styled/MediaModal.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +14 -0
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/RoomListComponents/index.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/StyledInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/TreadLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +8 -0
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/MessageNotificationContext.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/getAvatarColor.d.ts +1 -1
- package/lib/typescript/helpers/getChatBackground.d.ts +15 -0
- package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -0
- package/lib/typescript/helpers/getDateLabelColor.d.ts +3 -7
- package/lib/typescript/helpers/getDateLabelColor.d.ts.map +1 -1
- package/lib/typescript/helpers/getDisplayFileName.d.ts +49 -0
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +1 -0
- package/lib/typescript/helpers/getIconColor.d.ts +4 -7
- package/lib/typescript/helpers/getIconColor.d.ts.map +1 -1
- package/lib/typescript/helpers/getSenderNameColor.d.ts +3 -7
- package/lib/typescript/helpers/getSenderNameColor.d.ts.map +1 -1
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +108 -0
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +1 -0
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +36 -0
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +1 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts +5 -1
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
- package/lib/typescript/helpers/markdownParser.d.ts +8 -1
- package/lib/typescript/helpers/markdownParser.d.ts.map +1 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +3 -0
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts +0 -15
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/msgSortableMs.d.ts +2 -0
- package/lib/typescript/helpers/msgSortableMs.d.ts.map +1 -0
- package/lib/typescript/helpers/parseMessageBody.d.ts +8 -1
- package/lib/typescript/helpers/parseMessageBody.d.ts.map +1 -1
- package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
- package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
- package/lib/typescript/helpers/pushPayload.d.ts +7 -0
- package/lib/typescript/helpers/pushPayload.d.ts.map +1 -0
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +7 -0
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +1 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
- package/lib/typescript/helpers/shallowEqual.d.ts +11 -0
- package/lib/typescript/helpers/shallowEqual.d.ts.map +1 -0
- package/lib/typescript/helpers/sheetGestures.d.ts +20 -0
- package/lib/typescript/helpers/sheetGestures.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +4 -1
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
- package/lib/typescript/hooks/useCustomTypingIndicator.d.ts +2 -0
- package/lib/typescript/hooks/useCustomTypingIndicator.d.ts.map +1 -1
- package/lib/typescript/hooks/useFileToken.d.ts +2 -0
- package/lib/typescript/hooks/useFileToken.d.ts.map +1 -0
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useTheme.d.ts +16 -0
- package/lib/typescript/hooks/useTheme.d.ts.map +1 -0
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +1 -0
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +16 -2
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/push.api.d.ts +46 -3
- package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/rooms.api.d.ts +1 -0
- package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +27 -0
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +12 -6
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/authRefresh.d.ts +95 -0
- package/lib/typescript/networking/authRefresh.d.ts.map +1 -0
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +10 -2
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +14 -0
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +16 -0
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts +18 -1
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +43 -3
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushRegistration.d.ts +21 -0
- package/lib/typescript/services/pushRegistration.d.ts.map +1 -0
- package/lib/typescript/services/pushSubscriptionService.d.ts +1 -5
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +5 -0
- package/lib/typescript/theme/index.d.ts.map +1 -0
- package/lib/typescript/theme/theme.d.ts +113 -0
- package/lib/typescript/theme/theme.d.ts.map +1 -0
- package/lib/typescript/types/models/room.model.d.ts +1 -0
- package/lib/typescript/types/models/room.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +70 -5
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +41 -28
- package/src/assets/EmptyChatIllustration.tsx +7 -5
- package/src/assets/icons.tsx +72 -9
- package/src/components/AuthForms/Login.tsx +14 -12
- package/src/components/ContextMenu/ContextMenuComponents.tsx +4 -4
- package/src/components/DropdownMenu/DropdownMenu.tsx +14 -6
- package/src/components/ExampleComponents/CustomMessage.tsx +9 -8
- package/src/components/ExampleComponents/CustomTypingIndicatorExamples.tsx +6 -6
- package/src/components/Header/HeaderRoomList.tsx +35 -8
- package/src/components/InputComponents/Search.tsx +7 -4
- package/src/components/MainComponents/ChatHeader.tsx +18 -6
- package/src/components/MainComponents/ChatRoom.tsx +164 -15
- package/src/components/MainComponents/ChatWrapper.tsx +44 -26
- package/src/components/MainComponents/LanguageSelectorModal.tsx +33 -7
- package/src/components/MainComponents/LoginWrapper.tsx +1 -0
- package/src/components/MainComponents/MediaMessage.tsx +63 -26
- package/src/components/MainComponents/MessageContainer.tsx +5 -1
- package/src/components/MainComponents/MessageList.tsx +36 -7
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +21 -14
- package/src/components/MainComponents/RNStyled.tsx +4 -4
- package/src/components/MainComponents/ReduxWrapper.tsx +23 -7
- package/src/components/MainComponents/RoomList.tsx +243 -40
- package/src/components/MainComponents/Select.tsx +13 -8
- package/src/components/Menu/HeaderRoomListMenu.tsx +347 -77
- package/src/components/MessageBubble/BottomReplyContainer.tsx +16 -11
- package/src/components/MessageBubble/Message.tsx +48 -25
- package/src/components/MessageBubble/MessageInteractions.tsx +17 -4
- package/src/components/MessageBubble/MessageReaction.tsx +9 -4
- package/src/components/Modals/AddMembersModal/AddMembersModal.tsx +2 -2
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +376 -106
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +639 -283
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +6 -4
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +248 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +93 -47
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +2 -1
- package/src/components/Modals/Modal/Modal.tsx +7 -0
- package/src/components/Modals/ModalHeaderComponent.tsx +9 -2
- package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +14 -6
- package/src/components/Modals/NewChatModal/ModalContent.tsx +8 -5
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +223 -119
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +624 -0
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +224 -0
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +16 -7
- package/src/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.tsx +8 -6
- package/src/components/Modals/SettingsModals/Referrals/Referrals.tsx +5 -3
- package/src/components/Modals/SettingsModals/SharedStyledComponents.ts +4 -4
- package/src/components/Modals/SettingsModals/Visibility/RadioInput.tsx +9 -5
- package/src/components/Modals/SettingsModals/Visibility/VisibilityModal.tsx +7 -7
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +12 -26
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +621 -307
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +84 -58
- package/src/components/Modals/styledModalComponents.tsx +31 -16
- package/src/components/RoomComponents/ChatRoomItem.tsx +30 -6
- package/src/components/RoomComponents/styled/LastAudioMessage.tsx +4 -2
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +28 -4
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +18 -3
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +18 -3
- package/src/components/RoomComponents/styled/StyledRoomComponents.ts +2 -0
- package/src/components/Thread/ThreadWrapper.tsx +6 -5
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/VideoCalls/VideoCallSession.tsx +8 -3
- package/src/components/styled/AudioMessage.tsx +14 -10
- package/src/components/styled/Button.tsx +15 -8
- package/src/components/styled/DateLabel.tsx +7 -3
- package/src/components/styled/MediaModal.tsx +30 -25
- package/src/components/styled/MessageImage.tsx +53 -7
- package/src/components/styled/RoomListComponents/index.tsx +60 -35
- package/src/components/styled/SendInput.tsx +106 -20
- package/src/components/styled/StyledComponents.ts +38 -25
- package/src/components/styled/StyledInput.tsx +35 -21
- package/src/components/styled/StyledInputComponents/CustomTypingIndicator.tsx +8 -8
- package/src/components/styled/StyledInputComponents/MediaComponents.tsx +20 -7
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +26 -23
- package/src/components/styled/TreadLabel.tsx +9 -3
- package/src/components/styled/UnsupportedType.tsx +14 -4
- package/src/components/styled/VideoMessage.tsx +131 -54
- package/src/context/MessageNotificationContext.tsx +18 -4
- package/src/context/xmppProvider.tsx +216 -57
- package/src/helpers/createMessageFromXml.ts +20 -1
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getChatBackground.ts +20 -0
- package/src/helpers/getDateLabelColor.ts +5 -3
- package/src/helpers/getDisplayFileName.ts +87 -0
- package/src/helpers/getIconColor.ts +6 -3
- package/src/helpers/getSenderNameColor.ts +5 -3
- package/src/helpers/getServerReadTimestamp.ts +197 -0
- package/src/helpers/historyPreloadScheduler.ts +80 -3
- package/src/helpers/initXmppRooms.tsx +14 -10
- package/src/helpers/insertMessageWithDelimiter.ts +55 -19
- package/src/helpers/isOwnMessage.ts +90 -0
- package/src/helpers/keyboardLayout.ts +23 -2
- package/src/helpers/markdownParser.tsx +29 -5
- package/src/helpers/mediaLibraryRuntime.ts +25 -0
- package/src/helpers/mimeToExtension.ts +6 -22
- package/src/helpers/msgSortableMs.ts +25 -0
- package/src/helpers/parseMessageBody.tsx +79 -26
- package/src/helpers/persistCrypto.ts +127 -0
- package/src/helpers/pickImageAsset.ts +68 -0
- package/src/helpers/pushPayload.ts +62 -0
- package/src/helpers/resolveInitBeforeLoadUser.ts +125 -18
- package/src/helpers/secureFileUrl.ts +103 -0
- package/src/helpers/secureKeyValue.ts +80 -0
- package/src/helpers/secureStoreRuntime.ts +62 -0
- package/src/helpers/secureUserStorage.ts +80 -0
- package/src/helpers/shallowEqual.ts +33 -0
- package/src/helpers/sheetGestures.ts +25 -0
- package/src/hooks/useChatRoomFocus.ts +49 -9
- package/src/hooks/useChatWrapperInit.ts +30 -10
- package/src/hooks/useComposing.tsx +37 -1
- package/src/hooks/useCustomTypingIndicator.tsx +7 -3
- package/src/hooks/useFileToken.ts +7 -0
- package/src/hooks/useLogout.tsx +39 -12
- package/src/hooks/usePendingNotification.ts +5 -11
- package/src/hooks/useSendMessage.tsx +60 -15
- package/src/hooks/useTheme.ts +41 -0
- package/src/hooks/useUnreadMessagesCounter.ts +11 -0
- package/src/i18n/strings.ts +163 -37
- package/src/main.ts +57 -2
- package/src/networking/api-requests/auth.api.ts +156 -48
- package/src/networking/api-requests/push.api.ts +185 -62
- package/src/networking/api-requests/roomMembers.api.ts +1 -1
- package/src/networking/api-requests/rooms.api.ts +18 -9
- package/src/networking/api-requests/user.api.ts +79 -7
- package/src/networking/apiClient.ts +68 -123
- package/src/networking/authRefresh.ts +451 -0
- package/src/networking/stanzaHandlers.ts +44 -28
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +71 -10
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +6 -1
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +12 -1
- package/src/networking/xmppClient.ts +141 -9
- package/src/roomStore/chatSettingsSlice.ts +34 -10
- package/src/roomStore/index.ts +40 -4
- package/src/roomStore/persistence.ts +234 -24
- package/src/roomStore/roomsSlice.ts +161 -29
- package/src/services/pushRegistration.ts +356 -0
- package/src/services/pushSubscriptionService.ts +18 -47
- package/src/theme/index.ts +10 -0
- package/src/theme/styled.d.ts +9 -0
- package/src/theme/theme.ts +243 -0
- package/src/types/models/room.model.ts +1 -0
- package/src/types/types.ts +96 -5
- package/src/version.ts +1 -1
- package/lib/commonjs/context/PushNotificationProvider.js +0 -79
- package/lib/commonjs/context/PushNotificationProvider.js.map +0 -1
- package/lib/commonjs/hooks/usePushNotifications.js +0 -110
- package/lib/commonjs/hooks/usePushNotifications.js.map +0 -1
- package/lib/commonjs/services/pushNotifications.js +0 -143
- package/lib/commonjs/services/pushNotifications.js.map +0 -1
- package/lib/module/context/PushNotificationProvider.js +0 -79
- package/lib/module/context/PushNotificationProvider.js.map +0 -1
- package/lib/module/hooks/usePushNotifications.js +0 -106
- package/lib/module/hooks/usePushNotifications.js.map +0 -1
- package/lib/module/services/pushNotifications.js +0 -130
- package/lib/module/services/pushNotifications.js.map +0 -1
- package/lib/typescript/context/PushNotificationProvider.d.ts +0 -2
- package/lib/typescript/context/PushNotificationProvider.d.ts.map +0 -1
- package/lib/typescript/hooks/usePushNotifications.d.ts +0 -5
- package/lib/typescript/hooks/usePushNotifications.d.ts.map +0 -1
- package/lib/typescript/services/pushNotifications.d.ts +0 -10
- package/lib/typescript/services/pushNotifications.d.ts.map +0 -1
- package/src/context/PushNotificationProvider.tsx +0 -78
- package/src/hooks/usePushNotifications.ts +0 -131
- package/src/services/pushNotifications.ts +0 -170
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {FC, useEffect, useMemo, useState} from 'react';
|
|
1
|
+
import React, {FC, useEffect, useMemo, useRef, useState} from 'react';
|
|
2
2
|
import {useDispatch, useSelector} from 'react-redux';
|
|
3
3
|
import ChatRoom from './ChatRoom';
|
|
4
4
|
import {
|
|
@@ -28,17 +28,20 @@ import {
|
|
|
28
28
|
setIsLoading,
|
|
29
29
|
setLastViewedTimestamp,
|
|
30
30
|
} from '../../roomStore/roomsSlice';
|
|
31
|
-
import {
|
|
31
|
+
import {refreshAuthTokensQuietly} from '../../networking/authRefresh';
|
|
32
32
|
import RoomList from './RoomList';
|
|
33
33
|
import {StyledLoaderWrapper} from '../styled/StyledComponents';
|
|
34
34
|
import Modal from '../Modals/Modal/Modal';
|
|
35
35
|
import ThreadWrapper from '../Thread/ThreadWrapper';
|
|
36
36
|
import {ModalWrapper} from '../Modals/ModalWrapper/ModalWrapper';
|
|
37
37
|
import {useChatSettingState} from '../../hooks/useChatSettingState';
|
|
38
|
+
import {useTheme} from '../../hooks/useTheme';
|
|
39
|
+
import { usePendingNotification } from '../../hooks/usePendingNotification';
|
|
38
40
|
import {DeviceEventEmitter, Pressable, Text, View} from 'react-native';
|
|
39
41
|
import {pushLog as devPushLog} from '../../utils/devLogger';
|
|
40
42
|
import {normalizeRoomJid} from '../../helpers/normalizeRoomJid';
|
|
41
43
|
import {buildSeedRoom} from '../../helpers/buildSeedRoom';
|
|
44
|
+
import {shallowEqual} from '../../helpers/shallowEqual';
|
|
42
45
|
import {InteractionsOverlayProvider} from '../MessageBubble/InteractionsOverlay';
|
|
43
46
|
|
|
44
47
|
interface ChatWrapperProps {
|
|
@@ -65,6 +68,9 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
65
68
|
client: storedClient,
|
|
66
69
|
} = useChatSettingState();
|
|
67
70
|
|
|
71
|
+
usePendingNotification();
|
|
72
|
+
const theme = useTheme();
|
|
73
|
+
|
|
68
74
|
const [isInited, setInited] = useState(false);
|
|
69
75
|
const [showModal, setShowModal] = useState(false);
|
|
70
76
|
const [errorMsg, setErrorMsg] = useState<string | null>(null);
|
|
@@ -186,6 +192,23 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
186
192
|
dispatch(addRoom({roomData: buildSeedRoom(seededRoomJID)}));
|
|
187
193
|
}, [seededRoomJID, seededRoomMissing, dispatch]);
|
|
188
194
|
|
|
195
|
+
// Presentational config flags (e.g. `disableHeader`) can change while the
|
|
196
|
+
// chat stays mounted — sync them to redux whenever `config` actually
|
|
197
|
+
// changes, not just at init. Kept separate from the init effect below so
|
|
198
|
+
// toggling a flag doesn't re-run client/token setup. Guarded with a
|
|
199
|
+
// shallow-equal check (not just the `config` reference) because hosts
|
|
200
|
+
// commonly pass an inline object literal (`<Chat config={{...}}/>`) that
|
|
201
|
+
// is a new reference on every render even when nothing in it changed —
|
|
202
|
+
// dispatching unconditionally there would re-render every config
|
|
203
|
+
// consumer (ChatRoom, modals, ...) on every host render.
|
|
204
|
+
const lastSyncedConfigRef = useRef<IConfig | undefined>(undefined);
|
|
205
|
+
useEffect(() => {
|
|
206
|
+
if (config && !shallowEqual(lastSyncedConfigRef.current, config)) {
|
|
207
|
+
lastSyncedConfigRef.current = config;
|
|
208
|
+
dispatch(setConfig(config));
|
|
209
|
+
}
|
|
210
|
+
}, [config, dispatch]);
|
|
211
|
+
|
|
189
212
|
useEffect(() => {
|
|
190
213
|
if (roomJID) {
|
|
191
214
|
dispatch(
|
|
@@ -195,6 +218,16 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
195
218
|
);
|
|
196
219
|
}
|
|
197
220
|
|
|
221
|
+
// Top-up rotation after the client is up. Deduped inside
|
|
222
|
+
// `refreshAuthTokensQuietly`, so it can no longer race the 401
|
|
223
|
+
// interceptor into a second, parallel rotation — which the backend
|
|
224
|
+
// would read as reuse. Never rejects, hence no `.catch` here.
|
|
225
|
+
const ensureFreshTokens = () => {
|
|
226
|
+
if (config?.refreshTokens?.enabled) {
|
|
227
|
+
refreshAuthTokensQuietly();
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
198
231
|
const initXmmpClient = async () => {
|
|
199
232
|
// Only sync config to redux if we have one — passing `undefined`
|
|
200
233
|
// wipes whatever XmppProvider already set up.
|
|
@@ -285,14 +318,7 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
285
318
|
devPushLog('warn', 'initializeClient failed (legacy path)', err);
|
|
286
319
|
}
|
|
287
320
|
setInited(true);
|
|
288
|
-
|
|
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
|
-
}
|
|
321
|
+
ensureFreshTokens();
|
|
296
322
|
} else if (storedClient) {
|
|
297
323
|
devPushLog('rn', 'ChatWrapper: reusing storedClient');
|
|
298
324
|
setClient(storedClient);
|
|
@@ -307,11 +333,7 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
307
333
|
.catch((err: unknown) => console.warn('getRoomsStanza failed', err));
|
|
308
334
|
}
|
|
309
335
|
setInited(true);
|
|
310
|
-
|
|
311
|
-
refresh().catch((err) =>
|
|
312
|
-
console.warn('refresh failed', err)
|
|
313
|
-
);
|
|
314
|
-
}
|
|
336
|
+
ensureFreshTokens();
|
|
315
337
|
} else if (client) {
|
|
316
338
|
devPushLog('rn', 'ChatWrapper: reusing provider client');
|
|
317
339
|
if (!activeRoomJID) {
|
|
@@ -328,11 +350,7 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
328
350
|
console.warn('getChatsPrivateStoreRequestStanza failed', err)
|
|
329
351
|
);
|
|
330
352
|
setInited(true);
|
|
331
|
-
|
|
332
|
-
refresh().catch((err) =>
|
|
333
|
-
console.warn('refresh failed', err)
|
|
334
|
-
);
|
|
335
|
-
}
|
|
353
|
+
ensureFreshTokens();
|
|
336
354
|
}
|
|
337
355
|
|
|
338
356
|
dispatch(setIsLoading({loading: false}));
|
|
@@ -421,7 +439,7 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
421
439
|
<View
|
|
422
440
|
style={{
|
|
423
441
|
padding: 20,
|
|
424
|
-
backgroundColor:
|
|
442
|
+
backgroundColor: theme.surface,
|
|
425
443
|
borderRadius: 12,
|
|
426
444
|
maxWidth: 320,
|
|
427
445
|
alignItems: 'stretch',
|
|
@@ -431,11 +449,11 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
431
449
|
fontSize: 16,
|
|
432
450
|
fontWeight: '600',
|
|
433
451
|
marginBottom: 8,
|
|
434
|
-
color:
|
|
452
|
+
color: theme.text,
|
|
435
453
|
}}>
|
|
436
454
|
Connection error
|
|
437
455
|
</Text>
|
|
438
|
-
<Text style={{fontSize: 13, color:
|
|
456
|
+
<Text style={{fontSize: 13, color: theme.textSecondary, marginBottom: 16}}>
|
|
439
457
|
{errorMsg ?? 'Something went wrong while connecting to chat.'}
|
|
440
458
|
</Text>
|
|
441
459
|
<Pressable
|
|
@@ -452,10 +470,10 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
452
470
|
paddingVertical: 10,
|
|
453
471
|
paddingHorizontal: 16,
|
|
454
472
|
borderRadius: 6,
|
|
455
|
-
backgroundColor: pressed ? '#0040A0' :
|
|
473
|
+
backgroundColor: pressed ? '#0040A0' : theme.primary,
|
|
456
474
|
alignItems: 'center',
|
|
457
475
|
})}>
|
|
458
|
-
<Text style={{color:
|
|
476
|
+
<Text style={{color: theme.textOnPrimary, fontWeight: '600'}}>Retry</Text>
|
|
459
477
|
</Pressable>
|
|
460
478
|
</View>
|
|
461
479
|
</Overlay>
|
|
@@ -505,7 +523,7 @@ const ChatWrapper: FC<ChatWrapperProps> = ({
|
|
|
505
523
|
title="Delete Message"
|
|
506
524
|
description="Are you sure you want to delete this message?"
|
|
507
525
|
buttonText="Delete"
|
|
508
|
-
backgroundColorButton=
|
|
526
|
+
backgroundColorButton={theme.danger}
|
|
509
527
|
handleClick={handleDeleteClick}
|
|
510
528
|
handleCloseModal={handleCloseDeleteModal}
|
|
511
529
|
compact
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
import { useT } from '../../i18n/useT';
|
|
25
25
|
import { toBaseLanguage } from '../../i18n/strings';
|
|
26
26
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
27
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
27
28
|
|
|
28
29
|
const TEXT_PRIMARY = '#141414';
|
|
29
30
|
const TEXT_MUTED = '#8C8C8C';
|
|
@@ -73,6 +74,7 @@ export const LanguageSelectorModal: FC<{
|
|
|
73
74
|
const dispatch = useDispatch();
|
|
74
75
|
const t = useT();
|
|
75
76
|
const { config, langSource, translateMode } = useChatSettingState();
|
|
77
|
+
const theme = useTheme();
|
|
76
78
|
|
|
77
79
|
const translates = config?.translates;
|
|
78
80
|
const effectiveMode = resolveTranslateMode(translates, translateMode);
|
|
@@ -97,16 +99,34 @@ export const LanguageSelectorModal: FC<{
|
|
|
97
99
|
>
|
|
98
100
|
{/* Backdrop closes on tap; the card swallows the press so a tap
|
|
99
101
|
inside it doesn't dismiss. */}
|
|
100
|
-
<Pressable
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
<Pressable
|
|
103
|
+
style={[
|
|
104
|
+
styles.backdrop,
|
|
105
|
+
// Keep the historical 0.4 scrim in light; the dark palette's
|
|
106
|
+
// heavier overlay is needed to separate the card from the ground.
|
|
107
|
+
theme.dark && { backgroundColor: theme.overlay },
|
|
108
|
+
]}
|
|
109
|
+
onPress={onClose}
|
|
110
|
+
>
|
|
111
|
+
<Pressable
|
|
112
|
+
style={[styles.card, { backgroundColor: theme.surface }]}
|
|
113
|
+
onPress={() => {}}
|
|
114
|
+
>
|
|
115
|
+
<Text style={[styles.title, { color: theme.text }]}>
|
|
116
|
+
{t('language.select')}
|
|
117
|
+
</Text>
|
|
103
118
|
|
|
104
119
|
{showModeSwitcher && (
|
|
105
120
|
<View style={styles.section}>
|
|
106
|
-
<Text style={styles.sectionLabel}>
|
|
121
|
+
<Text style={[styles.sectionLabel, { color: theme.textSecondary }]}>
|
|
107
122
|
{t('translation.modeLabel')}
|
|
108
123
|
</Text>
|
|
109
|
-
<View
|
|
124
|
+
<View
|
|
125
|
+
style={[
|
|
126
|
+
styles.segmented,
|
|
127
|
+
{ backgroundColor: theme.surfaceSecondary },
|
|
128
|
+
]}
|
|
129
|
+
>
|
|
110
130
|
{(['auto', 'manual'] as const).map((mode) => {
|
|
111
131
|
const selected = effectiveMode === mode;
|
|
112
132
|
return (
|
|
@@ -118,12 +138,15 @@ export const LanguageSelectorModal: FC<{
|
|
|
118
138
|
style={[
|
|
119
139
|
styles.segment,
|
|
120
140
|
selected && styles.segmentSelected,
|
|
141
|
+
selected && { backgroundColor: theme.surface },
|
|
121
142
|
]}
|
|
122
143
|
>
|
|
123
144
|
<Text
|
|
124
145
|
style={[
|
|
125
146
|
styles.segmentText,
|
|
147
|
+
{ color: theme.textSecondary },
|
|
126
148
|
selected && styles.segmentTextSelected,
|
|
149
|
+
selected && { color: theme.text },
|
|
127
150
|
]}
|
|
128
151
|
>
|
|
129
152
|
{mode === 'auto'
|
|
@@ -139,7 +162,9 @@ export const LanguageSelectorModal: FC<{
|
|
|
139
162
|
|
|
140
163
|
{showLanguageList && (
|
|
141
164
|
<View style={styles.section}>
|
|
142
|
-
<Text style={styles.sectionLabel
|
|
165
|
+
<Text style={[styles.sectionLabel, { color: theme.textSecondary }]}>
|
|
166
|
+
{t('language.select')}
|
|
167
|
+
</Text>
|
|
143
168
|
<ScrollView style={styles.list}>
|
|
144
169
|
{LANGUAGE_OPTIONS.map((option) => {
|
|
145
170
|
// Compare on the base language so a reader on "fr" still
|
|
@@ -153,11 +178,12 @@ export const LanguageSelectorModal: FC<{
|
|
|
153
178
|
accessibilityRole="radio"
|
|
154
179
|
accessibilityState={{ selected }}
|
|
155
180
|
onPress={() => selectLanguage(option.id)}
|
|
156
|
-
style={styles.listRow}
|
|
181
|
+
style={[styles.listRow, { borderBottomColor: theme.border }]}
|
|
157
182
|
>
|
|
158
183
|
<Text
|
|
159
184
|
style={[
|
|
160
185
|
styles.listRowText,
|
|
186
|
+
{ color: theme.text },
|
|
161
187
|
selected && styles.listRowTextSelected,
|
|
162
188
|
]}
|
|
163
189
|
>
|
|
@@ -36,6 +36,7 @@ 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 || '',
|
|
39
40
|
};
|
|
40
41
|
} catch (error) {
|
|
41
42
|
console.error('Login failed:', error);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
2
|
import { IMessage } from '../../types/types';
|
|
3
3
|
import FileDownload from '../styled/UnsupportedType';
|
|
4
4
|
import CustomMessageImage from '../styled/MessageImage';
|
|
@@ -11,10 +11,13 @@ import {
|
|
|
11
11
|
Text,
|
|
12
12
|
View,
|
|
13
13
|
} from 'react-native';
|
|
14
|
-
import {
|
|
14
|
+
import { isLikelyAudio } from '../../helpers/mimeToExtension';
|
|
15
|
+
import { getDisplayFileName } from '../../helpers/getDisplayFileName';
|
|
15
16
|
import { FileIcon, PlayIcon } from '../../assets/icons';
|
|
16
17
|
import { defaultMediaDims } from '../../helpers/mediaDimensions';
|
|
17
|
-
import {
|
|
18
|
+
import { useFileToken } from '../../hooks/useFileToken';
|
|
19
|
+
import { appendFileToken } from '../../helpers/secureFileUrl';
|
|
20
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
18
21
|
|
|
19
22
|
interface MediaMessageProps {
|
|
20
23
|
mimeType?: string;
|
|
@@ -49,23 +52,37 @@ const PendingMediaMessage: React.FC<{
|
|
|
49
52
|
isUser: boolean;
|
|
50
53
|
size?: string;
|
|
51
54
|
}> = ({ fileName, mimeType, previewUri, isUser, size }) => {
|
|
52
|
-
const
|
|
55
|
+
const theme = useTheme();
|
|
53
56
|
const statusLabel = getPendingStatusLabel(mimeType);
|
|
54
57
|
const isImage = mimeType?.startsWith('image/');
|
|
55
58
|
const isVideo = mimeType?.startsWith('video/');
|
|
56
59
|
const isAudio =
|
|
57
60
|
mimeType?.startsWith('audio/') ||
|
|
58
61
|
mimeType?.includes('application/octet-stream');
|
|
59
|
-
const primaryColor =
|
|
62
|
+
const primaryColor = theme.primary;
|
|
63
|
+
// Colour overrides only; layout stays in the static StyleSheet below.
|
|
64
|
+
const t = useMemo(
|
|
65
|
+
() => ({
|
|
66
|
+
card: { backgroundColor: theme.surfaceSecondary },
|
|
67
|
+
preview: { backgroundColor: theme.surfaceHighlight },
|
|
68
|
+
text: { color: theme.text },
|
|
69
|
+
secondary: { color: theme.textSecondary },
|
|
70
|
+
track: { backgroundColor: theme.border },
|
|
71
|
+
pill: { backgroundColor: theme.surface },
|
|
72
|
+
}),
|
|
73
|
+
[theme]
|
|
74
|
+
);
|
|
60
75
|
|
|
61
76
|
if (isImage && previewUri) {
|
|
62
77
|
return (
|
|
63
|
-
<View style={styles.pendingImageWrapper}>
|
|
78
|
+
<View style={[styles.pendingImageWrapper, t.card]}>
|
|
64
79
|
<Image
|
|
65
80
|
source={{ uri: previewUri }}
|
|
66
81
|
style={styles.pendingImage}
|
|
67
82
|
resizeMode="cover"
|
|
68
83
|
/>
|
|
84
|
+
{/* Scrim + white label sit on top of the image itself, so they
|
|
85
|
+
stay hard-coded: they must read on the photo, not the theme. */}
|
|
69
86
|
<View style={styles.pendingImageOverlay}>
|
|
70
87
|
<ActivityIndicator size="small" color="#FFFFFF" />
|
|
71
88
|
<Text style={styles.pendingOverlayText}>{statusLabel}</Text>
|
|
@@ -76,32 +93,34 @@ const PendingMediaMessage: React.FC<{
|
|
|
76
93
|
|
|
77
94
|
if (isVideo) {
|
|
78
95
|
return (
|
|
79
|
-
<View style={styles.pendingVideoCard}>
|
|
80
|
-
<View style={styles.pendingVideoPreview}>
|
|
96
|
+
<View style={[styles.pendingVideoCard, t.card]}>
|
|
97
|
+
<View style={[styles.pendingVideoPreview, t.preview]}>
|
|
81
98
|
<View style={styles.pendingVideoIcon}>
|
|
82
99
|
<PlayIcon width={24} height={24} />
|
|
83
100
|
</View>
|
|
84
|
-
<ActivityIndicator size="small" color=
|
|
101
|
+
<ActivityIndicator size="small" color={theme.textSecondary} />
|
|
85
102
|
</View>
|
|
86
|
-
<Text style={styles.pendingVideoLabel}>{fileName}</Text>
|
|
87
|
-
<Text style={styles.pendingVideoStatus}>
|
|
103
|
+
<Text style={[styles.pendingVideoLabel, t.text]}>{fileName}</Text>
|
|
104
|
+
<Text style={[styles.pendingVideoStatus, t.secondary]}>
|
|
105
|
+
{statusLabel}
|
|
106
|
+
</Text>
|
|
88
107
|
</View>
|
|
89
108
|
);
|
|
90
109
|
}
|
|
91
110
|
|
|
92
111
|
if (isAudio) {
|
|
93
112
|
return (
|
|
94
|
-
<View style={styles.pendingAudioCard}>
|
|
113
|
+
<View style={[styles.pendingAudioCard, t.card]}>
|
|
95
114
|
<View
|
|
96
115
|
style={[
|
|
97
116
|
styles.pendingAudioButton,
|
|
98
117
|
{ backgroundColor: primaryColor },
|
|
99
118
|
]}
|
|
100
119
|
>
|
|
101
|
-
<PlayIcon width={18} height={18} color=
|
|
120
|
+
<PlayIcon width={18} height={18} color={theme.textOnPrimary} />
|
|
102
121
|
</View>
|
|
103
122
|
<View style={styles.pendingAudioContent}>
|
|
104
|
-
<View style={styles.pendingAudioTrack}>
|
|
123
|
+
<View style={[styles.pendingAudioTrack, t.track]}>
|
|
105
124
|
<View
|
|
106
125
|
style={[
|
|
107
126
|
styles.pendingAudioTrackFill,
|
|
@@ -110,10 +129,12 @@ const PendingMediaMessage: React.FC<{
|
|
|
110
129
|
/>
|
|
111
130
|
</View>
|
|
112
131
|
<View style={styles.pendingAudioMeta}>
|
|
113
|
-
<Text style={styles.pendingAudioTime}>0:00</Text>
|
|
114
|
-
<View style={styles.pendingAudioStatusPill}>
|
|
115
|
-
<ActivityIndicator size="small" color=
|
|
116
|
-
<Text style={styles.pendingAudioStatusText}>
|
|
132
|
+
<Text style={[styles.pendingAudioTime, t.secondary]}>0:00</Text>
|
|
133
|
+
<View style={[styles.pendingAudioStatusPill, t.pill]}>
|
|
134
|
+
<ActivityIndicator size="small" color={theme.textSecondary} />
|
|
135
|
+
<Text style={[styles.pendingAudioStatusText, t.secondary]}>
|
|
136
|
+
{statusLabel}
|
|
137
|
+
</Text>
|
|
117
138
|
</View>
|
|
118
139
|
</View>
|
|
119
140
|
</View>
|
|
@@ -136,22 +157,27 @@ const PendingMediaMessage: React.FC<{
|
|
|
136
157
|
|
|
137
158
|
const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
138
159
|
mimeType,
|
|
139
|
-
location,
|
|
140
|
-
messageText,
|
|
160
|
+
location: rawLocation,
|
|
161
|
+
messageText: rawMessageText,
|
|
141
162
|
message,
|
|
142
163
|
isUser,
|
|
143
164
|
}) => {
|
|
165
|
+
const fileToken = useFileToken();
|
|
166
|
+
const theme = useTheme();
|
|
167
|
+
const location = appendFileToken(rawLocation, fileToken);
|
|
168
|
+
const messageText = appendFileToken(rawMessageText, fileToken);
|
|
169
|
+
|
|
144
170
|
if (mimeType) {
|
|
145
|
-
const displayName =
|
|
146
|
-
fileName: message?.fileName,
|
|
171
|
+
const displayName = getDisplayFileName({
|
|
147
172
|
originalName: (message as any)?.originalName,
|
|
148
|
-
|
|
149
|
-
|
|
173
|
+
fileName: message?.fileName,
|
|
174
|
+
location: rawLocation || rawMessageText,
|
|
175
|
+
mimetype: mimeType,
|
|
150
176
|
});
|
|
151
177
|
const isAudioPayload = isLikelyAudio(
|
|
152
178
|
mimeType,
|
|
153
179
|
displayName,
|
|
154
|
-
|
|
180
|
+
rawLocation,
|
|
155
181
|
{
|
|
156
182
|
duration: (message as any)?.duration,
|
|
157
183
|
waveForm: (message as any)?.waveForm,
|
|
@@ -174,7 +200,12 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
|
174
200
|
return (
|
|
175
201
|
<CustomMessageImage
|
|
176
202
|
fileName={displayName}
|
|
203
|
+
originalName={(message as any)?.originalName}
|
|
204
|
+
// Full-size original: opened by the preview modal.
|
|
177
205
|
fileURL={location || messageText || ''}
|
|
206
|
+
// ...and the thumbnail the bubble actually renders, which is
|
|
207
|
+
// what the web client shows too.
|
|
208
|
+
locationPreview={messageText}
|
|
178
209
|
mimetype={mimeType}
|
|
179
210
|
/>
|
|
180
211
|
);
|
|
@@ -182,7 +213,13 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
|
182
213
|
return (
|
|
183
214
|
<CustomMessageVideo
|
|
184
215
|
fileName={displayName}
|
|
216
|
+
originalName={(message as any)?.originalName}
|
|
185
217
|
fileURL={location || ''}
|
|
218
|
+
// `messageText` is the message's locationPreview — the poster
|
|
219
|
+
// frame the backend generated for this video. Handing it over
|
|
220
|
+
// lets the bubble render as a still + play badge instead of
|
|
221
|
+
// mounting a video surface per row (see VideoMessage).
|
|
222
|
+
previewURL={messageText}
|
|
186
223
|
mimetype={mimeType}
|
|
187
224
|
/>
|
|
188
225
|
);
|
|
@@ -245,7 +282,7 @@ const MediaMessage: React.FC<MediaMessageProps> = ({
|
|
|
245
282
|
}
|
|
246
283
|
}
|
|
247
284
|
}
|
|
248
|
-
return <Text>Unsupported media type</Text>;
|
|
285
|
+
return <Text style={{ color: theme.text }}>Unsupported media type</Text>;
|
|
249
286
|
};
|
|
250
287
|
|
|
251
288
|
export default MediaMessage;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { FC, Fragment, useMemo } from 'react';
|
|
2
2
|
import { IConfig, IMessage } from '../../types/types';
|
|
3
|
+
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
3
4
|
import DateLabel from '../styled/DateLabel';
|
|
4
5
|
import SystemMessage from './SystemMessage';
|
|
5
6
|
import NewMessageLabel from '../styled/NewMessageLabel';
|
|
@@ -46,7 +47,10 @@ export const MessageContainer: FC<MessageContainerProps> = ({
|
|
|
46
47
|
isReply,
|
|
47
48
|
className,
|
|
48
49
|
}) => {
|
|
49
|
-
|
|
50
|
+
// Bug #41: `message.user.id === walletAddress` used to treat two
|
|
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);
|
|
50
54
|
|
|
51
55
|
const messageDate = new Date(message.date);
|
|
52
56
|
|
|
@@ -28,6 +28,9 @@ 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 { useTheme } from '../../hooks/useTheme';
|
|
33
|
+
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
31
34
|
|
|
32
35
|
interface MessageListProps<TMessage extends IMessage> {
|
|
33
36
|
CustomMessage?: React.ComponentType<{
|
|
@@ -53,6 +56,15 @@ interface MessageListProps<TMessage extends IMessage> {
|
|
|
53
56
|
config?: IConfig;
|
|
54
57
|
isReply: boolean;
|
|
55
58
|
activeMessage?: IMessage;
|
|
59
|
+
/**
|
|
60
|
+
* Fired whenever the "read up to" boundary changes: `null` while the
|
|
61
|
+
* user is at the bottom (everything is read), or the timestamp of the
|
|
62
|
+
* newest message they'd actually seen when they scrolled away from it.
|
|
63
|
+
* Lets the host mark only what was actually viewed as read instead of
|
|
64
|
+
* stamping "now" on unmount/leave, which would wrongly clear unread
|
|
65
|
+
* messages the user scrolled up and never got back down to.
|
|
66
|
+
*/
|
|
67
|
+
onReadBoundaryChange?: (boundaryTs: number | null) => void;
|
|
56
68
|
}
|
|
57
69
|
|
|
58
70
|
const MessageList = <TMessage extends IMessage>({
|
|
@@ -66,9 +78,11 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
66
78
|
loading,
|
|
67
79
|
isReply,
|
|
68
80
|
activeMessage,
|
|
81
|
+
onReadBoundaryChange,
|
|
69
82
|
}: MessageListProps<TMessage>) => {
|
|
70
83
|
const { composing, messages, composingList } = useRoomState(roomJID)
|
|
71
84
|
.room! as IRoom;
|
|
85
|
+
const theme = useTheme();
|
|
72
86
|
const [isUserAtBottom, setIsUserAtBottom] = useState(true);
|
|
73
87
|
const [showNewMessageIndicator, setShowNewMessageIndicator] = useState(false);
|
|
74
88
|
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
@@ -332,6 +346,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
332
346
|
// counter so the badge disappears with the arrow.
|
|
333
347
|
setUnreadWhileScrolledUp(0);
|
|
334
348
|
newestSeenTsRef.current = null;
|
|
349
|
+
onReadBoundaryChange?.(null);
|
|
335
350
|
} else {
|
|
336
351
|
isUserAtBottomRef.current = false;
|
|
337
352
|
if (hasUserScrolledRef.current) {
|
|
@@ -349,11 +364,12 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
349
364
|
},
|
|
350
365
|
0
|
|
351
366
|
);
|
|
367
|
+
onReadBoundaryChange?.(newestSeenTsRef.current);
|
|
352
368
|
}
|
|
353
369
|
setIsUserAtBottom(false);
|
|
354
370
|
}
|
|
355
371
|
},
|
|
356
|
-
[memoizedMessages]
|
|
372
|
+
[memoizedMessages, onReadBoundaryChange]
|
|
357
373
|
);
|
|
358
374
|
|
|
359
375
|
// Keep the badge in sync with messages that arrive while the user is
|
|
@@ -382,6 +398,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
382
398
|
setIsUserAtBottom(true);
|
|
383
399
|
setUnreadWhileScrolledUp(0);
|
|
384
400
|
newestSeenTsRef.current = null;
|
|
401
|
+
onReadBoundaryChange?.(null);
|
|
385
402
|
scrollToBottom();
|
|
386
403
|
};
|
|
387
404
|
|
|
@@ -392,6 +409,8 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
392
409
|
setIsUserAtBottom(true);
|
|
393
410
|
setUnreadWhileScrolledUp(0);
|
|
394
411
|
newestSeenTsRef.current = null;
|
|
412
|
+
onReadBoundaryChange?.(null);
|
|
413
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
395
414
|
}, [roomJID]);
|
|
396
415
|
|
|
397
416
|
const BackgroundImage = useMemo(() => {
|
|
@@ -413,7 +432,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
413
432
|
<View
|
|
414
433
|
style={[
|
|
415
434
|
styles.container,
|
|
416
|
-
{ backgroundColor: config
|
|
435
|
+
{ backgroundColor: getChatBackgroundColor(config) },
|
|
417
436
|
]}
|
|
418
437
|
>
|
|
419
438
|
<View style={styles.backgroundImageContainer}>{BackgroundImage}</View>
|
|
@@ -422,7 +441,7 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
422
441
|
{CustomMessage && (
|
|
423
442
|
<CustomMessage
|
|
424
443
|
message={activeMessage}
|
|
425
|
-
isUser={activeMessage
|
|
444
|
+
isUser={isOwnMessage(activeMessage, user)}
|
|
426
445
|
isReply={isReply}
|
|
427
446
|
/>
|
|
428
447
|
)}
|
|
@@ -442,7 +461,9 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
442
461
|
onLayout={handleLayout}
|
|
443
462
|
inverted={true}
|
|
444
463
|
keyboardShouldPersistTaps="handled"
|
|
445
|
-
keyboardDismissMode=
|
|
464
|
+
keyboardDismissMode={
|
|
465
|
+
config?.keepKeyboardOpenOnScroll ? 'none' : 'interactive'
|
|
466
|
+
}
|
|
446
467
|
contentContainerStyle={styles.flatListContent}
|
|
447
468
|
ListFooterComponent={
|
|
448
469
|
loading && memoizedMessages.length > 15 ? (
|
|
@@ -454,16 +475,24 @@ const MessageList = <TMessage extends IMessage>({
|
|
|
454
475
|
<TouchableOpacity
|
|
455
476
|
style={[
|
|
456
477
|
styles.newMessageIndicator,
|
|
457
|
-
{
|
|
478
|
+
{
|
|
479
|
+
backgroundColor: getIconColor(config),
|
|
480
|
+
shadowColor: theme.shadow,
|
|
481
|
+
},
|
|
458
482
|
]}
|
|
459
483
|
onPress={handleNewMessageIndicatorPress}
|
|
460
484
|
>
|
|
461
485
|
{/* White chevron on the saturated FAB. The icon's default
|
|
462
486
|
color is white, which was invisible against the previous
|
|
463
487
|
light `secondary` background — hence "no icon". */}
|
|
464
|
-
<ArowDownIcon color=
|
|
488
|
+
<ArowDownIcon color={theme.textOnPrimary} width={22} height={22} />
|
|
465
489
|
{unreadWhileScrolledUp > 0 && (
|
|
466
|
-
<View
|
|
490
|
+
<View
|
|
491
|
+
style={[
|
|
492
|
+
styles.newMessageBadge,
|
|
493
|
+
{ backgroundColor: theme.danger, borderColor: theme.surface },
|
|
494
|
+
]}
|
|
495
|
+
>
|
|
467
496
|
<Text style={styles.newMessageBadgeText}>
|
|
468
497
|
{unreadWhileScrolledUp > 99 ? '99+' : unreadWhileScrolledUp}
|
|
469
498
|
</Text>
|