@ethora/chat-component-rn 26.5.7 → 26.5.10
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 +133 -0
- package/README.md +67 -10
- package/index.js +24 -0
- package/lib/commonjs/assets/icons.js +5 -1
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +11 -5
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +64 -38
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +57 -13
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +4 -2
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +2 -2
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +165 -28
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +17 -8
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/SystemMessage.js +34 -22
- package/lib/commonjs/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/Message.js +84 -39
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +82 -22
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +16 -4
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js +104 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +140 -24
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +29 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +5 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +77 -47
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +4 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/styled/MediaFilePreview.js +47 -28
- package/lib/commonjs/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +49 -9
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +8 -6
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +49 -27
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +14 -4
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +5 -1
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +60 -14
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/MessageNotificationContext.js +7 -7
- package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +244 -32
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/chatAutoEnterer.js +2 -7
- package/lib/commonjs/helpers/chatAutoEnterer.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +4 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +15 -5
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/keyboardLayout.js +18 -0
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -0
- package/lib/commonjs/helpers/mediaDimensions.js +51 -0
- package/lib/commonjs/helpers/mediaDimensions.js.map +1 -0
- package/lib/commonjs/helpers/normalizeRoomJid.js +20 -0
- package/lib/commonjs/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +87 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -0
- package/lib/commonjs/hooks/useHeapSender.js +1 -1
- package/lib/commonjs/hooks/useHeapSender.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +3 -3
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePushNotifications.js +6 -2
- package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
- package/lib/commonjs/hooks/useRoomState.js +2 -0
- package/lib/commonjs/hooks/useRoomState.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +201 -10
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +12 -14
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/main.js +7 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +67 -0
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +2 -1
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/outboundQueue.js +92 -0
- package/lib/commonjs/networking/outboundQueue.js.map +1 -0
- package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
- package/lib/commonjs/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
- package/lib/commonjs/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +26 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
- package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +294 -35
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js +22 -6
- package/lib/commonjs/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +157 -23
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/utils/installPromiseRejectionTracker.js +83 -0
- package/lib/commonjs/utils/installPromiseRejectionTracker.js.map +1 -0
- package/lib/commonjs/utils/resendMessage.js +1 -1
- package/lib/commonjs/utils/resendMessage.js.map +1 -1
- package/lib/module/assets/icons.js +5 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/ContextMenu/ContextMenuComponents.js +11 -5
- package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +65 -39
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +57 -13
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +4 -2
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +2 -2
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +166 -29
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +18 -8
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/SystemMessage.js +33 -21
- package/lib/module/components/MainComponents/SystemMessage.js.map +1 -1
- package/lib/module/components/MessageBubble/Message.js +85 -40
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +84 -24
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +15 -3
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js +99 -0
- package/lib/module/components/Modals/FilePreviewModal/DocumentViewer.js.map +1 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +143 -25
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +31 -3
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +5 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +79 -49
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +3 -3
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +4 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/styled/MediaFilePreview.js +47 -28
- package/lib/module/components/styled/MediaFilePreview.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +51 -11
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +8 -6
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +50 -28
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +14 -4
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +7 -2
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +5 -1
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +61 -15
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/MessageNotificationContext.js +7 -7
- package/lib/module/context/MessageNotificationContext.js.map +1 -1
- package/lib/module/context/xmppProvider.js +246 -34
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/chatAutoEnterer.js +2 -7
- package/lib/module/helpers/chatAutoEnterer.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +4 -1
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +15 -5
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/keyboardLayout.js +12 -0
- package/lib/module/helpers/keyboardLayout.js.map +1 -0
- package/lib/module/helpers/mediaDimensions.js +46 -0
- package/lib/module/helpers/mediaDimensions.js.map +1 -0
- package/lib/module/helpers/normalizeRoomJid.js +15 -0
- package/lib/module/helpers/normalizeRoomJid.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +82 -0
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -0
- package/lib/module/hooks/useHeapSender.js +1 -1
- package/lib/module/hooks/useHeapSender.js.map +1 -1
- package/lib/module/hooks/useLogout.js +3 -3
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePushNotifications.js +6 -2
- package/lib/module/hooks/usePushNotifications.js.map +1 -1
- package/lib/module/hooks/useRoomState.js +2 -0
- package/lib/module/hooks/useRoomState.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +203 -12
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +12 -14
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/main.js +1 -0
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +67 -1
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +2 -1
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/outboundQueue.js +84 -0
- package/lib/module/networking/outboundQueue.js.map +1 -0
- package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js +4 -1
- package/lib/module/networking/xmpp/createTimeoutPromise.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +7 -8
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js +26 -3
- package/lib/module/networking/xmpp/getRoomsPaged.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +26 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +2 -1
- package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +294 -35
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/Middleware/unreadMidlleware.js +22 -6
- package/lib/module/roomStore/Middleware/unreadMidlleware.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +154 -22
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/utils/installPromiseRejectionTracker.js +78 -0
- package/lib/module/utils/installPromiseRejectionTracker.js.map +1 -0
- package/lib/module/utils/resendMessage.js +1 -1
- package/lib/module/utils/resendMessage.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +8 -4
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/ContextMenu/ContextMenuComponents.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/MediaMessage.d.ts +1 -0
- 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.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts +1 -0
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/SystemMessage.d.ts +0 -7
- package/lib/typescript/components/MainComponents/SystemMessage.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts +4 -2
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts +29 -0
- package/lib/typescript/components/Modals/FilePreviewModal/DocumentViewer.d.ts.map +1 -0
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts +0 -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/ModalWrapper/ModalWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/MediaFilePreview.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts +1 -5
- 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/StyledInputComponents/MediaComponents.d.ts +9 -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/UnsupportedType.d.ts +1 -0
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts +1 -0
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/chatAutoEnterer.d.ts.map +1 -1
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/keyboardLayout.d.ts +9 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -0
- package/lib/typescript/helpers/mediaDimensions.d.ts +9 -0
- package/lib/typescript/helpers/mediaDimensions.d.ts.map +1 -0
- package/lib/typescript/helpers/normalizeRoomJid.d.ts +2 -0
- package/lib/typescript/helpers/normalizeRoomJid.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +42 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -0
- package/lib/typescript/hooks/useHeapSender.d.ts.map +1 -1
- package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
- package/lib/typescript/hooks/useRoomState.d.ts +1 -0
- package/lib/typescript/hooks/useRoomState.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +1 -0
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -0
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/outboundQueue.d.ts +57 -0
- package/lib/typescript/networking/outboundQueue.d.ts.map +1 -0
- package/lib/typescript/networking/xmpp/createTimeoutPromise.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts +1 -1
- package/lib/typescript/networking/xmpp/getRoomsPaged.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +33 -4
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/Middleware/unreadMidlleware.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +8 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/types/models/media.model.d.ts +1 -0
- package/lib/typescript/types/models/media.model.d.ts.map +1 -1
- package/lib/typescript/types/models/xmpp.model.d.ts +1 -1
- package/lib/typescript/types/models/xmpp.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +4 -0
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/installPromiseRejectionTracker.d.ts +20 -0
- package/lib/typescript/utils/installPromiseRejectionTracker.d.ts.map +1 -0
- package/lib/typescript/utils/resendMessage.d.ts.map +1 -1
- package/package.json +18 -2
- package/src/assets/icons.tsx +23 -14
- package/src/components/ContextMenu/ContextMenuComponents.tsx +10 -5
- package/src/components/MainComponents/ChatRoom.tsx +81 -66
- package/src/components/MainComponents/ChatWrapper.tsx +99 -21
- package/src/components/MainComponents/MediaMessage.tsx +3 -0
- package/src/components/MainComponents/MessageContainer.tsx +4 -2
- package/src/components/MainComponents/MessageList.tsx +175 -28
- package/src/components/MainComponents/ReduxWrapper.tsx +19 -9
- package/src/components/MainComponents/SystemMessage.tsx +38 -26
- package/src/components/MessageBubble/Message.tsx +91 -62
- package/src/components/MessageBubble/MessageInteractions.tsx +98 -29
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +17 -3
- package/src/components/Modals/FilePreviewModal/DocumentViewer.tsx +93 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +152 -25
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +32 -4
- package/src/components/Modals/Modal/Modal.tsx +4 -1
- package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +70 -58
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
- package/src/components/Modals/styledModalComponents.tsx +4 -9
- package/src/components/styled/MediaFilePreview.tsx +46 -26
- package/src/components/styled/MessageImage.tsx +58 -13
- package/src/components/styled/NewMessageLabel.tsx +8 -5
- package/src/components/styled/SendInput.tsx +64 -29
- package/src/components/styled/StyledInputComponents/MediaComponents.tsx +15 -5
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +7 -2
- package/src/components/styled/UnsupportedType.tsx +7 -1
- package/src/components/styled/VideoMessage.tsx +59 -11
- package/src/context/MessageNotificationContext.tsx +8 -8
- package/src/context/xmppProvider.tsx +247 -30
- package/src/helpers/chatAutoEnterer.ts +2 -8
- package/src/helpers/historyPreloadScheduler.ts +4 -1
- package/src/helpers/insertMessageWithDelimiter.ts +22 -15
- package/src/helpers/keyboardLayout.ts +18 -0
- package/src/helpers/mediaDimensions.ts +47 -0
- package/src/helpers/normalizeRoomJid.ts +6 -0
- package/src/hooks/useChatRoomFocus.ts +95 -0
- package/src/hooks/useHeapSender.tsx +2 -1
- package/src/hooks/useLogout.tsx +3 -3
- package/src/hooks/usePushNotifications.ts +21 -8
- package/src/hooks/useRoomState.tsx +4 -0
- package/src/hooks/useSendMessage.tsx +258 -13
- package/src/hooks/useUnreadMessagesCounter.ts +13 -16
- package/src/main.ts +1 -0
- package/src/networking/api-requests/auth.api.ts +55 -1
- package/src/networking/apiClient.ts +2 -1
- package/src/networking/outboundQueue.ts +98 -0
- package/src/networking/xmpp/createTimeoutPromise.xmpp.ts +5 -1
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +11 -13
- package/src/networking/xmpp/getRoomsPaged.xmpp.ts +27 -3
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +24 -9
- package/src/networking/xmpp/sendTextMessage.xmpp.ts +2 -1
- package/src/networking/xmppClient.ts +317 -43
- package/src/roomStore/Middleware/unreadMidlleware.tsx +23 -5
- package/src/roomStore/roomsSlice.ts +177 -27
- package/src/types/models/media.model.ts +3 -0
- package/src/types/models/xmpp.model.ts +2 -1
- package/src/types/types.ts +15 -0
- package/src/utils/installPromiseRejectionTracker.ts +91 -0
- package/src/utils/resendMessage.ts +2 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { ActivityIndicator, StyleSheet, Text, View } from 'react-native';
|
|
5
|
+
import { WebView } from 'react-native-webview';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* Inline preview for office documents (DOC / DOCX / XLS / XLSX / PPT /
|
|
9
|
+
* PPTX / TXT / RTF / CSV) and other non-PDF formats supported by
|
|
10
|
+
* Google's free gview rendering service.
|
|
11
|
+
*
|
|
12
|
+
* Strategy: embed `https://docs.google.com/gview?url=<encoded>&embedded=true`
|
|
13
|
+
* inside a WebView. Google fetches the doc from its public URL and
|
|
14
|
+
* renders it to a viewable iframe — no client-side dependency on
|
|
15
|
+
* native office libraries, no extra peer dep. Works for any backend
|
|
16
|
+
* whose file URLs are publicly reachable (which Ethora's `/files/`
|
|
17
|
+
* already are — they're CDN URLs returned in `item.location`).
|
|
18
|
+
*
|
|
19
|
+
* Limitations (documented for the integrator):
|
|
20
|
+
* - Requires public URL — won't work for auth-gated downloads.
|
|
21
|
+
* - First load can take 2-5s on slow networks.
|
|
22
|
+
* - Read-only — no editing, no print/share buttons.
|
|
23
|
+
*
|
|
24
|
+
* For PDFs use the existing PdfViewer (downloads then renders locally).
|
|
25
|
+
*/
|
|
26
|
+
const DocumentViewer = ({
|
|
27
|
+
url,
|
|
28
|
+
fileName
|
|
29
|
+
}) => {
|
|
30
|
+
const [loaded, setLoaded] = useState(false);
|
|
31
|
+
const [errored, setErrored] = useState(false);
|
|
32
|
+
const viewerUrl = `https://docs.google.com/gview?url=${encodeURIComponent(url)}&embedded=true`;
|
|
33
|
+
if (errored) {
|
|
34
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
35
|
+
style: styles.center,
|
|
36
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
37
|
+
style: styles.errorTitle,
|
|
38
|
+
children: fileName || 'Document'
|
|
39
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
40
|
+
style: styles.errorBody,
|
|
41
|
+
children: "Couldn't render an inline preview. Tap the save icon above to download the file."
|
|
42
|
+
})]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
46
|
+
style: styles.container,
|
|
47
|
+
children: [/*#__PURE__*/_jsx(WebView, {
|
|
48
|
+
source: {
|
|
49
|
+
uri: viewerUrl
|
|
50
|
+
},
|
|
51
|
+
style: styles.webview,
|
|
52
|
+
originWhitelist: ['*'],
|
|
53
|
+
startInLoadingState: true,
|
|
54
|
+
onLoadEnd: () => setLoaded(true),
|
|
55
|
+
onError: () => setErrored(true),
|
|
56
|
+
onHttpError: () => setErrored(true)
|
|
57
|
+
}), !loaded && /*#__PURE__*/_jsx(View, {
|
|
58
|
+
style: styles.loadingOverlay,
|
|
59
|
+
pointerEvents: "none",
|
|
60
|
+
children: /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
61
|
+
size: "large"
|
|
62
|
+
})
|
|
63
|
+
})]
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
export default DocumentViewer;
|
|
67
|
+
const styles = StyleSheet.create({
|
|
68
|
+
container: {
|
|
69
|
+
flex: 1,
|
|
70
|
+
width: '100%',
|
|
71
|
+
backgroundColor: '#fff'
|
|
72
|
+
},
|
|
73
|
+
webview: {
|
|
74
|
+
flex: 1,
|
|
75
|
+
backgroundColor: '#fff'
|
|
76
|
+
},
|
|
77
|
+
loadingOverlay: {
|
|
78
|
+
...StyleSheet.absoluteFillObject,
|
|
79
|
+
justifyContent: 'center',
|
|
80
|
+
alignItems: 'center',
|
|
81
|
+
backgroundColor: '#ffffff'
|
|
82
|
+
},
|
|
83
|
+
center: {
|
|
84
|
+
flex: 1,
|
|
85
|
+
alignItems: 'center',
|
|
86
|
+
justifyContent: 'center',
|
|
87
|
+
padding: 24,
|
|
88
|
+
gap: 8
|
|
89
|
+
},
|
|
90
|
+
errorTitle: {
|
|
91
|
+
fontSize: 16,
|
|
92
|
+
fontWeight: '600'
|
|
93
|
+
},
|
|
94
|
+
errorBody: {
|
|
95
|
+
color: '#666',
|
|
96
|
+
textAlign: 'center'
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=DocumentViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","ActivityIndicator","StyleSheet","Text","View","WebView","jsx","_jsx","jsxs","_jsxs","DocumentViewer","url","fileName","loaded","setLoaded","errored","setErrored","viewerUrl","encodeURIComponent","style","styles","center","children","errorTitle","errorBody","container","source","uri","webview","originWhitelist","startInLoadingState","onLoadEnd","onError","onHttpError","loadingOverlay","pointerEvents","size","create","flex","width","backgroundColor","absoluteFillObject","justifyContent","alignItems","padding","gap","fontSize","fontWeight","color","textAlign"],"sourceRoot":"../../../../../src","sources":["components/Modals/FilePreviewModal/DocumentViewer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
4
|
-
import styled from 'styled-components/native';
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
5
4
|
import { CenterContainer, ModalContainerFullScreen } from '../styledModalComponents';
|
|
6
5
|
import { SaveIcon } from '../../../assets/icons';
|
|
7
6
|
import ModalHeaderComponent from '../ModalHeaderComponent';
|
|
@@ -9,19 +8,86 @@ import { useDispatch, useSelector } from 'react-redux';
|
|
|
9
8
|
import Button from '../../styled/Button';
|
|
10
9
|
import { FullScreenImage } from '../../styled/StyledInputComponents/MediaComponents';
|
|
11
10
|
import { setActiveFile } from '../../../roomStore/chatSettingsSlice';
|
|
12
|
-
import { Alert, Text, View, Platform } from 'react-native';
|
|
13
|
-
import {
|
|
11
|
+
import { Alert, Text, View, Platform, TouchableOpacity, StyleSheet } from 'react-native';
|
|
12
|
+
import { useVideoPlayer, VideoView } from 'expo-video';
|
|
13
|
+
import { PlayIcon } from '../../../assets/icons';
|
|
14
14
|
import * as FileSystem from 'expo-file-system/legacy';
|
|
15
15
|
import * as MediaLibrary from 'expo-media-library';
|
|
16
16
|
import { useToast } from '../../../context/ToastContext';
|
|
17
17
|
import PdfViewer from './PdfView';
|
|
18
|
+
import DocumentViewer from './DocumentViewer';
|
|
19
|
+
import AudioMessage from '../../styled/AudioMessage';
|
|
18
20
|
import { ensureFilenameHasExtension } from '../../../helpers/mimeToExtension';
|
|
21
|
+
|
|
22
|
+
// MIME types Google's gview embed renders reliably. Everything else
|
|
23
|
+
// falls through to the info-card so the user can still download.
|
|
19
24
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
const GVIEW_PREVIEWABLE = new Set(['application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'text/plain', 'text/csv', 'application/rtf']);
|
|
26
|
+
const isGviewPreviewable = mime => {
|
|
27
|
+
if (!mime) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return GVIEW_PREVIEWABLE.has(mime.toLowerCase().split(';')[0].trim());
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Full-screen video preview on expo-video (expo-av <Video> is deprecated
|
|
34
|
+
// and rendered blank on Android). `contentFit: contain` fits the clip to
|
|
35
|
+
// the area with the surrounding letterbox painted as the view's own
|
|
36
|
+
// (transparent → theme) background, NOT black. `textureView` so the play
|
|
37
|
+
// overlay composites on top and nothing is clipped on Android.
|
|
38
|
+
const ModalVideo = ({
|
|
39
|
+
uri
|
|
40
|
+
}) => {
|
|
41
|
+
const [showPlay, setShowPlay] = useState(true);
|
|
42
|
+
const player = useVideoPlayer(uri, p => {
|
|
43
|
+
p.muted = false;
|
|
44
|
+
});
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
const sub = player.addListener('playingChange', ({
|
|
47
|
+
isPlaying
|
|
48
|
+
}) => {
|
|
49
|
+
if (isPlaying) {
|
|
50
|
+
setShowPlay(false);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return () => sub.remove();
|
|
54
|
+
}, [player]);
|
|
55
|
+
const handlePlay = () => {
|
|
56
|
+
setShowPlay(false);
|
|
57
|
+
player.play();
|
|
58
|
+
};
|
|
59
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
60
|
+
style: {
|
|
61
|
+
flex: 1,
|
|
62
|
+
width: '100%'
|
|
63
|
+
},
|
|
64
|
+
children: [/*#__PURE__*/_jsx(VideoView, {
|
|
65
|
+
player: player,
|
|
66
|
+
style: {
|
|
67
|
+
flex: 1,
|
|
68
|
+
backgroundColor: 'transparent'
|
|
69
|
+
},
|
|
70
|
+
contentFit: "contain",
|
|
71
|
+
nativeControls: true,
|
|
72
|
+
surfaceType: "textureView",
|
|
73
|
+
allowsFullscreen: true
|
|
74
|
+
}), showPlay && /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
75
|
+
activeOpacity: 0.8,
|
|
76
|
+
onPress: handlePlay,
|
|
77
|
+
style: StyleSheet.absoluteFillObject,
|
|
78
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
79
|
+
style: styles.playOverlay,
|
|
80
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
81
|
+
style: styles.playButton,
|
|
82
|
+
children: /*#__PURE__*/_jsx(PlayIcon, {
|
|
83
|
+
width: 28,
|
|
84
|
+
height: 28
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
})]
|
|
89
|
+
});
|
|
90
|
+
};
|
|
25
91
|
const FilePreviewModal = ({
|
|
26
92
|
handleCloseModal
|
|
27
93
|
}) => {
|
|
@@ -33,7 +99,7 @@ const FilePreviewModal = ({
|
|
|
33
99
|
activeFile
|
|
34
100
|
} = useSelector(state => state.chatSettingStore);
|
|
35
101
|
if (!activeFile) {
|
|
36
|
-
return;
|
|
102
|
+
return null;
|
|
37
103
|
}
|
|
38
104
|
const requestStoragePermission = async () => {
|
|
39
105
|
try {
|
|
@@ -116,25 +182,45 @@ const FilePreviewModal = ({
|
|
|
116
182
|
}));
|
|
117
183
|
handleCloseModal?.();
|
|
118
184
|
};
|
|
119
|
-
|
|
185
|
+
|
|
186
|
+
// NOTE: plain computed value, NOT useMemo. It sits AFTER the
|
|
187
|
+
// `if (!activeFile) return` guard above, so as a hook it would run
|
|
188
|
+
// conditionally (skipped when activeFile is null) — changing the hook
|
|
189
|
+
// count between renders and throwing "rendered more hooks than during
|
|
190
|
+
// the previous render", which crashed the modal the instant you tapped
|
|
191
|
+
// a video/image to open it. Recomputing this on each render is cheap.
|
|
192
|
+
const getMediaComponent = (() => {
|
|
120
193
|
switch (true) {
|
|
121
194
|
case activeFile.mimetype.startsWith('image/'):
|
|
122
195
|
return /*#__PURE__*/_jsx(FullScreenImage, {
|
|
123
|
-
|
|
124
|
-
|
|
196
|
+
source: {
|
|
197
|
+
uri: activeFile.fileURL || 'https://as2.ftcdn.net/v2/jpg/02/51/95/53/1000_F_251955356_FAQH0U1y1TZw3ZcdPGybwUkH90a3VAhb.jpg'
|
|
198
|
+
},
|
|
199
|
+
resizeMode: "contain",
|
|
200
|
+
accessibilityLabel: activeFile.fileName
|
|
125
201
|
});
|
|
126
202
|
case activeFile.mimetype.startsWith('video/'):
|
|
127
|
-
return /*#__PURE__*/_jsx(
|
|
203
|
+
return /*#__PURE__*/_jsx(ModalVideo, {
|
|
204
|
+
uri: activeFile.fileURL
|
|
205
|
+
});
|
|
206
|
+
case activeFile.mimetype.startsWith('audio/'):
|
|
207
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
128
208
|
style: {
|
|
129
209
|
width: '100%',
|
|
130
|
-
|
|
210
|
+
padding: 20,
|
|
211
|
+
gap: 12,
|
|
212
|
+
backgroundColor: '#FFF8ED',
|
|
213
|
+
borderRadius: 16
|
|
131
214
|
},
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
215
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
216
|
+
style: {
|
|
217
|
+
fontSize: 16,
|
|
218
|
+
fontWeight: '600'
|
|
219
|
+
},
|
|
220
|
+
children: ensureFilenameHasExtension(activeFile.fileName, activeFile.mimetype)
|
|
221
|
+
}), /*#__PURE__*/_jsx(AudioMessage, {
|
|
222
|
+
src: activeFile.fileURL
|
|
223
|
+
})]
|
|
138
224
|
});
|
|
139
225
|
case activeFile.mimetype === 'application/pdf':
|
|
140
226
|
return /*#__PURE__*/_jsx(PdfViewer, {
|
|
@@ -143,6 +229,18 @@ const FilePreviewModal = ({
|
|
|
143
229
|
default:
|
|
144
230
|
{
|
|
145
231
|
const displayName = ensureFilenameHasExtension(activeFile.fileName, activeFile.mimetype);
|
|
232
|
+
// Office docs (.docx / .xlsx / .pptx / .doc / .xls / .ppt /
|
|
233
|
+
// .txt / .csv / .rtf) → render inline via Google's gview embed
|
|
234
|
+
// — fixes the "blank preview" complaint for docs (bug #9).
|
|
235
|
+
if (isGviewPreviewable(activeFile.mimetype)) {
|
|
236
|
+
return /*#__PURE__*/_jsx(DocumentViewer, {
|
|
237
|
+
url: activeFile.fileURL,
|
|
238
|
+
fileName: displayName
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
// True last-resort fallback for genuinely unrenderable types
|
|
242
|
+
// (binary blobs, exotic MIMEs). Friendly info card with the
|
|
243
|
+
// filename so the user can still download.
|
|
146
244
|
return /*#__PURE__*/_jsxs(View, {
|
|
147
245
|
style: {
|
|
148
246
|
backgroundColor: '#FFF8ED',
|
|
@@ -170,7 +268,7 @@ const FilePreviewModal = ({
|
|
|
170
268
|
});
|
|
171
269
|
}
|
|
172
270
|
}
|
|
173
|
-
}
|
|
271
|
+
})();
|
|
174
272
|
return /*#__PURE__*/_jsxs(ModalContainerFullScreen, {
|
|
175
273
|
children: [/*#__PURE__*/_jsx(ModalHeaderComponent, {
|
|
176
274
|
handleCloseModal: closeModal,
|
|
@@ -184,14 +282,34 @@ const FilePreviewModal = ({
|
|
|
184
282
|
}), /*#__PURE__*/_jsx(CenterContainer, {
|
|
185
283
|
style: {
|
|
186
284
|
display: 'flex',
|
|
187
|
-
|
|
285
|
+
flex: 1,
|
|
188
286
|
justifyContent: 'center',
|
|
189
|
-
overflow:
|
|
190
|
-
|
|
287
|
+
// NOTE: do NOT set overflow:'hidden' here — on Android it clips
|
|
288
|
+
// hardware-accelerated children (expo-av Video TextureView and
|
|
289
|
+
// react-native-webview) to nothing, so video/PDF/doc previews
|
|
290
|
+
// render blank while plain <Image> survives.
|
|
291
|
+
overflow: 'visible',
|
|
292
|
+
padding: 16,
|
|
293
|
+
paddingBottom: 48
|
|
191
294
|
},
|
|
192
295
|
children: getMediaComponent
|
|
193
296
|
})]
|
|
194
297
|
});
|
|
195
298
|
};
|
|
299
|
+
const styles = StyleSheet.create({
|
|
300
|
+
playOverlay: {
|
|
301
|
+
...StyleSheet.absoluteFillObject,
|
|
302
|
+
justifyContent: 'center',
|
|
303
|
+
alignItems: 'center'
|
|
304
|
+
},
|
|
305
|
+
playButton: {
|
|
306
|
+
width: 64,
|
|
307
|
+
height: 64,
|
|
308
|
+
borderRadius: 32,
|
|
309
|
+
backgroundColor: 'rgba(0, 0, 0, 0.55)',
|
|
310
|
+
justifyContent: 'center',
|
|
311
|
+
alignItems: 'center'
|
|
312
|
+
}
|
|
313
|
+
});
|
|
196
314
|
export default FilePreviewModal;
|
|
197
315
|
//# sourceMappingURL=FilePreviewModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","CenterContainer","ModalContainerFullScreen","SaveIcon","ModalHeaderComponent","useDispatch","useSelector","Button","FullScreenImage","setActiveFile","Alert","Text","View","Platform","TouchableOpacity","StyleSheet","useVideoPlayer","VideoView","PlayIcon","FileSystem","MediaLibrary","useToast","PdfViewer","DocumentViewer","AudioMessage","ensureFilenameHasExtension","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","GVIEW_PREVIEWABLE","Set","isGviewPreviewable","mime","has","toLowerCase","split","trim","ModalVideo","uri","showPlay","setShowPlay","player","p","muted","sub","addListener","isPlaying","remove","handlePlay","play","style","flex","width","children","backgroundColor","contentFit","nativeControls","surfaceType","allowsFullscreen","activeOpacity","onPress","absoluteFillObject","styles","playOverlay","playButton","height","FilePreviewModal","handleCloseModal","dispatch","showToast","activeFile","state","chatSettingStore","requestStoragePermission","status","requestPermissionsAsync","error","console","saveToGallery","hasPermission","alert","fileName","mimetype","filePath","cacheDirectory","download","downloadAsync","fileURL","saveToLibraryAsync","id","Date","now","toString","title","message","type","err","saveFileToDownloads","OS","createAssetAsync","saveClick","startsWith","closeModal","getMediaComponent","source","resizeMode","accessibilityLabel","padding","gap","borderRadius","fontSize","fontWeight","src","pdfUrl","displayName","url","color","marginTop","headerTitle","rightMenu","display","justifyContent","overflow","paddingBottom","create","alignItems"],"sourceRoot":"../../../../../src","sources":["components/Modals/FilePreviewModal/FilePreviewModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import { ActivityIndicator, StyleSheet, Text, View } from 'react-native';
|
|
4
|
+
import { ActivityIndicator, Platform, StyleSheet, Text, View } from 'react-native';
|
|
5
5
|
import { WebView } from 'react-native-webview';
|
|
6
6
|
import * as FileSystem from 'expo-file-system/legacy';
|
|
7
|
-
import {
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
8
|
const PdfViewer = ({
|
|
9
9
|
pdfUrl
|
|
10
10
|
}) => {
|
|
11
11
|
const [localUri, setLocalUri] = useState(null);
|
|
12
12
|
const [error, setError] = useState(null);
|
|
13
|
+
// Android's WebView has NO native PDF renderer, so a file:// (or direct)
|
|
14
|
+
// PDF loads blank. Route it through Google's gview embed using the
|
|
15
|
+
// (public) remote URL — same approach as DocumentViewer for office docs.
|
|
16
|
+
// iOS WKWebView renders PDFs natively, so we download + show the file.
|
|
17
|
+
const isAndroid = Platform.OS === 'android';
|
|
13
18
|
useEffect(() => {
|
|
19
|
+
if (isAndroid) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
14
22
|
let cancelled = false;
|
|
15
23
|
const run = async () => {
|
|
16
24
|
try {
|
|
@@ -32,7 +40,27 @@ const PdfViewer = ({
|
|
|
32
40
|
return () => {
|
|
33
41
|
cancelled = true;
|
|
34
42
|
};
|
|
35
|
-
}, [pdfUrl]);
|
|
43
|
+
}, [pdfUrl, isAndroid]);
|
|
44
|
+
if (isAndroid) {
|
|
45
|
+
const gviewUrl = `https://docs.google.com/gview?embedded=true&url=${encodeURIComponent(pdfUrl)}`;
|
|
46
|
+
return /*#__PURE__*/_jsx(View, {
|
|
47
|
+
style: styles.container,
|
|
48
|
+
children: /*#__PURE__*/_jsx(WebView, {
|
|
49
|
+
source: {
|
|
50
|
+
uri: gviewUrl
|
|
51
|
+
},
|
|
52
|
+
style: styles.webview,
|
|
53
|
+
originWhitelist: ['*'],
|
|
54
|
+
startInLoadingState: true,
|
|
55
|
+
renderLoading: () => /*#__PURE__*/_jsx(View, {
|
|
56
|
+
style: styles.center,
|
|
57
|
+
children: /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
58
|
+
size: "large"
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
}
|
|
36
64
|
if (error) {
|
|
37
65
|
return /*#__PURE__*/_jsx(View, {
|
|
38
66
|
style: styles.center,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","ActivityIndicator","StyleSheet","Text","View","WebView","FileSystem","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","ActivityIndicator","Platform","StyleSheet","Text","View","WebView","FileSystem","jsx","_jsx","jsxs","_jsxs","PdfViewer","pdfUrl","localUri","setLocalUri","error","setError","isAndroid","OS","cancelled","run","target","cacheDirectory","Date","now","result","downloadAsync","uri","e","console","log","message","gviewUrl","encodeURIComponent","style","styles","container","children","source","webview","originWhitelist","startInLoadingState","renderLoading","center","size","allowFileAccess","allowFileAccessFromFileURLs","allowUniversalAccessFromFileURLs","create","flex","width","backgroundColor","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["components/Modals/FilePreviewModal/PdfView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,7 +31,11 @@ const Modal = ({
|
|
|
31
31
|
return modal && /*#__PURE__*/_jsxs(ModalBackground, {
|
|
32
32
|
id: "modal-background",
|
|
33
33
|
style: {
|
|
34
|
-
position: 'absolute'
|
|
34
|
+
position: 'absolute',
|
|
35
|
+
top: 0,
|
|
36
|
+
left: 0,
|
|
37
|
+
right: 0,
|
|
38
|
+
bottom: 0
|
|
35
39
|
},
|
|
36
40
|
children: [renderModalContent(), children]
|
|
37
41
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ModalBackground","useDispatch","setActiveModal","MODAL_TYPES","MODAL_COMPONENTS","jsx","_jsx","jsxs","_jsxs","Modal","children","modal","setOpenModal","dispatch","handleCloseModal","handleBackButtonClick","SETTINGS","renderModalContent","ModalComponent","handleClose","MANAGE_DATA","VISIBILITY","REFERRALS","DOCUMENT_SHARES","PROFILE_SHARES","BLOCKED_USERS","id","style","position"],"sourceRoot":"../../../../../src","sources":["components/Modals/Modal/Modal.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,cAAc,QAAQ,sCAAsC;AACrE,SAASC,WAAW,QAAQ,wCAAwC;AACpE,SAASC,gBAAgB,QAAQ,6CAA6C;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/E,MAAMC,KAA2B,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAa,CAAC,KAAK;EACzE,MAAMC,QAAQ,GAAGZ,WAAW,CAAC,CAAC;EAC9B,MAAMa,gBAAgB,GAAGA,CAAA,KAAMF,YAAY,CAAC,CAAC;EAC7C,MAAMG,qBAAqB,GAAGA,CAAA,KAC5BF,QAAQ,CAACX,cAAc,CAACC,WAAW,CAACa,QAAQ,CAAC,CAAC;EAEhD,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/B,IAAI,CAACN,KAAK,EAAE;MAAC,OAAO,IAAI;IAAC;IAEzB,MAAMO,cAAc,GAAGd,gBAAgB,CAACO,KAAK,CAAC;IAE9C,IAAI,CAACO,cAAc,EAAE;MAAC,OAAO,IAAI;IAAC;IAElC,MAAMC,WAAW,GACfR,KAAK,KAAKR,WAAW,CAACiB,WAAW,IACjCT,KAAK,KAAKR,WAAW,CAACkB,UAAU,IAChCV,KAAK,KAAKR,WAAW,CAACmB,SAAS,IAC/BX,KAAK,KAAKR,WAAW,CAACoB,eAAe,IACrCZ,KAAK,KAAKR,WAAW,CAACqB,cAAc,IACpCb,KAAK,KAAKR,WAAW,CAACsB,aAAa,GAC/BV,qBAAqB,GACrBD,gBAAgB;IAEtB,oBAAOR,IAAA,CAACY,cAAc;MAACJ,gBAAgB,EAAEK;IAAY,CAAE,CAAC;EAC1D,CAAC;EACD,OACER,KAAK,iBACHH,KAAA,CAACR,eAAe;
|
|
1
|
+
{"version":3,"names":["React","ModalBackground","useDispatch","setActiveModal","MODAL_TYPES","MODAL_COMPONENTS","jsx","_jsx","jsxs","_jsxs","Modal","children","modal","setOpenModal","dispatch","handleCloseModal","handleBackButtonClick","SETTINGS","renderModalContent","ModalComponent","handleClose","MANAGE_DATA","VISIBILITY","REFERRALS","DOCUMENT_SHARES","PROFILE_SHARES","BLOCKED_USERS","id","style","position","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["components/Modals/Modal/Modal.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,0BAA0B;AAE1D,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,cAAc,QAAQ,sCAAsC;AACrE,SAASC,WAAW,QAAQ,wCAAwC;AACpE,SAASC,gBAAgB,QAAQ,6CAA6C;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ/E,MAAMC,KAA2B,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,KAAK;EAAEC;AAAa,CAAC,KAAK;EACzE,MAAMC,QAAQ,GAAGZ,WAAW,CAAC,CAAC;EAC9B,MAAMa,gBAAgB,GAAGA,CAAA,KAAMF,YAAY,CAAC,CAAC;EAC7C,MAAMG,qBAAqB,GAAGA,CAAA,KAC5BF,QAAQ,CAACX,cAAc,CAACC,WAAW,CAACa,QAAQ,CAAC,CAAC;EAEhD,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;IAC/B,IAAI,CAACN,KAAK,EAAE;MAAC,OAAO,IAAI;IAAC;IAEzB,MAAMO,cAAc,GAAGd,gBAAgB,CAACO,KAAK,CAAC;IAE9C,IAAI,CAACO,cAAc,EAAE;MAAC,OAAO,IAAI;IAAC;IAElC,MAAMC,WAAW,GACfR,KAAK,KAAKR,WAAW,CAACiB,WAAW,IACjCT,KAAK,KAAKR,WAAW,CAACkB,UAAU,IAChCV,KAAK,KAAKR,WAAW,CAACmB,SAAS,IAC/BX,KAAK,KAAKR,WAAW,CAACoB,eAAe,IACrCZ,KAAK,KAAKR,WAAW,CAACqB,cAAc,IACpCb,KAAK,KAAKR,WAAW,CAACsB,aAAa,GAC/BV,qBAAqB,GACrBD,gBAAgB;IAEtB,oBAAOR,IAAA,CAACY,cAAc;MAACJ,gBAAgB,EAAEK;IAAY,CAAE,CAAC;EAC1D,CAAC;EACD,OACER,KAAK,iBACHH,KAAA,CAACR,eAAe;IACd0B,EAAE,EAAC,kBAAkB;IACrBC,KAAK,EAAE;MAAEC,QAAQ,EAAE,UAAU;MAAEC,GAAG,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAE;IAAAtB,QAAA,GAErEO,kBAAkB,CAAC,CAAC,EACpBP,QAAQ;EAAA,CACM,CAClB;AAEL,CAAC;AAED,eAAeD,KAAK","ignoreList":[]}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { useRef } from 'react';
|
|
4
4
|
import { CloseButton, GroupContainer, ModalBackground, ModalContainer, ModalDescription, ModalTitle } from '../styledModalComponents';
|
|
5
5
|
import Button from '../../styled/Button';
|
|
6
|
-
import { Modal, Text } from 'react-native';
|
|
7
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { Modal, Text, View, StyleSheet } from 'react-native';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
8
8
|
export const ModalWrapper = ({
|
|
9
9
|
iconTitle: IconTitle,
|
|
10
10
|
title,
|
|
@@ -28,63 +28,93 @@ export const ModalWrapper = ({
|
|
|
28
28
|
// }
|
|
29
29
|
// };
|
|
30
30
|
|
|
31
|
+
const inner = /*#__PURE__*/_jsxs(_Fragment, {
|
|
32
|
+
children: [/*#__PURE__*/_jsx(CloseButton, {
|
|
33
|
+
onPress: handleCloseModal,
|
|
34
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
35
|
+
style: {
|
|
36
|
+
fontSize: 24
|
|
37
|
+
},
|
|
38
|
+
children: "\xD7"
|
|
39
|
+
})
|
|
40
|
+
}), IconTitle ? /*#__PURE__*/_jsx(IconTitle, {}) : /*#__PURE__*/_jsx(ModalTitle, {
|
|
41
|
+
children: title
|
|
42
|
+
}), description && /*#__PURE__*/_jsx(ModalDescription, {
|
|
43
|
+
children: description
|
|
44
|
+
}), isTextarea && /*#__PURE__*/_jsx(GroupContainer, {
|
|
45
|
+
style: {
|
|
46
|
+
flexDirection: 'column',
|
|
47
|
+
position: 'relative'
|
|
48
|
+
}
|
|
49
|
+
}), !buttonText && /*#__PURE__*/_jsx(GroupContainer, {}), /*#__PURE__*/_jsxs(GroupContainer, {
|
|
50
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
51
|
+
onPress: handleCloseModal,
|
|
52
|
+
text: 'Cancel',
|
|
53
|
+
style: {
|
|
54
|
+
width: '100%'
|
|
55
|
+
},
|
|
56
|
+
unstyled: true,
|
|
57
|
+
variant: "outlined"
|
|
58
|
+
}), buttonText && /*#__PURE__*/_jsx(Button, {
|
|
59
|
+
onPress: handleClick,
|
|
60
|
+
text: buttonText
|
|
61
|
+
// White label on the filled (e.g. red Delete) button. Button
|
|
62
|
+
// applies an inline `color: color || 'black'` that overrides
|
|
63
|
+
// the filled-variant white, so pass it explicitly.
|
|
64
|
+
,
|
|
65
|
+
color: "#FFFFFF",
|
|
66
|
+
style: {
|
|
67
|
+
width: '100%',
|
|
68
|
+
backgroundColor: backgroundColorButton
|
|
69
|
+
},
|
|
70
|
+
unstyled: true,
|
|
71
|
+
variant: "filled"
|
|
72
|
+
})]
|
|
73
|
+
})]
|
|
74
|
+
});
|
|
31
75
|
return /*#__PURE__*/_jsx(Modal, {
|
|
32
76
|
transparent: true,
|
|
33
77
|
animationType: "fade",
|
|
34
78
|
visible: true,
|
|
35
79
|
onRequestClose: handleCloseModal,
|
|
36
80
|
children: /*#__PURE__*/_jsx(ModalBackground, {
|
|
37
|
-
children:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
81
|
+
children: compact ?
|
|
82
|
+
/*#__PURE__*/
|
|
83
|
+
// Dedicated small centered dialog. The base ModalContainer is
|
|
84
|
+
// flex:1 / width:100% / height:100% (full-screen); style-merge
|
|
85
|
+
// overrides proved unreliable, so confirm-style modals render in
|
|
86
|
+
// their own bounded View instead — never full-screen (#14).
|
|
87
|
+
// (Upstream also shrank this modal; this keeps that intent while
|
|
88
|
+
// adding the white filled-button label via `inner` below.)
|
|
89
|
+
_jsx(View, {
|
|
90
|
+
style: styles.compactDialog,
|
|
91
|
+
children: inner
|
|
92
|
+
}) : /*#__PURE__*/_jsx(ModalContainer, {
|
|
93
|
+
style: {
|
|
47
94
|
maxWidth: 640
|
|
48
95
|
},
|
|
49
|
-
children:
|
|
50
|
-
onPress: handleCloseModal,
|
|
51
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
52
|
-
style: {
|
|
53
|
-
fontSize: 24
|
|
54
|
-
},
|
|
55
|
-
children: "\xD7"
|
|
56
|
-
})
|
|
57
|
-
}), IconTitle ? /*#__PURE__*/_jsx(IconTitle, {}) : /*#__PURE__*/_jsx(ModalTitle, {
|
|
58
|
-
children: title
|
|
59
|
-
}), description && /*#__PURE__*/_jsx(ModalDescription, {
|
|
60
|
-
children: description
|
|
61
|
-
}), isTextarea && /*#__PURE__*/_jsx(GroupContainer, {
|
|
62
|
-
style: {
|
|
63
|
-
flexDirection: 'column',
|
|
64
|
-
position: 'relative'
|
|
65
|
-
}
|
|
66
|
-
}), !buttonText && /*#__PURE__*/_jsx(GroupContainer, {}), /*#__PURE__*/_jsxs(GroupContainer, {
|
|
67
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
|
68
|
-
onPress: handleCloseModal,
|
|
69
|
-
text: 'Cancel',
|
|
70
|
-
style: {
|
|
71
|
-
width: '100%'
|
|
72
|
-
},
|
|
73
|
-
unstyled: true,
|
|
74
|
-
variant: "outlined"
|
|
75
|
-
}), buttonText && /*#__PURE__*/_jsx(Button, {
|
|
76
|
-
onPress: handleClick,
|
|
77
|
-
text: buttonText,
|
|
78
|
-
style: {
|
|
79
|
-
width: '100%',
|
|
80
|
-
backgroundColor: backgroundColorButton
|
|
81
|
-
},
|
|
82
|
-
unstyled: true,
|
|
83
|
-
variant: "filled"
|
|
84
|
-
})]
|
|
85
|
-
})]
|
|
96
|
+
children: inner
|
|
86
97
|
})
|
|
87
98
|
})
|
|
88
99
|
});
|
|
89
100
|
};
|
|
101
|
+
const styles = StyleSheet.create({
|
|
102
|
+
compactDialog: {
|
|
103
|
+
width: '85%',
|
|
104
|
+
maxWidth: 360,
|
|
105
|
+
alignSelf: 'center',
|
|
106
|
+
backgroundColor: '#fff',
|
|
107
|
+
borderRadius: 16,
|
|
108
|
+
padding: 24,
|
|
109
|
+
gap: 16,
|
|
110
|
+
shadowColor: '#000',
|
|
111
|
+
shadowOffset: {
|
|
112
|
+
width: 0,
|
|
113
|
+
height: 4
|
|
114
|
+
},
|
|
115
|
+
shadowOpacity: 0.2,
|
|
116
|
+
shadowRadius: 12,
|
|
117
|
+
elevation: 8
|
|
118
|
+
}
|
|
119
|
+
});
|
|
90
120
|
//# sourceMappingURL=ModalWrapper.js.map
|