@droppii-org/chat-mobile 0.2.7 → 0.2.8
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/lib/module/components/AttachmentPreview.js +250 -0
- package/lib/module/components/AttachmentPreview.js.map +1 -0
- package/lib/module/components/MediaViewer/index.js +2 -0
- package/lib/module/components/MediaViewer/index.js.map +1 -0
- package/lib/module/components/MediaViewerModal.js +57 -0
- package/lib/module/components/MediaViewerModal.js.map +1 -0
- package/lib/module/components/MergedImageGrid.js +173 -0
- package/lib/module/components/MergedImageGrid.js.map +1 -0
- package/lib/module/components/ThreadCard/thread-card.utils.js +80 -4
- package/lib/module/components/ThreadCard/thread-card.utils.js.map +1 -1
- package/lib/module/components/messages/fileMessage/index.js +26 -0
- package/lib/module/components/messages/fileMessage/index.js.map +1 -0
- package/lib/module/components/messages/imageMessage/index.js +118 -0
- package/lib/module/components/messages/imageMessage/index.js.map +1 -0
- package/lib/module/components/messages/linkMessage/index.js +122 -0
- package/lib/module/components/messages/linkMessage/index.js.map +1 -0
- package/lib/module/components/messages/mergedMessage/index.js +37 -0
- package/lib/module/components/messages/mergedMessage/index.js.map +1 -0
- package/lib/module/components/messages/styles.js +41 -0
- package/lib/module/components/messages/styles.js.map +1 -0
- package/lib/module/components/messages/textMessage/index.js +38 -0
- package/lib/module/components/messages/textMessage/index.js.map +1 -0
- package/lib/module/components/messages/types.js +14 -0
- package/lib/module/components/messages/types.js.map +1 -0
- package/lib/module/components/messages/videoMessage/index.js +110 -0
- package/lib/module/components/messages/videoMessage/index.js.map +1 -0
- package/lib/module/config/api-endpoints.js +66 -0
- package/lib/module/config/api-endpoints.js.map +1 -0
- package/lib/module/config/attachment-priority.js +81 -0
- package/lib/module/config/attachment-priority.js.map +1 -0
- package/lib/module/config/configuration.js +50 -0
- package/lib/module/config/configuration.js.map +1 -0
- package/lib/module/config/index.js +22 -0
- package/lib/module/config/index.js.map +1 -0
- package/lib/module/core/index.js +19 -1
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/useChatListener.js +0 -14
- package/lib/module/core/useChatListener.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +10 -5
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useChatMessages.js +0 -3
- package/lib/module/hooks/useChatMessages.js.map +1 -1
- package/lib/module/hooks/useImageAttachment.js +263 -0
- package/lib/module/hooks/useImageAttachment.js.map +1 -0
- package/lib/module/hooks/useMediaViewer.js +24 -0
- package/lib/module/hooks/useMediaViewer.js.map +1 -0
- package/lib/module/hooks/useSendAttachment.js +182 -0
- package/lib/module/hooks/useSendAttachment.js.map +1 -0
- package/lib/module/hooks/useVideoAttachment.js +251 -0
- package/lib/module/hooks/useVideoAttachment.js.map +1 -0
- package/lib/module/index.js +13 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/MediaView/VideoPlayer.js +177 -0
- package/lib/module/screens/MediaView/VideoPlayer.js.map +1 -0
- package/lib/module/screens/MediaView/index.js +264 -0
- package/lib/module/screens/MediaView/index.js.map +1 -0
- package/lib/module/screens/chat-detail/ChatComposer.js +190 -196
- package/lib/module/screens/chat-detail/ChatComposer.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetail.js +94 -63
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +5 -13
- package/lib/module/screens/chat-detail/ChatListLegend.js.map +1 -1
- package/lib/module/screens/chat-detail/components/ChatInputActions.js +51 -0
- package/lib/module/screens/chat-detail/components/ChatInputActions.js.map +1 -0
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js +93 -0
- package/lib/module/screens/chat-detail/components/ChatMessageInput.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js +221 -0
- package/lib/module/screens/chat-detail/hooks/useAttachmentSendHandler.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js +114 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerAnimation.js.map +1 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js +26 -0
- package/lib/module/screens/chat-detail/hooks/useChatComposerState.js.map +1 -0
- package/lib/module/screens/chat-detail/index.js +0 -1
- package/lib/module/screens/chat-detail/index.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js +33 -13
- package/lib/module/screens/chat-detail/legend/LegendChatMessage.js.map +1 -1
- package/lib/module/screens/chat-detail/legend/messageTypes.js +15 -0
- package/lib/module/screens/chat-detail/legend/messageTypes.js.map +1 -0
- package/lib/module/screens/inbox/MessagesTab.js.map +1 -1
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js +61 -0
- package/lib/module/services/attachmentHandlers/fileAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js +54 -0
- package/lib/module/services/attachmentHandlers/imageAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentHandlers/index.js +12 -0
- package/lib/module/services/attachmentHandlers/index.js.map +1 -0
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js +85 -0
- package/lib/module/services/attachmentHandlers/videoAttachmentHandler.js.map +1 -0
- package/lib/module/services/attachmentOrchestrator.js +225 -0
- package/lib/module/services/attachmentOrchestrator.js.map +1 -0
- package/lib/module/services/auth.js +35 -0
- package/lib/module/services/auth.js.map +1 -0
- package/lib/module/services/endpoints.js +20 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/services/imageUpload.js +126 -0
- package/lib/module/services/imageUpload.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +22 -8
- package/lib/module/translation/resources/i18n.js.map +1 -1
- package/lib/module/types/attachment.js +2 -0
- package/lib/module/types/attachment.js.map +1 -0
- package/lib/module/types/attachmentHandler.js +20 -0
- package/lib/module/types/attachmentHandler.js.map +1 -0
- package/lib/module/types/imageUpload.js +2 -0
- package/lib/module/types/imageUpload.js.map +1 -0
- package/lib/module/types/message.js +1 -0
- package/lib/module/types/message.js.map +1 -1
- package/lib/module/utils/chatImageDimens.js +148 -0
- package/lib/module/utils/chatImageDimens.js.map +1 -0
- package/lib/module/utils/device.js +65 -0
- package/lib/module/utils/device.js.map +1 -0
- package/lib/module/utils/imageUrlOptimizer.js +41 -0
- package/lib/module/utils/imageUrlOptimizer.js.map +1 -0
- package/lib/module/utils/imageUtils.js +69 -0
- package/lib/module/utils/imageUtils.js.map +1 -0
- package/lib/module/utils/resolveMessageType.js +3 -0
- package/lib/module/utils/resolveMessageType.js.map +1 -1
- package/lib/module/utils/ui.js +17 -0
- package/lib/module/utils/ui.js.map +1 -0
- package/lib/module/utils/url.js +1 -1
- package/lib/module/utils/url.js.map +1 -1
- package/lib/module/utils/videoThumbnail.js +62 -0
- package/lib/module/utils/videoThumbnail.js.map +1 -0
- package/lib/typescript/src/components/AttachmentPreview.d.ts +28 -0
- package/lib/typescript/src/components/AttachmentPreview.d.ts.map +1 -0
- package/lib/typescript/src/components/MediaViewer/index.d.ts +1 -0
- package/lib/typescript/src/components/MediaViewer/index.d.ts.map +1 -0
- package/lib/typescript/src/components/MediaViewerModal.d.ts +10 -0
- package/lib/typescript/src/components/MediaViewerModal.d.ts.map +1 -0
- package/lib/typescript/src/components/MergedImageGrid.d.ts +16 -0
- package/lib/typescript/src/components/MergedImageGrid.d.ts.map +1 -0
- package/lib/typescript/src/components/ThreadCard/thread-card.utils.d.ts.map +1 -1
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/fileMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/imageMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts +9 -0
- package/lib/typescript/src/components/messages/linkMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/mergedMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/styles.d.ts +36 -0
- package/lib/typescript/src/components/messages/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/textMessage/index.d.ts +9 -0
- package/lib/typescript/src/components/messages/textMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/types.d.ts +10 -0
- package/lib/typescript/src/components/messages/types.d.ts.map +1 -0
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts +3 -0
- package/lib/typescript/src/components/messages/videoMessage/index.d.ts.map +1 -0
- package/lib/typescript/src/config/api-endpoints.d.ts +40 -0
- package/lib/typescript/src/config/api-endpoints.d.ts.map +1 -0
- package/lib/typescript/src/config/attachment-priority.d.ts +31 -0
- package/lib/typescript/src/config/attachment-priority.d.ts.map +1 -0
- package/lib/typescript/src/config/configuration.d.ts +30 -0
- package/lib/typescript/src/config/configuration.d.ts.map +1 -0
- package/lib/typescript/src/config/index.d.ts +15 -0
- package/lib/typescript/src/config/index.d.ts.map +1 -0
- package/lib/typescript/src/core/index.d.ts +13 -1
- package/lib/typescript/src/core/index.d.ts.map +1 -1
- package/lib/typescript/src/core/useChatListener.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useImageAttachment.d.ts +20 -0
- package/lib/typescript/src/hooks/useImageAttachment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useMediaViewer.d.ts +13 -0
- package/lib/typescript/src/hooks/useMediaViewer.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useSendAttachment.d.ts +59 -0
- package/lib/typescript/src/hooks/useSendAttachment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useVideoAttachment.d.ts +29 -0
- package/lib/typescript/src/hooks/useVideoAttachment.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +14 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts +12 -0
- package/lib/typescript/src/screens/MediaView/VideoPlayer.d.ts.map +1 -0
- package/lib/typescript/src/screens/MediaView/index.d.ts +11 -0
- package/lib/typescript/src/screens/MediaView/index.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatComposer.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetail.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatListLegend.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts +8 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatInputActions.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts +15 -0
- package/lib/typescript/src/screens/chat-detail/components/ChatMessageInput.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts +23 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useAttachmentSendHandler.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts +15 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerAnimation.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/hooks/useChatComposerState.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/index.d.ts +0 -2
- package/lib/typescript/src/screens/chat-detail/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts +3 -1
- package/lib/typescript/src/screens/chat-detail/legend/LegendChatMessage.d.ts.map +1 -1
- package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts +13 -0
- package/lib/typescript/src/screens/chat-detail/legend/messageTypes.d.ts.map +1 -0
- package/lib/typescript/src/screens/chat-detail/types.d.ts +4 -1
- package/lib/typescript/src/screens/chat-detail/types.d.ts.map +1 -1
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts +22 -0
- package/lib/typescript/src/services/attachmentHandlers/fileAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts +3 -0
- package/lib/typescript/src/services/attachmentHandlers/imageAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts +5 -0
- package/lib/typescript/src/services/attachmentHandlers/index.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts +31 -0
- package/lib/typescript/src/services/attachmentHandlers/videoAttachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts +5 -0
- package/lib/typescript/src/services/attachmentOrchestrator.d.ts.map +1 -0
- package/lib/typescript/src/services/auth.d.ts +19 -0
- package/lib/typescript/src/services/auth.d.ts.map +1 -0
- package/lib/typescript/src/services/endpoints.d.ts +11 -1
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/services/imageUpload.d.ts +7 -0
- package/lib/typescript/src/services/imageUpload.d.ts.map +1 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -1
- package/lib/typescript/src/types/attachment.d.ts +72 -0
- package/lib/typescript/src/types/attachment.d.ts.map +1 -0
- package/lib/typescript/src/types/attachmentHandler.d.ts +13 -0
- package/lib/typescript/src/types/attachmentHandler.d.ts.map +1 -0
- package/lib/typescript/src/types/imageUpload.d.ts +26 -0
- package/lib/typescript/src/types/imageUpload.d.ts.map +1 -0
- package/lib/typescript/src/types/message.d.ts +1 -0
- package/lib/typescript/src/types/message.d.ts.map +1 -1
- package/lib/typescript/src/utils/chatImageDimens.d.ts +34 -0
- package/lib/typescript/src/utils/chatImageDimens.d.ts.map +1 -0
- package/lib/typescript/src/utils/device.d.ts +7 -0
- package/lib/typescript/src/utils/device.d.ts.map +1 -0
- package/lib/typescript/src/utils/imageUrlOptimizer.d.ts +12 -0
- package/lib/typescript/src/utils/imageUrlOptimizer.d.ts.map +1 -0
- package/lib/typescript/src/utils/imageUtils.d.ts +9 -0
- package/lib/typescript/src/utils/imageUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/resolveMessageType.d.ts.map +1 -1
- package/lib/typescript/src/utils/ui.d.ts +13 -0
- package/lib/typescript/src/utils/ui.d.ts.map +1 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts +16 -0
- package/lib/typescript/src/utils/videoThumbnail.d.ts.map +1 -0
- package/package.json +15 -3
- package/src/components/AttachmentPreview.tsx +304 -0
- package/src/components/MediaViewer/index.tsx +0 -0
- package/src/components/MediaViewerModal.tsx +70 -0
- package/src/components/MergedImageGrid.tsx +238 -0
- package/src/components/ThreadCard/thread-card.utils.ts +95 -4
- package/src/components/messages/fileMessage/index.tsx +30 -0
- package/src/components/messages/imageMessage/index.tsx +137 -0
- package/src/components/messages/linkMessage/index.tsx +162 -0
- package/src/components/messages/mergedMessage/index.tsx +45 -0
- package/src/components/messages/styles.ts +39 -0
- package/src/components/messages/textMessage/index.tsx +53 -0
- package/src/components/messages/types.ts +22 -0
- package/src/components/messages/videoMessage/index.tsx +120 -0
- package/src/config/api-endpoints.ts +72 -0
- package/src/config/attachment-priority.ts +93 -0
- package/src/config/configuration.ts +50 -0
- package/src/config/index.ts +19 -0
- package/src/core/index.ts +25 -1
- package/src/core/useChatListener.ts +0 -21
- package/src/hooks/message/useSendMessage.ts +12 -5
- package/src/hooks/useChatMessages.ts +0 -4
- package/src/hooks/useImageAttachment.ts +348 -0
- package/src/hooks/useMediaViewer.ts +32 -0
- package/src/hooks/useSendAttachment.ts +295 -0
- package/src/hooks/useVideoAttachment.ts +334 -0
- package/src/index.tsx +13 -1
- package/src/screens/MediaView/VideoPlayer.tsx +211 -0
- package/src/screens/MediaView/index.tsx +327 -0
- package/src/screens/chat-detail/ChatComposer.tsx +206 -271
- package/src/screens/chat-detail/ChatDetail.tsx +142 -89
- package/src/screens/chat-detail/ChatListLegend.tsx +9 -11
- package/src/screens/chat-detail/components/ChatInputActions.tsx +71 -0
- package/src/screens/chat-detail/components/ChatMessageInput.tsx +127 -0
- package/src/screens/chat-detail/hooks/useAttachmentSendHandler.ts +291 -0
- package/src/screens/chat-detail/hooks/useChatComposerAnimation.ts +184 -0
- package/src/screens/chat-detail/hooks/useChatComposerState.ts +40 -0
- package/src/screens/chat-detail/index.ts +0 -2
- package/src/screens/chat-detail/legend/LegendChatMessage.tsx +47 -24
- package/src/screens/chat-detail/legend/messageTypes.tsx +13 -0
- package/src/screens/chat-detail/types.ts +5 -1
- package/src/screens/inbox/MessagesTab.tsx +1 -1
- package/src/services/attachmentHandlers/fileAttachmentHandler.ts +78 -0
- package/src/services/attachmentHandlers/imageAttachmentHandler.ts +54 -0
- package/src/services/attachmentHandlers/index.ts +10 -0
- package/src/services/attachmentHandlers/videoAttachmentHandler.ts +114 -0
- package/src/services/attachmentOrchestrator.ts +300 -0
- package/src/services/auth.ts +34 -0
- package/src/services/endpoints.ts +24 -1
- package/src/services/imageUpload.ts +162 -0
- package/src/translation/resources/i18n.ts +22 -8
- package/src/types/attachment.ts +85 -0
- package/src/types/attachmentHandler.ts +31 -0
- package/src/types/imageUpload.ts +28 -0
- package/src/types/message.ts +1 -0
- package/src/utils/chatImageDimens.ts +178 -0
- package/src/utils/device.ts +73 -0
- package/src/utils/imageUrlOptimizer.ts +56 -0
- package/src/utils/imageUtils.ts +76 -0
- package/src/utils/resolveMessageType.ts +2 -0
- package/src/utils/ui.ts +19 -0
- package/src/utils/url.ts +1 -1
- package/src/utils/videoThumbnail.ts +85 -0
- package/lib/module/screens/chat-detail/ChatList.js +0 -147
- package/lib/module/screens/chat-detail/ChatList.js.map +0 -1
- package/lib/module/screens/chat-detail/ChatTextBubble.js +0 -62
- package/lib/module/screens/chat-detail/ChatTextBubble.js.map +0 -1
- package/lib/module/screens/chat-detail/legend/message-types.js +0 -244
- package/lib/module/screens/chat-detail/legend/message-types.js.map +0 -1
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js +0 -24
- package/lib/module/screens/chat-detail/messages/ChatMessageBubble.js.map +0 -1
- package/lib/module/screens/chat-detail/messages/types.js +0 -4
- package/lib/module/screens/chat-detail/messages/types.js.map +0 -1
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/ChatList.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/ChatTextBubble.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts +0 -13
- package/lib/typescript/src/screens/chat-detail/legend/message-types.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts +0 -3
- package/lib/typescript/src/screens/chat-detail/messages/ChatMessageBubble.d.ts.map +0 -1
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts +0 -13
- package/lib/typescript/src/screens/chat-detail/messages/types.d.ts.map +0 -1
- package/src/screens/chat-detail/ChatList.tsx +0 -190
- package/src/screens/chat-detail/ChatTextBubble.tsx +0 -73
- package/src/screens/chat-detail/legend/message-types.tsx +0 -304
- package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +0 -23
- package/src/screens/chat-detail/messages/types.ts +0 -14
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { ScrollView, StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KColors, KLabel } from '@droppii/libs';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const formatDuration = seconds => {
|
|
8
|
+
const mins = Math.floor(seconds / 60);
|
|
9
|
+
const secs = seconds % 60;
|
|
10
|
+
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
11
|
+
};
|
|
12
|
+
const getAttachmentIcon = type => {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case 'image':
|
|
15
|
+
return 'image';
|
|
16
|
+
case 'video':
|
|
17
|
+
return 'play-circle';
|
|
18
|
+
case 'audio':
|
|
19
|
+
return 'music';
|
|
20
|
+
case 'document':
|
|
21
|
+
return 'file-document';
|
|
22
|
+
case 'file':
|
|
23
|
+
default:
|
|
24
|
+
return 'file';
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export const AttachmentPreview = /*#__PURE__*/memo(({
|
|
28
|
+
visible,
|
|
29
|
+
attachments,
|
|
30
|
+
onRemove
|
|
31
|
+
}) => {
|
|
32
|
+
if (!visible || !attachments?.length) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
36
|
+
paddingH: "0.75rem"
|
|
37
|
+
// paddingV="0.75rem"
|
|
38
|
+
,
|
|
39
|
+
brW: 1,
|
|
40
|
+
brC: KColors.palette.gray.w100,
|
|
41
|
+
background: KColors.white,
|
|
42
|
+
style: styles.container,
|
|
43
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
44
|
+
row: true,
|
|
45
|
+
alignItems: true,
|
|
46
|
+
minH: 70,
|
|
47
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
48
|
+
flex: true,
|
|
49
|
+
children: /*#__PURE__*/_jsx(ScrollView, {
|
|
50
|
+
horizontal: true,
|
|
51
|
+
showsHorizontalScrollIndicator: false,
|
|
52
|
+
scrollEventThrottle: 16,
|
|
53
|
+
contentContainerStyle: {
|
|
54
|
+
alignItems: 'center'
|
|
55
|
+
},
|
|
56
|
+
children: attachments.map((item, index) => {
|
|
57
|
+
const {
|
|
58
|
+
type,
|
|
59
|
+
metadata,
|
|
60
|
+
uploadProgress,
|
|
61
|
+
error,
|
|
62
|
+
isUploading,
|
|
63
|
+
thumbnailUrl
|
|
64
|
+
} = item;
|
|
65
|
+
const isImage = type === 'image';
|
|
66
|
+
const isVideo = type === 'video';
|
|
67
|
+
const hasPreview = isImage || isVideo;
|
|
68
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
69
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
70
|
+
style: styles.thumbnail,
|
|
71
|
+
center: true,
|
|
72
|
+
children: [isVideo && thumbnailUrl && /*#__PURE__*/_jsx(KImage.Base, {
|
|
73
|
+
uri: thumbnailUrl,
|
|
74
|
+
width: 48,
|
|
75
|
+
height: 48,
|
|
76
|
+
resizeMode: "cover"
|
|
77
|
+
}), isVideo && !thumbnailUrl && /*#__PURE__*/_jsx(KContainer.View, {
|
|
78
|
+
style: [styles.videoBg, styles.videoThumbnail]
|
|
79
|
+
}), isImage && /*#__PURE__*/_jsx(KImage.Base, {
|
|
80
|
+
uri: `file://${metadata.path}`,
|
|
81
|
+
width: 48,
|
|
82
|
+
height: 48
|
|
83
|
+
}), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
|
|
84
|
+
style: styles.iconOverlay,
|
|
85
|
+
center: true,
|
|
86
|
+
background: KColors.palette.gray.w100,
|
|
87
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
88
|
+
name: getAttachmentIcon(type),
|
|
89
|
+
provider: "MaterialCommunityIcons",
|
|
90
|
+
size: 24,
|
|
91
|
+
color: KColors.palette.primary.w400
|
|
92
|
+
})
|
|
93
|
+
}), isVideo && metadata.duration && /*#__PURE__*/_jsx(KContainer.View, {
|
|
94
|
+
style: styles.durationBadge,
|
|
95
|
+
center: true,
|
|
96
|
+
children: /*#__PURE__*/_jsx(KLabel.Text, {
|
|
97
|
+
typo: "TextXsNormal",
|
|
98
|
+
color: KColors.white,
|
|
99
|
+
style: styles.durationText,
|
|
100
|
+
children: formatDuration(metadata.duration / 1000)
|
|
101
|
+
})
|
|
102
|
+
}), !hasPreview && /*#__PURE__*/_jsx(KContainer.View, {
|
|
103
|
+
style: styles.typeIcon,
|
|
104
|
+
center: true,
|
|
105
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
106
|
+
name: getAttachmentIcon(type),
|
|
107
|
+
provider: "MaterialCommunityIcons",
|
|
108
|
+
size: 14,
|
|
109
|
+
color: KColors.white
|
|
110
|
+
})
|
|
111
|
+
}), error && /*#__PURE__*/_jsx(KContainer.View, {
|
|
112
|
+
style: styles.errorOverlay,
|
|
113
|
+
center: true,
|
|
114
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
115
|
+
name: "close-circle",
|
|
116
|
+
provider: "MaterialCommunityIcons",
|
|
117
|
+
size: 28,
|
|
118
|
+
color: KColors.white
|
|
119
|
+
})
|
|
120
|
+
}), isUploading && /*#__PURE__*/_jsx(KContainer.View, {
|
|
121
|
+
style: styles.progressOverlay,
|
|
122
|
+
center: true,
|
|
123
|
+
children: /*#__PURE__*/_jsxs(KLabel.Text, {
|
|
124
|
+
typo: "TextSmNormal",
|
|
125
|
+
color: KColors.white,
|
|
126
|
+
children: [uploadProgress, "%"]
|
|
127
|
+
})
|
|
128
|
+
})]
|
|
129
|
+
}), /*#__PURE__*/_jsx(KContainer.Touchable, {
|
|
130
|
+
style: styles.removeButton,
|
|
131
|
+
center: true,
|
|
132
|
+
br: "round",
|
|
133
|
+
background: KColors.black,
|
|
134
|
+
onPress: () => onRemove(type, index),
|
|
135
|
+
disabled: isUploading,
|
|
136
|
+
hitSlop: {
|
|
137
|
+
top: 10,
|
|
138
|
+
bottom: 10,
|
|
139
|
+
left: 10,
|
|
140
|
+
right: 10
|
|
141
|
+
},
|
|
142
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
143
|
+
name: "close",
|
|
144
|
+
provider: "MaterialCommunityIcons",
|
|
145
|
+
size: 14,
|
|
146
|
+
color: KColors.white
|
|
147
|
+
})
|
|
148
|
+
})]
|
|
149
|
+
}, `${type}-${index}`);
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
AttachmentPreview.displayName = 'AttachmentPreview';
|
|
157
|
+
const styles = StyleSheet.create({
|
|
158
|
+
container: {
|
|
159
|
+
// minHeight: 80,
|
|
160
|
+
},
|
|
161
|
+
thumbnail: {
|
|
162
|
+
position: 'relative',
|
|
163
|
+
width: 48,
|
|
164
|
+
height: 48,
|
|
165
|
+
borderRadius: 4,
|
|
166
|
+
overflow: 'hidden',
|
|
167
|
+
marginRight: 8,
|
|
168
|
+
backgroundColor: KColors.palette.gray.w50
|
|
169
|
+
},
|
|
170
|
+
durationBadge: {
|
|
171
|
+
position: 'absolute',
|
|
172
|
+
bottom: 4,
|
|
173
|
+
right: 4,
|
|
174
|
+
backgroundColor: 'rgba(0, 0, 0, 0.8)',
|
|
175
|
+
borderRadius: 3,
|
|
176
|
+
paddingVertical: 2,
|
|
177
|
+
paddingHorizontal: 4
|
|
178
|
+
},
|
|
179
|
+
durationText: {
|
|
180
|
+
fontSize: 11,
|
|
181
|
+
fontWeight: '600'
|
|
182
|
+
},
|
|
183
|
+
iconOverlay: {
|
|
184
|
+
width: 48,
|
|
185
|
+
height: 48,
|
|
186
|
+
borderRadius: 4
|
|
187
|
+
},
|
|
188
|
+
videoIcon: {
|
|
189
|
+
position: 'absolute',
|
|
190
|
+
top: 2,
|
|
191
|
+
right: 2,
|
|
192
|
+
backgroundColor: 'rgba(0, 0, 0, 0.6)',
|
|
193
|
+
borderRadius: 8,
|
|
194
|
+
width: 20,
|
|
195
|
+
height: 20
|
|
196
|
+
},
|
|
197
|
+
typeIcon: {
|
|
198
|
+
position: 'absolute',
|
|
199
|
+
bottom: 2,
|
|
200
|
+
right: 2,
|
|
201
|
+
backgroundColor: 'rgba(0, 0, 0, 0.7)',
|
|
202
|
+
borderRadius: 6,
|
|
203
|
+
width: 16,
|
|
204
|
+
height: 16
|
|
205
|
+
},
|
|
206
|
+
videoBg: {
|
|
207
|
+
width: 48,
|
|
208
|
+
height: 48,
|
|
209
|
+
borderRadius: 4
|
|
210
|
+
},
|
|
211
|
+
videoThumbnail: {
|
|
212
|
+
backgroundColor: KColors.black
|
|
213
|
+
},
|
|
214
|
+
progressOverlay: {
|
|
215
|
+
position: 'absolute',
|
|
216
|
+
top: 0,
|
|
217
|
+
left: 0,
|
|
218
|
+
right: 0,
|
|
219
|
+
bottom: 0,
|
|
220
|
+
backgroundColor: 'rgba(0, 0, 0, 0.6)'
|
|
221
|
+
},
|
|
222
|
+
errorOverlay: {
|
|
223
|
+
position: 'absolute',
|
|
224
|
+
top: 0,
|
|
225
|
+
left: 0,
|
|
226
|
+
right: 0,
|
|
227
|
+
bottom: 0,
|
|
228
|
+
backgroundColor: 'rgba(255, 59, 48, 0.8)'
|
|
229
|
+
},
|
|
230
|
+
removeButton: {
|
|
231
|
+
position: 'absolute',
|
|
232
|
+
top: -8,
|
|
233
|
+
right: 2,
|
|
234
|
+
width: 22,
|
|
235
|
+
height: 22,
|
|
236
|
+
shadowColor: '#000',
|
|
237
|
+
shadowOffset: {
|
|
238
|
+
width: 0,
|
|
239
|
+
height: 1
|
|
240
|
+
},
|
|
241
|
+
shadowOpacity: 0.2,
|
|
242
|
+
shadowRadius: 2,
|
|
243
|
+
elevation: 3
|
|
244
|
+
},
|
|
245
|
+
sendButton: {
|
|
246
|
+
width: 48,
|
|
247
|
+
height: 48
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
//# sourceMappingURL=AttachmentPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","ScrollView","StyleSheet","KContainer","KImage","KColors","KLabel","jsx","_jsx","jsxs","_jsxs","formatDuration","seconds","mins","Math","floor","secs","toString","padStart","getAttachmentIcon","type","AttachmentPreview","visible","attachments","onRemove","length","View","paddingH","brW","brC","palette","gray","w100","background","white","style","styles","container","children","row","alignItems","minH","flex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","contentContainerStyle","map","item","index","metadata","uploadProgress","error","isUploading","thumbnailUrl","isImage","isVideo","hasPreview","thumbnail","center","Base","uri","width","height","resizeMode","videoBg","videoThumbnail","path","iconOverlay","VectorIcons","name","provider","size","color","primary","w400","duration","durationBadge","Text","typo","durationText","typeIcon","errorOverlay","progressOverlay","Touchable","removeButton","br","black","onPress","disabled","hitSlop","top","bottom","left","right","displayName","create","position","borderRadius","overflow","marginRight","backgroundColor","w50","paddingVertical","paddingHorizontal","fontSize","fontWeight","videoIcon","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","sendButton"],"sourceRoot":"../../../src","sources":["components/AttachmentPreview.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/MediaViewer/index.tsx"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useImperativeHandle } from 'react';
|
|
4
|
+
import { Modal, StyleSheet } from 'react-native';
|
|
5
|
+
import MediaViewerScreen from "../screens/MediaView/index.js";
|
|
6
|
+
import { useMediaViewer } from "../hooks/useMediaViewer.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const MediaViewerModal = /*#__PURE__*/forwardRef(({
|
|
9
|
+
onDismiss
|
|
10
|
+
}, ref) => {
|
|
11
|
+
const {
|
|
12
|
+
visible,
|
|
13
|
+
mediaList,
|
|
14
|
+
initIndex,
|
|
15
|
+
show,
|
|
16
|
+
hide
|
|
17
|
+
} = useMediaViewer();
|
|
18
|
+
|
|
19
|
+
// Expose show method to parent via ref
|
|
20
|
+
useImperativeHandle(ref, () => ({
|
|
21
|
+
show
|
|
22
|
+
}), [show]);
|
|
23
|
+
const handleDismiss = () => {
|
|
24
|
+
hide();
|
|
25
|
+
onDismiss?.();
|
|
26
|
+
};
|
|
27
|
+
if (!visible || mediaList.length === 0) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const images = mediaList.map(item => ({
|
|
31
|
+
url: item.url,
|
|
32
|
+
isVideo: item.isVideo || false
|
|
33
|
+
}));
|
|
34
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
35
|
+
visible: visible,
|
|
36
|
+
transparent: false,
|
|
37
|
+
statusBarTranslucent: true,
|
|
38
|
+
style: styles.modal,
|
|
39
|
+
presentationStyle: "overFullScreen",
|
|
40
|
+
animationType: "fade",
|
|
41
|
+
onRequestClose: handleDismiss,
|
|
42
|
+
children: /*#__PURE__*/_jsx(MediaViewerScreen, {
|
|
43
|
+
images: images,
|
|
44
|
+
initIndex: initIndex,
|
|
45
|
+
pagination: images.length > 1,
|
|
46
|
+
onDismiss: handleDismiss,
|
|
47
|
+
download: true
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
MediaViewerModal.displayName = 'MediaViewerModal';
|
|
52
|
+
const styles = StyleSheet.create({
|
|
53
|
+
modal: {
|
|
54
|
+
flex: 1
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=MediaViewerModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useImperativeHandle","Modal","StyleSheet","MediaViewerScreen","useMediaViewer","jsx","_jsx","MediaViewerModal","onDismiss","ref","visible","mediaList","initIndex","show","hide","handleDismiss","length","images","map","item","url","isVideo","transparent","statusBarTranslucent","style","styles","modal","presentationStyle","animationType","onRequestClose","children","pagination","download","displayName","create","flex"],"sourceRoot":"../../../src","sources":["components/MediaViewerModal.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,mBAAmB,QAAQ,OAAO;AACvD,SAASC,KAAK,EAAEC,UAAU,QAAQ,cAAc;AAChD,OAAOC,iBAAiB,MAAM,+BAAsB;AACpD,SAASC,cAAc,QAAwB,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUzE,OAAO,MAAMC,gBAAgB,gBAAGR,UAAU,CAGxC,CAAC;EAAES;AAAU,CAAC,EAAEC,GAAG,KAAK;EACxB,MAAM;IAAEC,OAAO;IAAEC,SAAS;IAAEC,SAAS;IAAEC,IAAI;IAAEC;EAAK,CAAC,GAAGV,cAAc,CAAC,CAAC;;EAEtE;EACAJ,mBAAmB,CACjBS,GAAG,EACH,OAAO;IACLI;EACF,CAAC,CAAC,EACF,CAACA,IAAI,CACP,CAAC;EAED,MAAME,aAAa,GAAGA,CAAA,KAAM;IAC1BD,IAAI,CAAC,CAAC;IACNN,SAAS,GAAG,CAAC;EACf,CAAC;EAED,IAAI,CAACE,OAAO,IAAIC,SAAS,CAACK,MAAM,KAAK,CAAC,EAAE;IACtC,OAAO,IAAI;EACb;EAEA,MAAMC,MAAM,GAAGN,SAAS,CAACO,GAAG,CAAEC,IAAI,KAAM;IACtCC,GAAG,EAAED,IAAI,CAACC,GAAG;IACbC,OAAO,EAAEF,IAAI,CAACE,OAAO,IAAI;EAC3B,CAAC,CAAC,CAAC;EAEH,oBACEf,IAAA,CAACL,KAAK;IACJS,OAAO,EAAEA,OAAQ;IACjBY,WAAW,EAAE,KAAM;IACnBC,oBAAoB,EAAE,IAAK;IAC3BC,KAAK,EAAEC,MAAM,CAACC,KAAM;IACpBC,iBAAiB,EAAC,gBAAgB;IAClCC,aAAa,EAAC,MAAM;IACpBC,cAAc,EAAEd,aAAc;IAAAe,QAAA,eAE9BxB,IAAA,CAACH,iBAAiB;MAChBc,MAAM,EAAEA,MAAO;MACfL,SAAS,EAAEA,SAAU;MACrBmB,UAAU,EAAEd,MAAM,CAACD,MAAM,GAAG,CAAE;MAC9BR,SAAS,EAAEO,aAAc;MACzBiB,QAAQ;IAAA,CACT;EAAC,CACG,CAAC;AAEZ,CAAC,CAAC;AAEFzB,gBAAgB,CAAC0B,WAAW,GAAG,kBAAkB;AAEjD,MAAMR,MAAM,GAAGvB,UAAU,CAACgC,MAAM,CAAC;EAC/BR,KAAK,EAAE;IACLS,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useMemo, useState, useCallback } from 'react';
|
|
4
|
+
import { StyleSheet, useWindowDimensions } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
|
|
6
|
+
import ChatImageDimens from "../utils/chatImageDimens.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
/**
|
|
9
|
+
* Generic image grid for merged messages
|
|
10
|
+
* Layout: 1 image (1x1), 2 images (1x2), 3 images (1x3), 4+ images (2x2)
|
|
11
|
+
* Shows "+N more" overlay on last cell if images exceed limit
|
|
12
|
+
*/
|
|
13
|
+
export const MergedImageGrid = /*#__PURE__*/memo(({
|
|
14
|
+
images,
|
|
15
|
+
maxDisplay = 4,
|
|
16
|
+
onMediaPress
|
|
17
|
+
}) => {
|
|
18
|
+
const windowWidth = useWindowDimensions().width;
|
|
19
|
+
const [loadingState, setLoadingState] = useState({});
|
|
20
|
+
const displayedImages = useMemo(() => images.slice(0, maxDisplay), [images, maxDisplay]);
|
|
21
|
+
const hiddenCount = Math.max(0, images.length - maxDisplay);
|
|
22
|
+
|
|
23
|
+
// Calculate single image dimensions respecting aspect ratio and 80% width limit
|
|
24
|
+
const singleImageSize = useMemo(() => {
|
|
25
|
+
if (displayedImages.length !== 1) return null;
|
|
26
|
+
const image = displayedImages[0];
|
|
27
|
+
const pictureElem = image?.pictureElem;
|
|
28
|
+
const imgWidth = pictureElem?.width || pictureElem?.bigPicture?.width || 0;
|
|
29
|
+
const imgHeight = pictureElem?.height || pictureElem?.bigPicture?.height || 0;
|
|
30
|
+
const maxWidth = Math.floor(windowWidth * 0.8);
|
|
31
|
+
const aspectRatio = imgWidth && imgHeight ? imgWidth / imgHeight : 1;
|
|
32
|
+
|
|
33
|
+
// Calculate dimensions respecting aspect ratio and max width
|
|
34
|
+
let finalWidth = maxWidth;
|
|
35
|
+
let finalHeight = maxWidth / aspectRatio;
|
|
36
|
+
|
|
37
|
+
// If height exceeds reasonable limit, scale down
|
|
38
|
+
const maxHeight = 400;
|
|
39
|
+
if (finalHeight > maxHeight) {
|
|
40
|
+
finalHeight = maxHeight;
|
|
41
|
+
finalWidth = finalHeight * aspectRatio;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
width: Math.round(finalWidth),
|
|
45
|
+
height: Math.round(finalHeight)
|
|
46
|
+
};
|
|
47
|
+
}, [displayedImages, windowWidth]);
|
|
48
|
+
const mediaItems = useMemo(() => images.map(image => {
|
|
49
|
+
const pictureElem = image.pictureElem;
|
|
50
|
+
const imageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
|
|
51
|
+
return {
|
|
52
|
+
url: imageUrl
|
|
53
|
+
};
|
|
54
|
+
}).filter(item => Boolean(item.url)), [images]);
|
|
55
|
+
const handleImageLoadEnd = useCallback(index => {
|
|
56
|
+
setLoadingState(prev => ({
|
|
57
|
+
...prev,
|
|
58
|
+
[index]: false
|
|
59
|
+
}));
|
|
60
|
+
}, []);
|
|
61
|
+
const handleImagePress = useCallback(index => {
|
|
62
|
+
onMediaPress?.(mediaItems, index);
|
|
63
|
+
}, [onMediaPress, mediaItems]);
|
|
64
|
+
const initializeLoading = useMemo(() => {
|
|
65
|
+
const initial = {};
|
|
66
|
+
displayedImages.forEach((_, index) => {
|
|
67
|
+
initial[index] = true;
|
|
68
|
+
});
|
|
69
|
+
return initial;
|
|
70
|
+
}, [displayedImages]);
|
|
71
|
+
useMemo(() => {
|
|
72
|
+
setLoadingState(initializeLoading);
|
|
73
|
+
}, [initializeLoading]);
|
|
74
|
+
if (displayedImages.length === 0) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Calculate columns based on image count
|
|
79
|
+
let columns = 1;
|
|
80
|
+
if (displayedImages.length === 2) {
|
|
81
|
+
columns = 2; // 2 images: horizontal layout (1x2)
|
|
82
|
+
} else if (displayedImages.length === 3) {
|
|
83
|
+
columns = 3; // 3 images: horizontal layout (1x3)
|
|
84
|
+
} else if (displayedImages.length >= 4) {
|
|
85
|
+
columns = 2; // 4+ images: grid layout (2x2)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Use calculated aspect ratio for single image, 100x100 for multiple images
|
|
89
|
+
const cellSize = displayedImages.length === 1 && singleImageSize ? singleImageSize.width : 100;
|
|
90
|
+
const cellHeight = displayedImages.length === 1 && singleImageSize ? singleImageSize.height : cellSize;
|
|
91
|
+
const gap = 4;
|
|
92
|
+
const totalWidth = cellSize * columns + gap * (columns - 1);
|
|
93
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
94
|
+
style: [styles.grid, {
|
|
95
|
+
width: totalWidth
|
|
96
|
+
}],
|
|
97
|
+
children: displayedImages.map((image, index) => {
|
|
98
|
+
const pictureElem = image.pictureElem;
|
|
99
|
+
const imageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
|
|
100
|
+
if (!imageUrl) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Use dynamic optimization based on calculated dimensions
|
|
105
|
+
const optimizedUrl = ChatImageDimens.getOptimizedImageUrlWithDimensions(imageUrl, cellSize, cellHeight);
|
|
106
|
+
const isLastCell = index === displayedImages.length - 1;
|
|
107
|
+
const showHiddenCount = isLastCell && hiddenCount > 0;
|
|
108
|
+
const isImageLoading = loadingState[index] ?? true;
|
|
109
|
+
return /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
110
|
+
onPress: () => handleImagePress(index),
|
|
111
|
+
style: [styles.imageCell, {
|
|
112
|
+
width: cellSize,
|
|
113
|
+
height: cellHeight
|
|
114
|
+
}],
|
|
115
|
+
children: [/*#__PURE__*/_jsx(KImage.Base, {
|
|
116
|
+
uri: optimizedUrl,
|
|
117
|
+
width: cellSize,
|
|
118
|
+
height: cellHeight,
|
|
119
|
+
style: styles.image,
|
|
120
|
+
onLoadEnd: () => handleImageLoadEnd(index)
|
|
121
|
+
}), isImageLoading && /*#__PURE__*/_jsx(KContainer.View, {
|
|
122
|
+
style: styles.skeleton
|
|
123
|
+
}), showHiddenCount && /*#__PURE__*/_jsx(KContainer.View, {
|
|
124
|
+
style: styles.hiddenOverlay,
|
|
125
|
+
center: true,
|
|
126
|
+
children: /*#__PURE__*/_jsxs(KLabel.Text, {
|
|
127
|
+
typo: "TextMdBold",
|
|
128
|
+
color: KColors.white,
|
|
129
|
+
children: ["+", hiddenCount]
|
|
130
|
+
})
|
|
131
|
+
})]
|
|
132
|
+
}, `merged-image-${index}`);
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
MergedImageGrid.displayName = 'MergedImageGrid';
|
|
137
|
+
const styles = StyleSheet.create({
|
|
138
|
+
grid: {
|
|
139
|
+
flexDirection: 'row',
|
|
140
|
+
flexWrap: 'wrap',
|
|
141
|
+
gap: 4,
|
|
142
|
+
justifyContent: 'flex-start',
|
|
143
|
+
alignItems: 'flex-start'
|
|
144
|
+
},
|
|
145
|
+
imageCell: {
|
|
146
|
+
position: 'relative',
|
|
147
|
+
overflow: 'hidden',
|
|
148
|
+
borderRadius: 8,
|
|
149
|
+
backgroundColor: '#f0f0f0'
|
|
150
|
+
},
|
|
151
|
+
image: {
|
|
152
|
+
width: '100%',
|
|
153
|
+
height: '100%'
|
|
154
|
+
},
|
|
155
|
+
skeleton: {
|
|
156
|
+
position: 'absolute',
|
|
157
|
+
top: 0,
|
|
158
|
+
left: 0,
|
|
159
|
+
right: 0,
|
|
160
|
+
bottom: 0,
|
|
161
|
+
backgroundColor: '#f0f0f0',
|
|
162
|
+
borderRadius: 8
|
|
163
|
+
},
|
|
164
|
+
hiddenOverlay: {
|
|
165
|
+
position: 'absolute',
|
|
166
|
+
top: 0,
|
|
167
|
+
left: 0,
|
|
168
|
+
right: 0,
|
|
169
|
+
bottom: 0,
|
|
170
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=MergedImageGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useMemo","useState","useCallback","StyleSheet","useWindowDimensions","KContainer","KImage","KLabel","KColors","ChatImageDimens","jsx","_jsx","jsxs","_jsxs","MergedImageGrid","images","maxDisplay","onMediaPress","windowWidth","width","loadingState","setLoadingState","displayedImages","slice","hiddenCount","Math","max","length","singleImageSize","image","pictureElem","imgWidth","bigPicture","imgHeight","height","maxWidth","floor","aspectRatio","finalWidth","finalHeight","maxHeight","round","mediaItems","map","imageUrl","snapshotPicture","url","sourcePicture","filter","item","Boolean","handleImageLoadEnd","index","prev","handleImagePress","initializeLoading","initial","forEach","_","columns","cellSize","cellHeight","gap","totalWidth","View","style","styles","grid","children","optimizedUrl","getOptimizedImageUrlWithDimensions","isLastCell","showHiddenCount","isImageLoading","Touchable","onPress","imageCell","Base","uri","onLoadEnd","skeleton","hiddenOverlay","center","Text","typo","color","white","displayName","create","flexDirection","flexWrap","justifyContent","alignItems","position","overflow","borderRadius","backgroundColor","top","left","right","bottom"],"sourceRoot":"../../../src","sources":["components/MergedImageGrid.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { MessageType } from '@droppii/openim-rn-client-sdk';
|
|
4
|
+
import { DChatMessageType } from "../../types/message.js";
|
|
4
5
|
const extractTextContent = message => {
|
|
5
6
|
if (message.textElem?.content) return message.textElem.content;
|
|
6
7
|
try {
|
|
@@ -10,14 +11,89 @@ const extractTextContent = message => {
|
|
|
10
11
|
return message.content ?? '';
|
|
11
12
|
}
|
|
12
13
|
};
|
|
14
|
+
const formatDuration = seconds => {
|
|
15
|
+
const mins = Math.floor(seconds / 60);
|
|
16
|
+
const secs = seconds % 60;
|
|
17
|
+
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
18
|
+
};
|
|
19
|
+
const getMessagePreview = message => {
|
|
20
|
+
// Check custom message type first
|
|
21
|
+
if (message.contentType === MessageType.CustomMessage) {
|
|
22
|
+
try {
|
|
23
|
+
const data = JSON.parse(message.content);
|
|
24
|
+
const dataType = data.dataType || data.type;
|
|
25
|
+
if (dataType === DChatMessageType.Link) {
|
|
26
|
+
const linkText = data.content || data.title || 'Link';
|
|
27
|
+
return linkText;
|
|
28
|
+
}
|
|
29
|
+
if (dataType === DChatMessageType.Order) {
|
|
30
|
+
const orderCode = data.orderCode || data.code || '';
|
|
31
|
+
return `[Đơn hàng] ${orderCode}`;
|
|
32
|
+
}
|
|
33
|
+
} catch {
|
|
34
|
+
// Fall through to default
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Handle standard message types
|
|
39
|
+
switch (message.contentType) {
|
|
40
|
+
case MessageType.TextMessage:
|
|
41
|
+
return extractTextContent(message);
|
|
42
|
+
case MessageType.PictureMessage:
|
|
43
|
+
return '[Hình ảnh]';
|
|
44
|
+
case MessageType.VideoMessage:
|
|
45
|
+
try {
|
|
46
|
+
const videoData = JSON.parse(message.content);
|
|
47
|
+
const duration = videoData.duration || 0;
|
|
48
|
+
const durationStr = duration > 0 ? ` ${formatDuration(duration)}` : '';
|
|
49
|
+
return `[Video]${durationStr}`;
|
|
50
|
+
} catch {
|
|
51
|
+
return '[Video]';
|
|
52
|
+
}
|
|
53
|
+
case MessageType.FileMessage:
|
|
54
|
+
try {
|
|
55
|
+
const fileData = JSON.parse(message.content);
|
|
56
|
+
const fileName = fileData.fileName || fileData.name || 'File';
|
|
57
|
+
return `[File] ${fileName}`;
|
|
58
|
+
} catch {
|
|
59
|
+
return '[File]';
|
|
60
|
+
}
|
|
61
|
+
case MessageType.MergeMessage:
|
|
62
|
+
// Show image count for merged messages containing images
|
|
63
|
+
try {
|
|
64
|
+
const mergeData = message.mergeElem;
|
|
65
|
+
if (mergeData?.multiMessage) {
|
|
66
|
+
const imageCount = mergeData.multiMessage.filter(msg => msg.contentType === MessageType.PictureMessage).length;
|
|
67
|
+
if (imageCount > 0) {
|
|
68
|
+
return `${imageCount} [Hình ảnh]`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
} catch {
|
|
72
|
+
// Fall through to default
|
|
73
|
+
}
|
|
74
|
+
return '';
|
|
75
|
+
case MessageType.UrlTextMessage:
|
|
76
|
+
// Preview link message - show with [Link] prefix
|
|
77
|
+
const urlText = message?.urlTextElem?.content || message?.urlTextElem?.urls?.[0] || '';
|
|
78
|
+
console.log('message', urlText);
|
|
79
|
+
return urlText ? `[Link] ${urlText}` : '[Link]';
|
|
80
|
+
case MessageType.AtTextMessage:
|
|
81
|
+
case MessageType.QuoteMessage:
|
|
82
|
+
return extractTextContent(message);
|
|
83
|
+
default:
|
|
84
|
+
return '[Tin nhắn không được hỗ trợ]';
|
|
85
|
+
}
|
|
86
|
+
};
|
|
13
87
|
export const getLastMessageText = (message, currentUserId) => {
|
|
14
88
|
if (!message) return '';
|
|
15
|
-
|
|
16
|
-
|
|
89
|
+
const preview = getMessagePreview(message);
|
|
90
|
+
if (!preview) return '';
|
|
91
|
+
|
|
92
|
+
// Add sender name
|
|
17
93
|
if (currentUserId && message.sendID === currentUserId) {
|
|
18
|
-
return `Bạn: ${
|
|
94
|
+
return `Bạn: ${preview}`;
|
|
19
95
|
}
|
|
20
|
-
return
|
|
96
|
+
return preview;
|
|
21
97
|
};
|
|
22
98
|
export const formatTimestamp = ts => {
|
|
23
99
|
if (!ts) return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MessageType","extractTextContent","message","textElem","content","parsed","JSON","parse","
|
|
1
|
+
{"version":3,"names":["MessageType","DChatMessageType","extractTextContent","message","textElem","content","parsed","JSON","parse","formatDuration","seconds","mins","Math","floor","secs","toString","padStart","getMessagePreview","contentType","CustomMessage","data","dataType","type","Link","linkText","title","Order","orderCode","code","TextMessage","PictureMessage","VideoMessage","videoData","duration","durationStr","FileMessage","fileData","fileName","name","MergeMessage","mergeData","mergeElem","multiMessage","imageCount","filter","msg","length","UrlTextMessage","urlText","urlTextElem","urls","console","log","AtTextMessage","QuoteMessage","getLastMessageText","currentUserId","preview","sendID","formatTimestamp","ts","date","Date","isNaN","getTime","now","today","getFullYear","getMonth","getDate","yesterday","dateOnly","h","getHours","m","getMinutes","daysAgo","dayNames","getDay","d","mo"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/thread-card.utils.ts"],"mappings":"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","ignoreList":[]}
|