@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,11 +1,14 @@
|
|
|
1
1
|
/** @format */
|
|
2
2
|
|
|
3
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
3
4
|
import React, { FC, useMemo } from 'react';
|
|
4
5
|
import { View, StyleSheet, Image, Text } from 'react-native';
|
|
5
6
|
import { ProfileImagePlaceholder } from '../MainComponents/ProfileImagePlaceholder';
|
|
6
7
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
7
8
|
import { BurgerMenuIcon } from '../../assets/icons';
|
|
8
9
|
import Button from '../styled/Button';
|
|
10
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
11
|
+
import { useT } from '../../i18n/useT';
|
|
9
12
|
|
|
10
13
|
interface HeaderRoomListProps {
|
|
11
14
|
setDrawerOpen: () => void;
|
|
@@ -13,6 +16,10 @@ interface HeaderRoomListProps {
|
|
|
13
16
|
|
|
14
17
|
export const HeaderRoomList: FC<HeaderRoomListProps> = ({ setDrawerOpen }) => {
|
|
15
18
|
const { config, user, selectedUser } = useChatSettingState();
|
|
19
|
+
const theme = useTheme();
|
|
20
|
+
const t = useT();
|
|
21
|
+
const insets = useSafeAreaInsets();
|
|
22
|
+
const topInset = config?.headerLayout?.safeAreaTop ? insets.top : 0;
|
|
16
23
|
|
|
17
24
|
const modalUser: any = selectedUser ?? user;
|
|
18
25
|
|
|
@@ -34,15 +41,26 @@ export const HeaderRoomList: FC<HeaderRoomListProps> = ({ setDrawerOpen }) => {
|
|
|
34
41
|
}, [config?.backgroundChat?.image]);
|
|
35
42
|
|
|
36
43
|
return (
|
|
37
|
-
<View
|
|
44
|
+
<View
|
|
45
|
+
style={[
|
|
46
|
+
styles.headerContainer,
|
|
47
|
+
{ backgroundColor: theme.surface, shadowColor: theme.shadow },
|
|
48
|
+
topInset ? { paddingTop: 16 + topInset } : null,
|
|
49
|
+
]}
|
|
50
|
+
>
|
|
38
51
|
{!config?.disableRoomMenu && config?.headerMenu ? (
|
|
39
52
|
<View style={styles.leftContainer}>
|
|
40
53
|
<Button
|
|
54
|
+
testID="room-list-burger"
|
|
41
55
|
style={styles.menuButton}
|
|
42
56
|
color="black"
|
|
43
57
|
unstyled
|
|
44
|
-
EndIcon={<BurgerMenuIcon color={
|
|
45
|
-
onPress={() =>
|
|
58
|
+
EndIcon={<BurgerMenuIcon color={theme.icon} />}
|
|
59
|
+
onPress={() =>
|
|
60
|
+
typeof config?.headerMenu === 'function'
|
|
61
|
+
? config.headerMenu()
|
|
62
|
+
: setDrawerOpen()
|
|
63
|
+
}
|
|
46
64
|
/>
|
|
47
65
|
</View>
|
|
48
66
|
) : (
|
|
@@ -52,14 +70,16 @@ export const HeaderRoomList: FC<HeaderRoomListProps> = ({ setDrawerOpen }) => {
|
|
|
52
70
|
{config?.headerLogo ? (
|
|
53
71
|
HeaderLogo
|
|
54
72
|
) : (
|
|
55
|
-
<Text style={{ fontWeight: 500, fontSize: 18 }}>
|
|
73
|
+
<Text style={{ fontWeight: 500, fontSize: 18, color: theme.text }}>
|
|
74
|
+
{t('roomList.title')}
|
|
75
|
+
</Text>
|
|
56
76
|
)}
|
|
57
77
|
</View>
|
|
58
78
|
<View style={styles.rightContainer}>
|
|
59
79
|
<ProfileImagePlaceholder
|
|
60
80
|
icon={modalUser?.profileImage ?? null}
|
|
61
81
|
name={modalUser?.name ?? modalUser?.firstName}
|
|
62
|
-
size={
|
|
82
|
+
size={36}
|
|
63
83
|
click={{
|
|
64
84
|
isClick: true,
|
|
65
85
|
onPress: setDrawerOpen,
|
|
@@ -76,9 +96,16 @@ const styles = StyleSheet.create({
|
|
|
76
96
|
alignItems: 'center',
|
|
77
97
|
paddingHorizontal: 16,
|
|
78
98
|
paddingTop: 16,
|
|
79
|
-
paddingBottom:
|
|
99
|
+
paddingBottom: 12,
|
|
80
100
|
minHeight: 56,
|
|
81
101
|
justifyContent: 'space-between',
|
|
102
|
+
borderBottomLeftRadius: 20,
|
|
103
|
+
borderBottomRightRadius: 20,
|
|
104
|
+
shadowOffset: { width: 0, height: 4 },
|
|
105
|
+
shadowOpacity: 0.06,
|
|
106
|
+
shadowRadius: 12,
|
|
107
|
+
elevation: 4,
|
|
108
|
+
zIndex: 2,
|
|
82
109
|
},
|
|
83
110
|
menuButton: {
|
|
84
111
|
padding: 8,
|
|
@@ -86,7 +113,7 @@ const styles = StyleSheet.create({
|
|
|
86
113
|
backgroundColor: 'transparent',
|
|
87
114
|
},
|
|
88
115
|
leftContainer: {
|
|
89
|
-
width:
|
|
116
|
+
width: 44,
|
|
90
117
|
alignItems: 'flex-start',
|
|
91
118
|
justifyContent: 'center',
|
|
92
119
|
},
|
|
@@ -98,7 +125,7 @@ const styles = StyleSheet.create({
|
|
|
98
125
|
justifyContent: 'center',
|
|
99
126
|
},
|
|
100
127
|
rightContainer: {
|
|
101
|
-
width:
|
|
128
|
+
width: 44,
|
|
102
129
|
alignItems: 'flex-end',
|
|
103
130
|
justifyContent: 'center',
|
|
104
131
|
},
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
TouchableOpacity,
|
|
7
7
|
TextInputProps,
|
|
8
8
|
} from 'react-native';
|
|
9
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
9
10
|
|
|
10
11
|
const shouldForwardProp = (prop: string) =>
|
|
11
12
|
prop !== 'animated' && prop !== 'expanded' && prop !== 'direction';
|
|
@@ -18,7 +19,7 @@ const SearchInputWrapper = styled.View.withConfig({ shouldForwardProp })<{
|
|
|
18
19
|
position: relative;
|
|
19
20
|
flex-direction: row;
|
|
20
21
|
align-items: center;
|
|
21
|
-
background-color:
|
|
22
|
+
background-color: ${({ theme }) => theme.surface};
|
|
22
23
|
border-radius: 16px;
|
|
23
24
|
height: 44px;
|
|
24
25
|
padding: 0 12px;
|
|
@@ -40,7 +41,7 @@ const SearchIcon = styled(TouchableOpacity)<{
|
|
|
40
41
|
margin-right: 8px;
|
|
41
42
|
align-items: center;
|
|
42
43
|
justify-content: center;
|
|
43
|
-
color:
|
|
44
|
+
color: ${({ theme }) => theme.textMuted};
|
|
44
45
|
`;
|
|
45
46
|
|
|
46
47
|
const StyledInput = styled(TextInput)<{
|
|
@@ -51,7 +52,7 @@ const StyledInput = styled(TextInput)<{
|
|
|
51
52
|
border: none;
|
|
52
53
|
flex: 1;
|
|
53
54
|
font-size: 16px;
|
|
54
|
-
color:
|
|
55
|
+
color: ${({ theme }) => theme.text};
|
|
55
56
|
opacity: ${({ animated, expanded }) => (animated && !expanded ? 0 : 1)};
|
|
56
57
|
display: ${({ animated, expanded }) =>
|
|
57
58
|
animated && !expanded ? 'none' : 'flex'};
|
|
@@ -77,6 +78,7 @@ const SearchInput: React.FC<SearchInputProps> = ({
|
|
|
77
78
|
placeholder,
|
|
78
79
|
...props
|
|
79
80
|
}) => {
|
|
81
|
+
const theme = useTheme();
|
|
80
82
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
81
83
|
const [isTyping, setIsTyping] = useState(false);
|
|
82
84
|
const inputRef = useRef<TextInput | null>(null);
|
|
@@ -128,7 +130,8 @@ const SearchInput: React.FC<SearchInputProps> = ({
|
|
|
128
130
|
expanded={isExpanded}
|
|
129
131
|
onChangeText={handleInput}
|
|
130
132
|
placeholder={placeholder}
|
|
131
|
-
placeholderTextColor=
|
|
133
|
+
placeholderTextColor={theme.textMuted}
|
|
134
|
+
keyboardAppearance={theme.dark ? 'dark' : 'light'}
|
|
132
135
|
{...props}
|
|
133
136
|
/>
|
|
134
137
|
</SearchInputWrapper>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** @format */
|
|
2
2
|
|
|
3
3
|
import React, { useCallback } from 'react';
|
|
4
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
4
5
|
import {
|
|
5
6
|
CenterContainer,
|
|
6
7
|
ChatContainerHeader,
|
|
@@ -28,8 +29,11 @@ import { MODAL_TYPES } from '../../helpers/constants/MODAL_TYPES';
|
|
|
28
29
|
import { RoomMenu } from '../MenuRoom/MenuRoom';
|
|
29
30
|
import { useRoomState } from '../../hooks/useRoomState';
|
|
30
31
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
32
|
+
import { useFileToken } from '../../hooks/useFileToken';
|
|
33
|
+
import { appendFileToken } from '../../helpers/secureFileUrl';
|
|
31
34
|
import { View, StyleSheet, Text, Keyboard } from 'react-native';
|
|
32
35
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
36
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
33
37
|
import { resolveHeaderHeight } from '../../helpers/headerLayout';
|
|
34
38
|
import { getElementFont } from '../../helpers/getElementFont';
|
|
35
39
|
import { useT } from '../../i18n/useT';
|
|
@@ -43,6 +47,7 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
43
47
|
currentRoom,
|
|
44
48
|
handleBackClick,
|
|
45
49
|
}) => {
|
|
50
|
+
const fileToken = useFileToken();
|
|
46
51
|
const dispatch = useDispatch();
|
|
47
52
|
const { client } = useXmppClient();
|
|
48
53
|
|
|
@@ -50,6 +55,7 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
50
55
|
const roomState = useRoomState(currentRoom.jid).room;
|
|
51
56
|
const composing = roomState?.composing;
|
|
52
57
|
const { config } = useChatSettingState();
|
|
58
|
+
const theme = useTheme();
|
|
53
59
|
const t = useT();
|
|
54
60
|
|
|
55
61
|
const handleChangeChat = (chat: IRoom) => {
|
|
@@ -84,17 +90,19 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
84
90
|
// here so `height` defines the band exactly (content centers via the
|
|
85
91
|
// styled `align-items: center`); the styled 12px vertical padding would
|
|
86
92
|
// otherwise add on top of it.
|
|
87
|
-
const
|
|
93
|
+
const insets = useSafeAreaInsets();
|
|
94
|
+
const topInset = config?.headerLayout?.safeAreaTop ? insets.top : 0;
|
|
95
|
+
const headerHeight = resolveHeaderHeight(config?.headerLayout?.height) + topInset;
|
|
88
96
|
|
|
89
97
|
return (
|
|
90
98
|
<>
|
|
91
99
|
<ChatContainerHeader
|
|
92
|
-
style={{ height: headerHeight, paddingTop:
|
|
100
|
+
style={{ height: headerHeight, paddingTop: topInset, paddingBottom: 0 }}
|
|
93
101
|
>
|
|
94
102
|
{handleBackClick && !config?.headerChatMenu ? (
|
|
95
103
|
<View style={styles.leftContainer}>
|
|
96
104
|
<Button
|
|
97
|
-
EndIcon={<BackIcon />}
|
|
105
|
+
EndIcon={<BackIcon color={theme.textSecondary} />}
|
|
98
106
|
onPress={() => handleBackClick(false)}
|
|
99
107
|
/>
|
|
100
108
|
</View>
|
|
@@ -102,7 +110,7 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
102
110
|
<View style={styles.leftContainer}>
|
|
103
111
|
<Button
|
|
104
112
|
style={styles.menuButton}
|
|
105
|
-
color=
|
|
113
|
+
color={theme.text}
|
|
106
114
|
unstyled
|
|
107
115
|
EndIcon={<BurgerMenuIcon color={getIconColor(config)} />}
|
|
108
116
|
onPress={handleHeaderChatMenu}
|
|
@@ -152,7 +160,7 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
152
160
|
<ProfileImagePlaceholder
|
|
153
161
|
name={currentRoom?.title || currentRoom?.name}
|
|
154
162
|
size={40}
|
|
155
|
-
icon={currentRoom?.icon}
|
|
163
|
+
icon={appendFileToken(currentRoom?.icon, fileToken)}
|
|
156
164
|
active={!config?.disableChatInfo?.disableChatHeaderMenu}
|
|
157
165
|
click={
|
|
158
166
|
config?.disableChatInfo?.disableChatHeaderMenu
|
|
@@ -174,7 +182,11 @@ const ChatHeader: React.FC<ChatHeaderProps> = ({
|
|
|
174
182
|
<Composing usersTyping={currentRoom?.composingList} />
|
|
175
183
|
) : config?.disableUserCount ? undefined : (
|
|
176
184
|
<ChatContainerHeaderLabel
|
|
177
|
-
style={[
|
|
185
|
+
style={[
|
|
186
|
+
styles.subLabel,
|
|
187
|
+
{ color: theme.textSecondary },
|
|
188
|
+
getElementFont(config, 'headerSubtitle'),
|
|
189
|
+
]}
|
|
178
190
|
>
|
|
179
191
|
<Text>
|
|
180
192
|
{t(
|
|
@@ -6,10 +6,12 @@ import { useDispatch } from 'react-redux';
|
|
|
6
6
|
import MessageList from './MessageList';
|
|
7
7
|
import SendInput from '../styled/SendInput';
|
|
8
8
|
import {
|
|
9
|
+
clearReadBoundary,
|
|
9
10
|
clearVisibleRoom,
|
|
10
11
|
deleteRoomMessage,
|
|
11
12
|
setEditAction,
|
|
12
13
|
setLastViewedTimestamp,
|
|
14
|
+
setReadBoundary,
|
|
13
15
|
setVisibleRoom,
|
|
14
16
|
} from '../../roomStore/roomsSlice';
|
|
15
17
|
import Loader from '../styled/Loader';
|
|
@@ -20,6 +22,7 @@ import NewChatModal from '../Modals/NewChatModal/NewChatModal';
|
|
|
20
22
|
import { EditWrapper } from './EditWrapper';
|
|
21
23
|
import { EmptyChatIllustration } from '../../assets/EmptyChatIllustration';
|
|
22
24
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
25
|
+
import { getChatBackgroundColor } from '../../helpers/getChatBackground';
|
|
23
26
|
import { ChooseChatMessage } from './ChooseChatMessage';
|
|
24
27
|
import { useRoomUrl } from '../../hooks/useRoomUrl';
|
|
25
28
|
import { useSendMessage } from '../../hooks/useSendMessage';
|
|
@@ -27,10 +30,15 @@ import { IConfig } from '../../types/models/config.model';
|
|
|
27
30
|
import { useRoomInitialization } from '../../hooks/useRoomInitialization';
|
|
28
31
|
import { useRoomState } from '../../hooks/useRoomState';
|
|
29
32
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
33
|
+
import { useTheme } from '../../hooks/useTheme';
|
|
34
|
+
import { isOwnMessage } from '../../helpers/isOwnMessage';
|
|
30
35
|
import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
|
|
31
36
|
// import {PanGestureHandler} from 'react-native-gesture-handler';
|
|
32
37
|
import { FlatList } from 'react-native';
|
|
33
38
|
import {
|
|
39
|
+
AppState,
|
|
40
|
+
AppStateStatus,
|
|
41
|
+
Keyboard,
|
|
34
42
|
Platform,
|
|
35
43
|
TouchableWithoutFeedback,
|
|
36
44
|
View,
|
|
@@ -42,6 +50,10 @@ import {
|
|
|
42
50
|
} from 'react-native-keyboard-controller';
|
|
43
51
|
import useComposing from '../../hooks/useComposing';
|
|
44
52
|
import { store } from '../../roomStore';
|
|
53
|
+
import {
|
|
54
|
+
getFlushBoundaryTs,
|
|
55
|
+
getReadMarkerTimestamp,
|
|
56
|
+
} from '../../helpers/getServerReadTimestamp';
|
|
45
57
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
46
58
|
import {
|
|
47
59
|
getInputDockPaddingBottom,
|
|
@@ -71,6 +83,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
71
83
|
const { client } = useXmppClient();
|
|
72
84
|
const dispatch = useDispatch();
|
|
73
85
|
const insets = useSafeAreaInsets();
|
|
86
|
+
const theme = useTheme();
|
|
74
87
|
|
|
75
88
|
const [isLoadingMore, setIsLoadingMore] = useState<boolean>(false);
|
|
76
89
|
|
|
@@ -106,6 +119,45 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
106
119
|
configWithEventHandlers || storeConfig,
|
|
107
120
|
);
|
|
108
121
|
|
|
122
|
+
// Under the sticky keyboard strategy, the input dock's position is
|
|
123
|
+
// driven by KeyboardStickyView's native-animated offset. If the app
|
|
124
|
+
// is backgrounded while the keyboard-close animation hasn't finished,
|
|
125
|
+
// the OS removes the keyboard from the app-switcher snapshot but the
|
|
126
|
+
// shared value hasn't caught up to "closed" yet, so the input appears
|
|
127
|
+
// to float in that preview.
|
|
128
|
+
//
|
|
129
|
+
// NOTE on what this does and doesn't fix: iOS actually captures that
|
|
130
|
+
// preview during the active→inactive transition, BEFORE 'background'
|
|
131
|
+
// fires — so dismissing here on 'background' lands too late to affect
|
|
132
|
+
// the snapshot already taken, and is effectively a no-op for the exact
|
|
133
|
+
// iOS symptom in bug #37. An earlier version keyed this off 'inactive'
|
|
134
|
+
// instead, which does land in time, but 'inactive' also fires for
|
|
135
|
+
// Control Center, share sheets, and permission prompts — none of which
|
|
136
|
+
// should close the user's keyboard — so that traded a rare cosmetic
|
|
137
|
+
// preview glitch for a much more common false dismissal. Kept on
|
|
138
|
+
// 'background': it still resets the offset for genuine backgrounding
|
|
139
|
+
// (home button, app switch) and for Android's recents preview (RN's
|
|
140
|
+
// AppState has no 'inactive' there), at the cost of leaving the iOS
|
|
141
|
+
// switcher-preview glitch itself unresolved. Both symptoms are cosmetic
|
|
142
|
+
// per the QA report, which explicitly accepted leaving this imperfect
|
|
143
|
+
// rather than risk destabilizing the sticky strategy. Sticky-only;
|
|
144
|
+
// doesn't touch the other keyboard strategies.
|
|
145
|
+
const stickyInputEnabled =
|
|
146
|
+
!configWithEventHandlers?.disableKeyboardAvoidingView &&
|
|
147
|
+
!!configWithEventHandlers?.keyboardStickyInput;
|
|
148
|
+
useEffect(() => {
|
|
149
|
+
if (!stickyInputEnabled) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const onAppStateChange = (nextState: AppStateStatus) => {
|
|
153
|
+
if (nextState === 'background') {
|
|
154
|
+
Keyboard.dismiss();
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const subscription = AppState.addEventListener('change', onAppStateChange);
|
|
158
|
+
return () => subscription.remove();
|
|
159
|
+
}, [stickyInputEnabled]);
|
|
160
|
+
|
|
109
161
|
const sendMessage = useCallback(
|
|
110
162
|
(message: string) => {
|
|
111
163
|
if (!activeRoomJID) {
|
|
@@ -170,31 +222,103 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
170
222
|
clientRef.current = client;
|
|
171
223
|
}, [client]);
|
|
172
224
|
|
|
225
|
+
// Tracks what the user actually saw: `null` while they're at the
|
|
226
|
+
// bottom (safe to mark everything read), or the timestamp of the
|
|
227
|
+
// newest message visible when they scrolled away from it. Reported
|
|
228
|
+
// by MessageList via onReadBoundaryChange, and mirrored into redux
|
|
229
|
+
// (`rooms.readBoundaries`) rather than kept only in a local ref - it
|
|
230
|
+
// is the single source of truth every "leaving this room" path
|
|
231
|
+
// consults (xmppProvider's AppState background handler, its
|
|
232
|
+
// `isVisible=false` handler, the live `advance()` effect, and
|
|
233
|
+
// `useChatRoomFocus`'s `leaveRoom`), not just this component's own
|
|
234
|
+
// unmount cleanup below. Without a boundary, leaving a room (or
|
|
235
|
+
// backgrounding) while scrolled up stamped `now()` (bug #33) or,
|
|
236
|
+
// after the #38 fix, the newest acked message regardless of scroll
|
|
237
|
+
// position (bug #42) - both silently discard genuinely-unread
|
|
238
|
+
// messages.
|
|
239
|
+
//
|
|
240
|
+
// MessageList reports the boundary from onScroll, which fires on
|
|
241
|
+
// every frame of a drag (the "back at the bottom" branch re-reports
|
|
242
|
+
// `null` each time). Mirror only actual CHANGES into redux: an
|
|
243
|
+
// unconditional dispatch per scroll frame would run the whole
|
|
244
|
+
// middleware chain and, worse, reset persistenceMiddleware's 200 ms
|
|
245
|
+
// debounce on every frame, starving the persisted write for as long
|
|
246
|
+
// as the user keeps scrolling.
|
|
247
|
+
const lastBoundarySentRef = useRef<number | null>(null);
|
|
248
|
+
const handleReadBoundaryChange = useCallback((boundaryTs: number | null) => {
|
|
249
|
+
if (!activeRoomJID) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const next = boundaryTs && boundaryTs > 0 ? boundaryTs : null;
|
|
253
|
+
if (lastBoundarySentRef.current === next) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
lastBoundarySentRef.current = next;
|
|
257
|
+
dispatch(setReadBoundary({ jid: activeRoomJID, ts: next }));
|
|
258
|
+
}, [activeRoomJID, dispatch]);
|
|
259
|
+
|
|
173
260
|
useEffect(() => {
|
|
174
261
|
if (!activeRoomJID) {
|
|
175
262
|
return;
|
|
176
263
|
}
|
|
177
264
|
|
|
265
|
+
lastBoundarySentRef.current = null;
|
|
266
|
+
dispatch(setReadBoundary({ jid: activeRoomJID, ts: null }));
|
|
178
267
|
dispatch(setVisibleRoom({ roomJID: activeRoomJID }));
|
|
179
268
|
setIsLoadingMore(false);
|
|
180
269
|
return () => {
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
270
|
+
const state = store.getState();
|
|
271
|
+
const rooms = state.rooms?.rooms;
|
|
272
|
+
const heapState = state.roomHeapSlice;
|
|
273
|
+
const boundaryTs = state.rooms?.readBoundaries?.[activeRoomJID] ?? null;
|
|
274
|
+
// getReadMarkerTimestamp honours the boundary (the newest message
|
|
275
|
+
// the user actually reached) when one is set, and otherwise falls
|
|
276
|
+
// back to the newest server-acked message - never the device
|
|
277
|
+
// clock: a fast device clock would write a future marker that the
|
|
278
|
+
// forward-only private-store merge could never correct (bug #38).
|
|
279
|
+
const timestamp = getReadMarkerTimestamp(
|
|
280
|
+
rooms?.[activeRoomJID],
|
|
281
|
+
heapState,
|
|
282
|
+
boundaryTs,
|
|
187
283
|
);
|
|
284
|
+
if (timestamp > 0) {
|
|
285
|
+
dispatch(
|
|
286
|
+
setLastViewedTimestamp({
|
|
287
|
+
chatJID: activeRoomJID,
|
|
288
|
+
timestamp,
|
|
289
|
+
}),
|
|
290
|
+
);
|
|
291
|
+
}
|
|
188
292
|
dispatch(clearVisibleRoom());
|
|
189
293
|
const liveClient = clientRef.current;
|
|
190
294
|
if (liveClient) {
|
|
191
295
|
liveClient
|
|
192
|
-
.flushLastViewedToPrivateStoreStanza(
|
|
296
|
+
.flushLastViewedToPrivateStoreStanza(rooms, {
|
|
193
297
|
visibleRoomJID: activeRoomJID,
|
|
298
|
+
// Carry the same boundary to the SERVER marker. Without
|
|
299
|
+
// this the flush defaults to "everything" for the visible
|
|
300
|
+
// room, so messages the user never scrolled down to come
|
|
301
|
+
// back as read on the next login - the local count was
|
|
302
|
+
// right but the server overrode it.
|
|
303
|
+
// Clamped through the same helper as the local stamp -
|
|
304
|
+
// an unclamped boundary would bypass the newest-acked
|
|
305
|
+
// ceiling on the one path where a bad value is permanent
|
|
306
|
+
// (the private-store merge is forward-only, bug #38).
|
|
307
|
+
visibleRoomTs: getFlushBoundaryTs(
|
|
308
|
+
rooms?.[activeRoomJID],
|
|
309
|
+
heapState,
|
|
310
|
+
boundaryTs,
|
|
311
|
+
),
|
|
194
312
|
})
|
|
195
313
|
.catch(() => {});
|
|
196
314
|
}
|
|
197
315
|
dispatch(deleteRoomMessage({ roomJID: activeRoomJID, messageId: 'delimiter-new' }));
|
|
316
|
+
// The room is genuinely being left (unmount, or activeRoomJID
|
|
317
|
+
// changed to a different room) - release the boundary now that
|
|
318
|
+
// it's been consumed, so a stale value can't leak into the next
|
|
319
|
+
// time this room becomes visible.
|
|
320
|
+
dispatch(clearReadBoundary({ jid: activeRoomJID }));
|
|
321
|
+
lastBoundarySentRef.current = null;
|
|
198
322
|
setIsLoadingMore(false);
|
|
199
323
|
};
|
|
200
324
|
}, [activeRoomJID, dispatch]);
|
|
@@ -230,6 +354,8 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
230
354
|
const inputDockPaddingBottom = getInputDockPaddingBottom({
|
|
231
355
|
platform: Platform.OS,
|
|
232
356
|
bottomInset: insets.bottom,
|
|
357
|
+
configuredPadding: configWithEventHandlers?.inputDockPaddingBottom,
|
|
358
|
+
hostOwnsLayout: !!configWithEventHandlers?.disableKeyboardAvoidingView,
|
|
233
359
|
});
|
|
234
360
|
|
|
235
361
|
// Keyboard avoidance is delegated to react-native-keyboard-controller's
|
|
@@ -279,7 +405,20 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
279
405
|
? KeyboardStickyView
|
|
280
406
|
: View;
|
|
281
407
|
const inputDockProps: any = {
|
|
282
|
-
|
|
408
|
+
// The dock carries the composer's white surface all the way to the
|
|
409
|
+
// bottom edge, so it needs the same rounded top and upward shadow —
|
|
410
|
+
// a square white block behind a rounded composer just hid the corners.
|
|
411
|
+
style: {
|
|
412
|
+
paddingBottom: inputDockPaddingBottom,
|
|
413
|
+
backgroundColor: theme.surface,
|
|
414
|
+
borderTopLeftRadius: 20,
|
|
415
|
+
borderTopRightRadius: 20,
|
|
416
|
+
shadowColor: theme.shadow,
|
|
417
|
+
shadowOffset: { width: 0, height: -4 },
|
|
418
|
+
shadowOpacity: 0.06,
|
|
419
|
+
shadowRadius: 12,
|
|
420
|
+
elevation: 8,
|
|
421
|
+
},
|
|
283
422
|
...(stickyInput
|
|
284
423
|
? { offset: { closed: 0, opened: keyboardVerticalOffset } }
|
|
285
424
|
: {}),
|
|
@@ -288,11 +427,15 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
288
427
|
return (
|
|
289
428
|
<KeyboardWrapper {...keyboardWrapperProps}>
|
|
290
429
|
<ChatContainer
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
430
|
+
// The conversation's own colour, not white: the header's rounded
|
|
431
|
+
// bottom corners and the composer's rounded top corners reveal
|
|
432
|
+
// THIS view, so a white parent made both look square.
|
|
433
|
+
style={[
|
|
434
|
+
{ backgroundColor: getChatBackgroundColor(configWithEventHandlers) },
|
|
435
|
+
configWithEventHandlers?.chatRoomStyles as
|
|
436
|
+
| import('react-native').ViewStyle
|
|
437
|
+
| undefined,
|
|
438
|
+
]}
|
|
296
439
|
>
|
|
297
440
|
{!configWithEventHandlers?.disableHeader && (
|
|
298
441
|
<ChatHeader
|
|
@@ -323,6 +466,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
323
466
|
>
|
|
324
467
|
<EmptyChatIllustration
|
|
325
468
|
color={getIconColor(configWithEventHandlers)}
|
|
469
|
+
panelColor={theme.dark ? theme.surfaceSecondary : undefined}
|
|
326
470
|
/>
|
|
327
471
|
</View>
|
|
328
472
|
) : !roomMessages || roomMessages.length === 0 ? (
|
|
@@ -331,7 +475,11 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
331
475
|
flex: 1,
|
|
332
476
|
justifyContent: 'center',
|
|
333
477
|
alignItems: 'center',
|
|
334
|
-
|
|
478
|
+
// Empty rooms used to flip to white, which broke the
|
|
479
|
+
// header's rounded corners in exactly the same way.
|
|
480
|
+
backgroundColor: getChatBackgroundColor(
|
|
481
|
+
configWithEventHandlers
|
|
482
|
+
),
|
|
335
483
|
}}
|
|
336
484
|
>
|
|
337
485
|
<NoMessagesPlaceholder />
|
|
@@ -357,7 +505,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
357
505
|
CustomMessageComponent ? (
|
|
358
506
|
<CustomMessageComponent
|
|
359
507
|
message={decorated.message}
|
|
360
|
-
isUser={decorated.message
|
|
508
|
+
isUser={isOwnMessage(decorated.message, user)}
|
|
361
509
|
isReply={false}
|
|
362
510
|
/>
|
|
363
511
|
) : null
|
|
@@ -404,6 +552,7 @@ const ChatRoom: React.FC<ChatRoomProps> = React.memo(
|
|
|
404
552
|
config={configWithEventHandlers}
|
|
405
553
|
loading={isLoadingMore}
|
|
406
554
|
isReply={false}
|
|
555
|
+
onReadBoundaryChange={handleReadBoundaryChange}
|
|
407
556
|
/>
|
|
408
557
|
)}
|
|
409
558
|
</View>
|