@ethora/chat-component-rn 26.7.9 → 26.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -93
- package/README.md +10 -33
- package/lib/commonjs/assets/icons.js +2 -7
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +4 -4
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +13 -101
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +1 -2
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +10 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +9 -37
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +17 -86
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +3 -9
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +61 -119
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +54 -128
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
- package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/commonjs/helpers/getDataFromXml.js +24 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +8 -14
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/commonjs/helpers/mimeToExtension.js +14 -6
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/resolveLangSource.js +38 -0
- package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
- package/lib/commonjs/helpers/xmppUsername.js +39 -0
- package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +8 -17
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +0 -27
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +7 -15
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +11 -8
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +14 -50
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +133 -121
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/i18n/useT.js +1 -1
- package/lib/commonjs/main.js +0 -44
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/user.api.js +9 -68
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +112 -62
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +51 -93
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +8 -124
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +2 -35
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +39 -226
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +8 -87
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +13 -15
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +3 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/assets/icons.js +1 -6
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +4 -4
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +7 -26
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +3 -9
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +14 -102
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +10 -30
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +1 -5
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +5 -13
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +35 -207
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +1 -9
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +2 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +1 -2
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +10 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +9 -37
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +3 -1
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +18 -87
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +3 -9
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +4 -14
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +62 -120
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +55 -128
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +1 -19
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/ensureScopedChatCache.js +2 -2
- package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/module/helpers/getDataFromXml.js +23 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +3 -66
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +8 -14
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/module/helpers/mimeToExtension.js +13 -6
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/resolveLangSource.js +32 -0
- package/lib/module/helpers/resolveLangSource.js.map +1 -0
- package/lib/module/helpers/xmppUsername.js +35 -0
- package/lib/module/helpers/xmppUsername.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +8 -17
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +14 -32
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +1 -28
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useLogout.js +7 -15
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +11 -8
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +16 -52
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +133 -121
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/i18n/useT.js +1 -1
- package/lib/module/main.js +2 -14
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +59 -131
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +9 -9
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/networking/api-requests/user.api.js +7 -64
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +113 -61
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +52 -94
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +8 -124
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +7 -26
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +4 -37
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +38 -223
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +7 -86
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +13 -15
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +3 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +0 -16
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
- package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
- package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
- package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
- package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
- package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/i18n/useT.d.ts +1 -1
- package/lib/typescript/main.d.ts +2 -9
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +6 -12
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +0 -14
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts +1 -18
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +1 -14
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +5 -49
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +29 -41
- package/src/assets/icons.tsx +9 -48
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +6 -24
- package/src/components/MainComponents/ChatHeader.tsx +3 -9
- package/src/components/MainComponents/ChatRoom.tsx +16 -111
- package/src/components/MainComponents/ChatWrapper.tsx +53 -36
- package/src/components/MainComponents/LoginWrapper.tsx +0 -1
- package/src/components/MainComponents/MediaMessage.tsx +8 -26
- package/src/components/MainComponents/MessageContainer.tsx +1 -5
- package/src/components/MainComponents/MessageList.tsx +4 -23
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
- package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
- package/src/components/MainComponents/RoomList.tsx +39 -236
- package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
- package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
- package/src/components/Modals/Modal/Modal.tsx +0 -7
- package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
- package/src/components/Modals/styledModalComponents.tsx +2 -9
- package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
- package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
- package/src/components/styled/AudioMessage.tsx +1 -2
- package/src/components/styled/DateLabel.tsx +10 -3
- package/src/components/styled/MessageImage.tsx +7 -53
- package/src/components/styled/NewMessageLabel.tsx +3 -1
- package/src/components/styled/SendInput.tsx +18 -91
- package/src/components/styled/StyledComponents.ts +3 -9
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
- package/src/components/styled/UnsupportedType.tsx +4 -14
- package/src/components/styled/VideoMessage.tsx +54 -131
- package/src/context/xmppProvider.tsx +51 -134
- package/src/helpers/createMessageFromXml.ts +1 -20
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getDataFromXml.ts +25 -1
- package/src/helpers/historyPreloadScheduler.ts +3 -80
- package/src/helpers/initXmppRooms.tsx +10 -14
- package/src/helpers/insertMessageWithDelimiter.ts +13 -0
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/mimeToExtension.ts +22 -6
- package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
- package/src/helpers/resolveLangSource.ts +40 -0
- package/src/helpers/xmppUsername.ts +38 -0
- package/src/hooks/useChatRoomFocus.ts +5 -14
- package/src/hooks/useChatWrapperInit.ts +16 -32
- package/src/hooks/useComposing.tsx +1 -37
- package/src/hooks/useLogout.tsx +9 -15
- package/src/hooks/usePendingNotification.ts +11 -5
- package/src/hooks/useSendMessage.tsx +15 -60
- package/src/hooks/useUnreadMessagesCounter.ts +0 -11
- package/src/i18n/strings.ts +133 -121
- package/src/i18n/useT.ts +1 -1
- package/src/main.ts +2 -26
- package/src/networking/api-requests/auth.api.ts +48 -156
- package/src/networking/api-requests/roomMembers.api.ts +1 -1
- package/src/networking/api-requests/rooms.api.ts +9 -9
- package/src/networking/api-requests/user.api.ts +7 -79
- package/src/networking/apiClient.ts +123 -68
- package/src/networking/stanzaHandlers.ts +51 -92
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
- package/src/networking/xmppClient.ts +9 -141
- package/src/roomStore/chatSettingsSlice.ts +10 -34
- package/src/roomStore/index.ts +4 -40
- package/src/roomStore/persistence.ts +40 -234
- package/src/roomStore/roomsSlice.ts +7 -87
- package/src/services/pushSubscriptionService.ts +13 -18
- package/src/types/types.ts +5 -58
- package/src/version.ts +3 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/commonjs/helpers/getChatBackground.js +0 -23
- package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
- package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
- package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
- package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -125
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/commonjs/helpers/isOwnMessage.js +0 -75
- package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/commonjs/helpers/persistCrypto.js +0 -122
- package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
- package/lib/commonjs/helpers/pickImageAsset.js +0 -68
- package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
- package/lib/commonjs/helpers/pushPayload.js +0 -71
- package/lib/commonjs/helpers/pushPayload.js.map +0 -1
- package/lib/commonjs/helpers/secureFileUrl.js +0 -101
- package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
- package/lib/commonjs/helpers/secureKeyValue.js +0 -83
- package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
- package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/commonjs/helpers/secureUserStorage.js +0 -75
- package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
- package/lib/commonjs/helpers/shallowEqual.js +0 -36
- package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
- package/lib/commonjs/helpers/sheetGestures.js +0 -32
- package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
- package/lib/commonjs/hooks/useFileToken.js +0 -10
- package/lib/commonjs/hooks/useFileToken.js.map +0 -1
- package/lib/commonjs/networking/authRefresh.js +0 -332
- package/lib/commonjs/networking/authRefresh.js.map +0 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/module/helpers/getChatBackground.js +0 -18
- package/lib/module/helpers/getChatBackground.js.map +0 -1
- package/lib/module/helpers/getDisplayFileName.js +0 -73
- package/lib/module/helpers/getDisplayFileName.js.map +0 -1
- package/lib/module/helpers/getServerReadTimestamp.js +0 -120
- package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/module/helpers/isOwnMessage.js +0 -70
- package/lib/module/helpers/isOwnMessage.js.map +0 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
- package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/module/helpers/persistCrypto.js +0 -115
- package/lib/module/helpers/persistCrypto.js.map +0 -1
- package/lib/module/helpers/pickImageAsset.js +0 -63
- package/lib/module/helpers/pickImageAsset.js.map +0 -1
- package/lib/module/helpers/pushPayload.js +0 -63
- package/lib/module/helpers/pushPayload.js.map +0 -1
- package/lib/module/helpers/secureFileUrl.js +0 -91
- package/lib/module/helpers/secureFileUrl.js.map +0 -1
- package/lib/module/helpers/secureKeyValue.js +0 -75
- package/lib/module/helpers/secureKeyValue.js.map +0 -1
- package/lib/module/helpers/secureStoreRuntime.js +0 -52
- package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/module/helpers/secureUserStorage.js +0 -72
- package/lib/module/helpers/secureUserStorage.js.map +0 -1
- package/lib/module/helpers/shallowEqual.js +0 -31
- package/lib/module/helpers/shallowEqual.js.map +0 -1
- package/lib/module/helpers/sheetGestures.js +0 -26
- package/lib/module/helpers/sheetGestures.js.map +0 -1
- package/lib/module/hooks/useFileToken.js +0 -5
- package/lib/module/hooks/useFileToken.js.map +0 -1
- package/lib/module/networking/authRefresh.js +0 -321
- package/lib/module/networking/authRefresh.js.map +0 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
- package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
- package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -69
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
- package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
- package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
- package/lib/typescript/helpers/pushPayload.d.ts +0 -7
- package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
- package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
- package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
- package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
- package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
- package/lib/typescript/hooks/useFileToken.d.ts +0 -2
- package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
- package/lib/typescript/networking/authRefresh.d.ts +0 -95
- package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
- package/src/helpers/getChatBackground.ts +0 -18
- package/src/helpers/getDisplayFileName.ts +0 -87
- package/src/helpers/getServerReadTimestamp.ts +0 -120
- package/src/helpers/isOwnMessage.ts +0 -90
- package/src/helpers/mediaLibraryRuntime.ts +0 -25
- package/src/helpers/persistCrypto.ts +0 -127
- package/src/helpers/pickImageAsset.ts +0 -68
- package/src/helpers/pushPayload.ts +0 -62
- package/src/helpers/secureFileUrl.ts +0 -103
- package/src/helpers/secureKeyValue.ts +0 -80
- package/src/helpers/secureStoreRuntime.ts +0 -62
- package/src/helpers/secureUserStorage.ts +0 -80
- package/src/helpers/shallowEqual.ts +0 -33
- package/src/helpers/sheetGestures.ts +0 -25
- package/src/hooks/useFileToken.ts +0 -7
- package/src/networking/authRefresh.ts +0 -451
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import styled from 'styled-components/native';
|
|
3
3
|
import { Line } from './StyledComponents';
|
|
4
|
+
import { useT } from '../../i18n/useT';
|
|
4
5
|
|
|
5
6
|
const Container = styled.View`
|
|
6
7
|
flex-direction: row;
|
|
@@ -39,11 +40,12 @@ interface NewMessageLabelProps {
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
const NewMessageLabel: React.FC<NewMessageLabelProps> = () => {
|
|
43
|
+
const t = useT();
|
|
42
44
|
return (
|
|
43
45
|
<Container>
|
|
44
46
|
<Line />
|
|
45
47
|
<StyledLabel>
|
|
46
|
-
<StyledLabelText>
|
|
48
|
+
<StyledLabelText>{t('message.newMessages')}</StyledLabelText>
|
|
47
49
|
</StyledLabel>
|
|
48
50
|
<Line />
|
|
49
51
|
</Container>
|
|
@@ -10,16 +10,14 @@ import { IConfig, MediaFile } from '../../types/types';
|
|
|
10
10
|
import Button from './Button';
|
|
11
11
|
import { SendIcon, AttachIcon, RecordIcon } from '../../assets/icons';
|
|
12
12
|
import { KeyboardAvoidingView, Platform, View, Text, TouchableOpacity, Alert, Linking } from 'react-native';
|
|
13
|
-
import AttachSheet
|
|
13
|
+
import AttachSheet from '../Modals/AttachSheet/AttachSheet';
|
|
14
14
|
import { MediaFilePreview } from './MediaFilePreview';
|
|
15
15
|
import { getIconColor } from '../../helpers/getIconColor';
|
|
16
16
|
import { getElementFont } from '../../helpers/getElementFont';
|
|
17
17
|
import { useT } from '../../i18n/useT';
|
|
18
|
-
import { getMediaLibrary } from '../../helpers/mediaLibraryRuntime';
|
|
19
18
|
import * as ImagePicker from 'expo-image-picker';
|
|
20
19
|
import * as DocumentPicker from 'expo-document-picker';
|
|
21
20
|
import * as ImageManipulator from 'expo-image-manipulator';
|
|
22
|
-
import * as FileSystem from 'expo-file-system/legacy';
|
|
23
21
|
// expo-audio replaces the discontinued expo-av: `useAudioRecorder` owns a
|
|
24
22
|
// single reusable recorder for this input's lifetime (prepare → record →
|
|
25
23
|
// stop → prepare again), and the module-level helpers cover permissions
|
|
@@ -171,16 +169,16 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
171
169
|
// rolled check/request flow.
|
|
172
170
|
|
|
173
171
|
const promptOpenSettings = (message: string) => {
|
|
174
|
-
Alert.alert('
|
|
175
|
-
{ text: '
|
|
176
|
-
{ text: '
|
|
172
|
+
Alert.alert(t('permission.requiredTitle'), message, [
|
|
173
|
+
{ text: t('action.cancel'), style: 'cancel' },
|
|
174
|
+
{ text: t('action.openSettings'), onPress: () => Linking.openSettings() },
|
|
177
175
|
]);
|
|
178
176
|
};
|
|
179
177
|
|
|
180
178
|
const handleCameraSelection = async () => {
|
|
181
179
|
const perm = await ImagePicker.requestCameraPermissionsAsync();
|
|
182
180
|
if (!perm.granted) {
|
|
183
|
-
promptOpenSettings('
|
|
181
|
+
promptOpenSettings(t('permission.camera'));
|
|
184
182
|
return;
|
|
185
183
|
}
|
|
186
184
|
|
|
@@ -220,7 +218,7 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
220
218
|
const handleGallerySelection = async () => {
|
|
221
219
|
const perm = await ImagePicker.requestMediaLibraryPermissionsAsync();
|
|
222
220
|
if (!perm.granted) {
|
|
223
|
-
promptOpenSettings('
|
|
221
|
+
promptOpenSettings(t('permission.gallery'));
|
|
224
222
|
return;
|
|
225
223
|
}
|
|
226
224
|
|
|
@@ -261,59 +259,22 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
261
259
|
}
|
|
262
260
|
};
|
|
263
261
|
|
|
264
|
-
// A tap on a thumbnail in the attach sheet's recents strip. The sheet
|
|
265
|
-
// already resolved the asset to a real on-disk uri (iOS `ph://` ids are
|
|
266
|
-
// not uploadable); here we apply the same treatment the full-blown
|
|
267
|
-
// pickers get — HEIC→JPEG for images, and a size probe so the 50 MB cap
|
|
268
|
-
// is enforced before anything hits the network.
|
|
269
|
-
const handleRecentMediaSelection = async (media: PickedMedia) => {
|
|
270
|
-
try {
|
|
271
|
-
let size: number | undefined;
|
|
272
|
-
try {
|
|
273
|
-
const info = await FileSystem.getInfoAsync(media.uri);
|
|
274
|
-
if (info.exists && typeof (info as any).size === 'number') {
|
|
275
|
-
size = (info as any).size;
|
|
276
|
-
}
|
|
277
|
-
} catch {
|
|
278
|
-
// Size is a nice-to-have; the backend still rejects oversized bodies.
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if (media.isVideo) {
|
|
282
|
-
handleFileSelect([
|
|
283
|
-
{
|
|
284
|
-
uri: media.uri,
|
|
285
|
-
type: media.mimeType || 'video/mp4',
|
|
286
|
-
name: media.name,
|
|
287
|
-
size,
|
|
288
|
-
},
|
|
289
|
-
]);
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
const normalized = await normalizeImageAsset({
|
|
294
|
-
uri: media.uri,
|
|
295
|
-
mimeType: media.mimeType,
|
|
296
|
-
fileName: media.name,
|
|
297
|
-
} as ImagePicker.ImagePickerAsset);
|
|
298
|
-
handleFileSelect([
|
|
299
|
-
{
|
|
300
|
-
uri: normalized.uri,
|
|
301
|
-
type: normalized.mime,
|
|
302
|
-
name: normalized.name,
|
|
303
|
-
size,
|
|
304
|
-
},
|
|
305
|
-
]);
|
|
306
|
-
} catch (error) {
|
|
307
|
-
console.error('Recent media error:', error);
|
|
308
|
-
}
|
|
309
|
-
};
|
|
310
|
-
|
|
311
262
|
const handleFileSelection = async () => {
|
|
312
263
|
// Drop overlapping invocations — a second getDocumentAsync while the
|
|
313
264
|
// first is still presented throws PickingInProgressException on iOS.
|
|
314
265
|
if (pickingDocRef.current) {return;}
|
|
315
266
|
pickingDocRef.current = true;
|
|
316
267
|
try {
|
|
268
|
+
// Let the attach-sheet's modal finish its NATIVE dismissal before we
|
|
269
|
+
// present the picker. The sheet fires this handler right after its
|
|
270
|
+
// slide-out animation, but the underlying RN Modal view-controller
|
|
271
|
+
// dismissal is async — presenting the document picker over a still-
|
|
272
|
+
// dismissing modal makes iOS tear it down without a cancel callback,
|
|
273
|
+
// which strands expo-document-picker's pickingContext and makes every
|
|
274
|
+
// subsequent open throw "Different document picking in progress".
|
|
275
|
+
if (Platform.OS === 'ios') {
|
|
276
|
+
await new Promise((resolve) => setTimeout(resolve, 350));
|
|
277
|
+
}
|
|
317
278
|
const result = await DocumentPicker.getDocumentAsync({
|
|
318
279
|
type: '*/*',
|
|
319
280
|
multiple: false,
|
|
@@ -336,39 +297,8 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
336
297
|
}
|
|
337
298
|
};
|
|
338
299
|
|
|
339
|
-
// Photo-library access is requested HERE, not inside the sheet: iOS
|
|
340
|
-
// cannot present the permission alert while an RN <Modal> owns the
|
|
341
|
-
// screen (the same UIKit limitation that used to swallow the pickers),
|
|
342
|
-
// so asking from inside resolved to a silent "denied" and the recents
|
|
343
|
-
// strip stayed empty forever. Asking on the paperclip tap puts the
|
|
344
|
-
// system alert over the plain chat screen, where it can actually show.
|
|
345
|
-
// Only the first tap ever waits on it — afterwards the status is
|
|
346
|
-
// already determined and `getPermissionsAsync` returns immediately.
|
|
347
|
-
const ensureLibraryPermission = async () => {
|
|
348
|
-
const MediaLibrary = getMediaLibrary();
|
|
349
|
-
if (!MediaLibrary?.getPermissionsAsync) {return;}
|
|
350
|
-
try {
|
|
351
|
-
const perm = await MediaLibrary.getPermissionsAsync();
|
|
352
|
-
if (perm?.granted || perm?.canAskAgain === false) {return;}
|
|
353
|
-
await MediaLibrary.requestPermissionsAsync();
|
|
354
|
-
} catch (err) {
|
|
355
|
-
// Optional peer / unsupported platform: the sheet just shows the
|
|
356
|
-
// camera tile and the full-library route.
|
|
357
|
-
console.warn('Media library permission check failed:', err);
|
|
358
|
-
}
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
// Only the very first tap of a session goes through the permission
|
|
362
|
-
// check; afterwards the sheet opens with zero added latency.
|
|
363
|
-
const libraryPermissionCheckedRef = useRef(false);
|
|
364
|
-
|
|
365
300
|
const handleAttachPress = () => {
|
|
366
|
-
|
|
367
|
-
setShowMediaMenu(true);
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
libraryPermissionCheckedRef.current = true;
|
|
371
|
-
ensureLibraryPermission().finally(() => setShowMediaMenu(true));
|
|
301
|
+
setShowMediaMenu(true);
|
|
372
302
|
};
|
|
373
303
|
|
|
374
304
|
// ─── Voice recording ──────────────────────────────────────────────
|
|
@@ -405,9 +335,7 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
405
335
|
try {
|
|
406
336
|
const perm = await requestRecordingPermissionsAsync();
|
|
407
337
|
if (!perm.granted) {
|
|
408
|
-
promptOpenSettings(
|
|
409
|
-
'Microphone permission is needed to record voice messages.'
|
|
410
|
-
);
|
|
338
|
+
promptOpenSettings(t('permission.microphone'));
|
|
411
339
|
return;
|
|
412
340
|
}
|
|
413
341
|
// `allowsRecording` is not just an iOS session flag: expo-audio's
|
|
@@ -772,7 +700,6 @@ const SendInput: React.FC<SendInputProps> = ({
|
|
|
772
700
|
onCamera={handleCameraSelection}
|
|
773
701
|
onGallery={handleGallerySelection}
|
|
774
702
|
onDocument={handleFileSelection}
|
|
775
|
-
onPickMedia={handleRecentMediaSelection}
|
|
776
703
|
primaryColor={getIconColor(config)}
|
|
777
704
|
/>
|
|
778
705
|
</InputContainer>
|
|
@@ -28,15 +28,9 @@ export const ChatContainerHeader = styled.View`
|
|
|
28
28
|
background-color: #ffffff;
|
|
29
29
|
align-items: center;
|
|
30
30
|
justify-content: space-between;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
border-
|
|
34
|
-
border-bottom-right-radius: 20px;
|
|
35
|
-
shadow-color: #101828;
|
|
36
|
-
shadow-offset: 0px 4px;
|
|
37
|
-
shadow-opacity: 0.06;
|
|
38
|
-
shadow-radius: 12px;
|
|
39
|
-
elevation: 4;
|
|
31
|
+
border-bottom-width: 1px;
|
|
32
|
+
border-bottom-color: #e5e7eb;
|
|
33
|
+
border-style: solid;
|
|
40
34
|
z-index: 1000;
|
|
41
35
|
`;
|
|
42
36
|
|
|
@@ -13,21 +13,14 @@ const colors = {
|
|
|
13
13
|
|
|
14
14
|
export const InputContainer = styled.View<{ isText?: boolean }>`
|
|
15
15
|
flex-direction: column;
|
|
16
|
-
padding:
|
|
17
|
-
|
|
18
|
-
* corners — are what shows. An opaque child painted straight over those
|
|
19
|
-
* corners (a parent's border radius does not clip children without
|
|
20
|
-
* overflow:hidden, and that would clip the dock's shadow too). */
|
|
21
|
-
background-color: transparent;
|
|
16
|
+
padding: 8px 16px 4px 16px;
|
|
17
|
+
background-color: ${colors.white};
|
|
22
18
|
z-index: 100;
|
|
23
19
|
width: 100%;
|
|
24
20
|
bottom: 0;
|
|
25
21
|
left: 0;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* them on this inner view too drew its shadow onto the dock's white
|
|
29
|
-
* background — the faint seam that made the strip below look like a
|
|
30
|
-
* different colour. */
|
|
22
|
+
border-top-width: 1px;
|
|
23
|
+
border-top-color: #e5e7eb;
|
|
31
24
|
`;
|
|
32
25
|
|
|
33
26
|
export const MediaContainer = styled.View`
|
|
@@ -18,7 +18,6 @@ import { ActivityIndicator, View } from 'react-native';
|
|
|
18
18
|
import { useChatSettingState } from '../../hooks/useChatSettingState';
|
|
19
19
|
import { FileIcon } from '../../assets/icons';
|
|
20
20
|
import { getExtensionForMime } from '../../helpers/mimeToExtension';
|
|
21
|
-
import { getDisplayFileName } from '../../helpers/getDisplayFileName';
|
|
22
21
|
|
|
23
22
|
interface FileDownloadProps {
|
|
24
23
|
fileName: string;
|
|
@@ -48,15 +47,6 @@ const FileDownload: React.FC<FileDownloadProps> = ({
|
|
|
48
47
|
const dispatch = useDispatch();
|
|
49
48
|
const { config } = useChatSettingState();
|
|
50
49
|
|
|
51
|
-
// Bug #40: prefer the sender's original name over the server's stored
|
|
52
|
-
// hash name for both the visible label and the extension badge below.
|
|
53
|
-
const displayName = getDisplayFileName({
|
|
54
|
-
originalName,
|
|
55
|
-
fileName,
|
|
56
|
-
location: fileURL,
|
|
57
|
-
mimetype,
|
|
58
|
-
});
|
|
59
|
-
|
|
60
50
|
const formatFileSize = (sizeInBytes: string): string => {
|
|
61
51
|
const size = parseInt(sizeInBytes, 10);
|
|
62
52
|
|
|
@@ -111,9 +101,9 @@ const FileDownload: React.FC<FileDownloadProps> = ({
|
|
|
111
101
|
};
|
|
112
102
|
|
|
113
103
|
const extensionLabel = (() => {
|
|
114
|
-
const dotIndex =
|
|
115
|
-
if (dotIndex !== -1 && dotIndex <
|
|
116
|
-
return
|
|
104
|
+
const dotIndex = fileName.lastIndexOf('.');
|
|
105
|
+
if (dotIndex !== -1 && dotIndex < fileName.length - 1) {
|
|
106
|
+
return fileName.slice(dotIndex + 1).toUpperCase();
|
|
117
107
|
}
|
|
118
108
|
return getExtensionForMime(mimetype).replace('.', '').toUpperCase();
|
|
119
109
|
})();
|
|
@@ -133,7 +123,7 @@ const FileDownload: React.FC<FileDownloadProps> = ({
|
|
|
133
123
|
isUser={isUser}
|
|
134
124
|
colorIsUser={config?.colors?.primary}
|
|
135
125
|
colorUsers={config?.colors?.secondary}
|
|
136
|
-
>{formatFileName(
|
|
126
|
+
>{formatFileName(fileName, 20)}</FileName>
|
|
137
127
|
{(pending || size) && (
|
|
138
128
|
<FileSizeContainer>
|
|
139
129
|
{pending ? (
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
requestFileTokenRecovery,
|
|
5
|
-
} from '../../helpers/secureFileUrl';
|
|
6
|
-
import { Image, Pressable, StyleSheet, View } from 'react-native';
|
|
2
|
+
import { Pressable, StyleSheet, View } from 'react-native';
|
|
3
|
+
import { useVideoPlayer, VideoView } from 'expo-video';
|
|
7
4
|
import { useDispatch } from 'react-redux';
|
|
8
5
|
import {
|
|
9
6
|
setActiveFile,
|
|
@@ -19,148 +16,74 @@ import {
|
|
|
19
16
|
|
|
20
17
|
interface CustomMessageVideoProps {
|
|
21
18
|
fileName: string;
|
|
22
|
-
/**
|
|
23
|
-
* The sender's original file name (bug #40) - kept alongside `fileName`
|
|
24
|
-
* so the preview modal's save/share/download logic can prefer it over
|
|
25
|
-
* the server's stored/hashed name.
|
|
26
|
-
*/
|
|
27
|
-
originalName?: string;
|
|
28
19
|
fileURL: string;
|
|
29
20
|
mimetype: string;
|
|
30
|
-
/** The backend-generated poster frame (message.locationPreview). */
|
|
31
|
-
previewURL?: string;
|
|
32
21
|
}
|
|
33
22
|
|
|
34
|
-
const PlayBadge: React.FC = () => (
|
|
35
|
-
<View style={styles.overlay} pointerEvents="none">
|
|
36
|
-
<View style={styles.playButton}>
|
|
37
|
-
<PlayIcon width={28} height={28} />
|
|
38
|
-
</View>
|
|
39
|
-
</View>
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Poster path — taken whenever the message carries a `locationPreview`.
|
|
44
|
-
*
|
|
45
|
-
* A chat row only ever needs a still and a play affordance; actual
|
|
46
|
-
* playback happens in the full-screen preview. Drawing that still with a
|
|
47
|
-
* plain <Image> keeps the whole bubble inside the RN view hierarchy, so
|
|
48
|
-
* the play badge is guaranteed to composite on top of it.
|
|
49
|
-
*/
|
|
50
|
-
const PosterVideo: React.FC<{
|
|
51
|
-
previewURL: string;
|
|
52
|
-
onOpen: () => void;
|
|
53
|
-
onPosterError: () => void;
|
|
54
|
-
}> = ({ previewURL, onOpen, onPosterError }) => {
|
|
55
|
-
const [dims, setDims] = useState<MediaDims>(defaultMediaDims());
|
|
56
|
-
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
if (!previewURL) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
let active = true;
|
|
62
|
-
Image.getSize(
|
|
63
|
-
previewURL,
|
|
64
|
-
(w, h) => {
|
|
65
|
-
if (active) {
|
|
66
|
-
setDims(fitMediaDimensions(w, h));
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
() => {
|
|
70
|
-
/* keep the default box if the size probe fails */
|
|
71
|
-
}
|
|
72
|
-
);
|
|
73
|
-
return () => {
|
|
74
|
-
active = false;
|
|
75
|
-
};
|
|
76
|
-
}, [previewURL]);
|
|
77
|
-
|
|
78
|
-
return (
|
|
79
|
-
<Pressable
|
|
80
|
-
onPress={onOpen}
|
|
81
|
-
style={[styles.wrapper, { width: dims.width, height: dims.height }]}
|
|
82
|
-
accessibilityRole="button"
|
|
83
|
-
accessibilityLabel="Play video"
|
|
84
|
-
>
|
|
85
|
-
<Image
|
|
86
|
-
source={{ uri: previewURL }}
|
|
87
|
-
style={styles.video}
|
|
88
|
-
resizeMode="cover"
|
|
89
|
-
// Not every backend returns a real still — some set
|
|
90
|
-
// locationPreview to the video URL itself, which decodes to
|
|
91
|
-
// nothing. Rather than show an empty box, fall back to the
|
|
92
|
-
// static placeholder branch.
|
|
93
|
-
onError={onPosterError}
|
|
94
|
-
/>
|
|
95
|
-
<PlayBadge />
|
|
96
|
-
</Pressable>
|
|
97
|
-
);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Fallback for messages with no usable poster frame: a static dark
|
|
102
|
-
* placeholder behind the play badge.
|
|
103
|
-
*
|
|
104
|
-
* This branch used to mount an expo-video player purely to paint the
|
|
105
|
-
* first frame (`VideoView` + `surfaceType="textureView"`). That never
|
|
106
|
-
* composited reliably: on Android (Pixel, Android 16, New Architecture)
|
|
107
|
-
* the native video surface draws ABOVE sibling RN views, swallowing the
|
|
108
|
-
* play badge — the video looked like a plain photo. There is no
|
|
109
|
-
* surfaceType/zIndex combination that guarantees ordering across SDK 54
|
|
110
|
-
* and 57, so we don't fight it: no live surface in the bubble at all.
|
|
111
|
-
* The badge is plain RN views over a plain RN background, which cannot
|
|
112
|
-
* be occluded, and we drop the per-row player instance as a bonus.
|
|
113
|
-
* Actual playback (and the real first frame) happens in the full-screen
|
|
114
|
-
* preview modal.
|
|
115
|
-
*/
|
|
116
|
-
const PlaceholderVideo: React.FC<{
|
|
117
|
-
onOpen: () => void;
|
|
118
|
-
}> = ({ onOpen }) => {
|
|
119
|
-
const dims = defaultMediaDims();
|
|
120
|
-
|
|
121
|
-
return (
|
|
122
|
-
<Pressable
|
|
123
|
-
onPress={onOpen}
|
|
124
|
-
style={[styles.wrapper, { width: dims.width, height: dims.height }]}
|
|
125
|
-
accessibilityRole="button"
|
|
126
|
-
accessibilityLabel="Play video"
|
|
127
|
-
>
|
|
128
|
-
<PlayBadge />
|
|
129
|
-
</Pressable>
|
|
130
|
-
);
|
|
131
|
-
};
|
|
132
|
-
|
|
133
23
|
const CustomMessageVideo: React.FC<CustomMessageVideoProps> = ({
|
|
134
24
|
fileName,
|
|
135
|
-
originalName,
|
|
136
25
|
fileURL,
|
|
137
26
|
mimetype,
|
|
138
|
-
previewURL,
|
|
139
27
|
}) => {
|
|
140
28
|
const dispatch = useDispatch();
|
|
141
|
-
const [
|
|
29
|
+
const [dims, setDims] = useState<MediaDims>(defaultMediaDims());
|
|
30
|
+
|
|
31
|
+
const player = useVideoPlayer(fileURL, (p) => {
|
|
32
|
+
p.muted = true;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
const sub = player.addListener('statusChange', () => {
|
|
37
|
+
const size = player.videoTrack?.size;
|
|
38
|
+
if (size?.width && size?.height) {
|
|
39
|
+
setDims(fitMediaDimensions(size.width, size.height));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return () => sub.remove();
|
|
43
|
+
}, [player]);
|
|
142
44
|
|
|
143
45
|
const handleOpen = () => {
|
|
144
|
-
dispatch(setActiveFile({ fileName, fileURL, mimetype
|
|
46
|
+
dispatch(setActiveFile({ fileName, fileURL, mimetype }));
|
|
145
47
|
dispatch(setActiveModal(MODAL_TYPES.FILE_PREVIEW));
|
|
146
48
|
};
|
|
147
49
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
50
|
+
return (
|
|
51
|
+
// Capture-overlay pattern: VideoView sits underneath without ANY
|
|
52
|
+
// touch participation; a transparent absolute-fill <Pressable> on
|
|
53
|
+
// top owns the tap. Previously we wrapped VideoView in a
|
|
54
|
+
// TouchableOpacity and set `pointerEvents="none"` on the inner
|
|
55
|
+
// VideoView — but on some expo-video versions / iOS the native
|
|
56
|
+
// VideoView still intercepted gestures despite that hint, so
|
|
57
|
+
// tapping the poster did nothing. Customer-reported #9 (video
|
|
58
|
+
// preview unresponsive). The Pressable now guarantees the tap
|
|
59
|
+
// reaches `handleOpen`.
|
|
60
|
+
<View
|
|
61
|
+
style={[styles.wrapper, { width: dims.width, height: dims.height }]}
|
|
62
|
+
>
|
|
63
|
+
<VideoView
|
|
64
|
+
player={player}
|
|
65
|
+
style={styles.video}
|
|
66
|
+
contentFit="cover"
|
|
67
|
+
nativeControls={false}
|
|
68
|
+
surfaceType="textureView"
|
|
69
|
+
pointerEvents="none"
|
|
159
70
|
/>
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
71
|
+
<View style={styles.overlay} pointerEvents="none">
|
|
72
|
+
<View style={styles.playButton}>
|
|
73
|
+
<PlayIcon width={28} height={28} />
|
|
74
|
+
</View>
|
|
75
|
+
</View>
|
|
76
|
+
<Pressable
|
|
77
|
+
onPress={handleOpen}
|
|
78
|
+
// Sits ON TOP of VideoView + the play-button overlay; transparent
|
|
79
|
+
// so the poster + play icon show through. Captures the tap and
|
|
80
|
+
// routes to handleOpen → setActiveModal(FILE_PREVIEW).
|
|
81
|
+
style={StyleSheet.absoluteFill}
|
|
82
|
+
accessibilityRole="button"
|
|
83
|
+
accessibilityLabel="Play video"
|
|
84
|
+
/>
|
|
85
|
+
</View>
|
|
86
|
+
);
|
|
164
87
|
};
|
|
165
88
|
|
|
166
89
|
export default CustomMessageVideo;
|