@droppii-org/chat-mobile 0.2.6 → 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/AvatarSection.js +4 -4
- package/lib/module/components/ThreadCard/AvatarSection.js.map +1 -1
- package/lib/module/components/ThreadCard/NamePrefixIcon.js +13 -16
- package/lib/module/components/ThreadCard/NamePrefixIcon.js.map +1 -1
- package/lib/module/components/ThreadCard/ThreadCard.js +13 -33
- package/lib/module/components/ThreadCard/ThreadCard.js.map +1 -1
- 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/context/ChatContext.js +7 -6
- package/lib/module/context/ChatContext.js.map +1 -1
- 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 +106 -0
- package/lib/module/hooks/message/useSendMessage.js.map +1 -0
- package/lib/module/hooks/useChatMessages.js +36 -121
- package/lib/module/hooks/useChatMessages.js.map +1 -1
- package/lib/module/hooks/useConversationList.js +29 -17
- package/lib/module/hooks/useConversationList.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/useLinkPreview/useLinkPreview.js +3 -2
- package/lib/module/hooks/useLinkPreview/useLinkPreview.js.map +1 -1
- 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 +106 -71
- package/lib/module/screens/chat-detail/ChatDetail.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatDetailHeader.js +5 -8
- package/lib/module/screens/chat-detail/ChatDetailHeader.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatLinkPreview.js +1 -1
- package/lib/module/screens/chat-detail/ChatLinkPreview.js.map +1 -1
- package/lib/module/screens/chat-detail/ChatListLegend.js +5 -15
- 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/conversationHeader.utils.js +7 -9
- package/lib/module/screens/chat-detail/conversationHeader.utils.js.map +1 -1
- 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 +32 -25
- 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/store/conversation.js +1 -1
- package/lib/module/store/conversation.js.map +1 -1
- package/lib/module/store/message.js +45 -0
- package/lib/module/store/message.js.map +1 -0
- package/lib/module/translation/resources/i18n.js +22 -2
- 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/chat.js +2 -7
- package/lib/module/types/chat.js.map +1 -1
- 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/conversation.js +34 -13
- package/lib/module/utils/conversation.js.map +1 -1
- 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/legendListMessage.js +0 -3
- package/lib/module/utils/legendListMessage.js.map +1 -1
- package/lib/module/utils/message.js +5 -8
- package/lib/module/utils/message.js.map +1 -1
- 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 +3 -3
- 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/AvatarSection.d.ts +2 -2
- package/lib/typescript/src/components/ThreadCard/AvatarSection.d.ts.map +1 -1
- package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts +3 -4
- package/lib/typescript/src/components/ThreadCard/NamePrefixIcon.d.ts.map +1 -1
- package/lib/typescript/src/components/ThreadCard/ThreadCard.d.ts.map +1 -1
- 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/context/ChatContext.d.ts +1 -1
- package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
- 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 +12 -0
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useChatMessages.d.ts +0 -1
- package/lib/typescript/src/hooks/useChatMessages.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useConversationList.d.ts +2 -1
- package/lib/typescript/src/hooks/useConversationList.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/useLinkPreview/useLinkPreview.d.ts.map +1 -1
- 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/ChatDetailHeader.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/ChatDetailHeader.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/conversationHeader.utils.d.ts +1 -1
- package/lib/typescript/src/screens/chat-detail/conversationHeader.utils.d.ts.map +1 -1
- 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 -3
- 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 +10 -8
- 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/store/message.d.ts +3 -0
- package/lib/typescript/src/store/message.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/chat.d.ts +28 -27
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/common.d.ts +1 -0
- package/lib/typescript/src/types/common.d.ts.map +1 -1
- 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/conversation.d.ts +3 -2
- package/lib/typescript/src/utils/conversation.d.ts.map +1 -1
- 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/legendListMessage.d.ts +0 -2
- package/lib/typescript/src/utils/legendListMessage.d.ts.map +1 -1
- package/lib/typescript/src/utils/message.d.ts.map +1 -1
- 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/url.d.ts +1 -1
- package/lib/typescript/src/utils/url.d.ts.map +1 -1
- 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/AvatarSection.tsx +5 -8
- package/src/components/ThreadCard/NamePrefixIcon.tsx +27 -38
- package/src/components/ThreadCard/ThreadCard.tsx +16 -30
- 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/context/ChatContext.tsx +12 -4
- package/src/core/index.ts +25 -1
- package/src/core/useChatListener.ts +0 -21
- package/src/hooks/message/useSendMessage.ts +143 -0
- package/src/hooks/useChatMessages.ts +69 -161
- package/src/hooks/useConversationList.ts +34 -16
- package/src/hooks/useImageAttachment.ts +348 -0
- package/src/hooks/useLinkPreview/useLinkPreview.ts +3 -2
- 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 +164 -104
- package/src/screens/chat-detail/ChatDetailHeader.tsx +4 -10
- package/src/screens/chat-detail/ChatLinkPreview.tsx +1 -1
- package/src/screens/chat-detail/ChatListLegend.tsx +10 -13
- 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/conversationHeader.utils.ts +11 -14
- 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 +44 -39
- package/src/screens/chat-detail/legend/messageTypes.tsx +13 -0
- package/src/screens/chat-detail/types.ts +11 -9
- 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/store/conversation.ts +1 -1
- package/src/store/message.ts +44 -0
- package/src/translation/resources/i18n.ts +22 -2
- package/src/types/attachment.ts +85 -0
- package/src/types/attachmentHandler.ts +31 -0
- package/src/types/chat.ts +31 -30
- package/src/types/common.ts +1 -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/conversation.ts +44 -17
- package/src/utils/device.ts +73 -0
- package/src/utils/imageUrlOptimizer.ts +56 -0
- package/src/utils/imageUtils.ts +76 -0
- package/src/utils/legendListMessage.ts +0 -5
- package/src/utils/message.ts +10 -12
- package/src/utils/resolveMessageType.ts +2 -0
- package/src/utils/ui.ts +19 -0
- package/src/utils/url.ts +3 -3
- 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 -122
- 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 -12
- 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 -149
- package/src/screens/chat-detail/messages/ChatMessageBubble.tsx +0 -23
- package/src/screens/chat-detail/messages/types.ts +0 -14
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback } from 'react';
|
|
4
|
-
import { StyleSheet } from 'react-native';
|
|
5
4
|
import { KContainer, KImage, KLabel, KColors } from '@droppii/libs';
|
|
6
|
-
import { DChatCategory } from "../../types/chat.js";
|
|
7
5
|
import { AvatarSection } from "./AvatarSection.js";
|
|
8
6
|
import { NamePrefixIcon } from "./NamePrefixIcon.js";
|
|
9
7
|
import { UnreadBadge } from "./UnreadBadge.js";
|
|
10
8
|
import { formatTimestamp, getLastMessageText } from "./thread-card.utils.js";
|
|
11
|
-
import Images from "../../assets/images/index.js";
|
|
12
9
|
import { useConversation, useUserStore } from "../../store/index.js";
|
|
13
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
11
|
const ThreadCard = /*#__PURE__*/memo(({
|
|
@@ -16,18 +13,19 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
16
13
|
onPress
|
|
17
14
|
}) => {
|
|
18
15
|
const {
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
peerType,
|
|
17
|
+
showName,
|
|
18
|
+
faceURL,
|
|
21
19
|
lastMessage,
|
|
22
20
|
unreadCount = 0,
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
recvMsgOpt,
|
|
22
|
+
isPinned,
|
|
25
23
|
applicationType,
|
|
26
|
-
chatType,
|
|
27
24
|
latestMsgSendTime
|
|
28
25
|
} = useConversation(item) ?? {};
|
|
29
|
-
const fullName =
|
|
26
|
+
const fullName = showName ?? '';
|
|
30
27
|
const hasUnread = unreadCount > 0;
|
|
28
|
+
const isMuted = (recvMsgOpt ?? 0) !== 0;
|
|
31
29
|
const timestamp = formatTimestamp(latestMsgSendTime ?? lastMessage?.sendTime ?? null);
|
|
32
30
|
const currentUserId = useUserStore(s => s.user?.userID);
|
|
33
31
|
const lastMessageText = getLastMessageText(lastMessage, currentUserId);
|
|
@@ -45,11 +43,10 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
45
43
|
onPress: handlePress,
|
|
46
44
|
activeOpacity: 0.7,
|
|
47
45
|
children: [/*#__PURE__*/_jsx(AvatarSection, {
|
|
48
|
-
avatar:
|
|
46
|
+
avatar: faceURL ?? null,
|
|
49
47
|
fullName: fullName,
|
|
50
|
-
|
|
51
|
-
applicationType: applicationType
|
|
52
|
-
chatType: chatType
|
|
48
|
+
peerType: peerType,
|
|
49
|
+
applicationType: applicationType
|
|
53
50
|
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
54
51
|
flex: true,
|
|
55
52
|
marginL: "0.5rem",
|
|
@@ -58,17 +55,7 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
58
55
|
row: true,
|
|
59
56
|
alignItems: "center",
|
|
60
57
|
children: [/*#__PURE__*/_jsx(NamePrefixIcon, {
|
|
61
|
-
|
|
62
|
-
chatType: chatType
|
|
63
|
-
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
64
|
-
visible:
|
|
65
|
-
// chatCategory === DChatCategory.BIZ_BOT_CRM ||
|
|
66
|
-
chatCategory === DChatCategory.BIZ_BOT_PDP,
|
|
67
|
-
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
68
|
-
uri: Images.ICON_BOT,
|
|
69
|
-
size: 14,
|
|
70
|
-
style: styles.botIcon
|
|
71
|
-
})
|
|
58
|
+
peerType: peerType
|
|
72
59
|
}), /*#__PURE__*/_jsx(KLabel.Text, {
|
|
73
60
|
typo: hasUnread ? 'TextMdBold' : 'TextMdNormal',
|
|
74
61
|
numberOfLines: 1,
|
|
@@ -76,7 +63,7 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
76
63
|
flex: true,
|
|
77
64
|
children: fullName
|
|
78
65
|
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
79
|
-
visible:
|
|
66
|
+
visible: isMuted,
|
|
80
67
|
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
81
68
|
marginL: "0.25rem",
|
|
82
69
|
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
@@ -105,7 +92,7 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
105
92
|
flex: true,
|
|
106
93
|
children: lastMessageText
|
|
107
94
|
}), /*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
108
|
-
visible: Boolean(
|
|
95
|
+
visible: Boolean(isPinned),
|
|
109
96
|
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
110
97
|
marginL: "0.5rem",
|
|
111
98
|
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
@@ -124,11 +111,4 @@ const ThreadCard = /*#__PURE__*/memo(({
|
|
|
124
111
|
});
|
|
125
112
|
ThreadCard.displayName = 'ThreadCard';
|
|
126
113
|
export default ThreadCard;
|
|
127
|
-
const styles = StyleSheet.create({
|
|
128
|
-
botIcon: {
|
|
129
|
-
width: 16,
|
|
130
|
-
height: 16,
|
|
131
|
-
marginRight: 4
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
114
|
//# sourceMappingURL=ThreadCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useCallback","
|
|
1
|
+
{"version":3,"names":["memo","useCallback","KContainer","KImage","KLabel","KColors","AvatarSection","NamePrefixIcon","UnreadBadge","formatTimestamp","getLastMessageText","useConversation","useUserStore","jsx","_jsx","jsxs","_jsxs","ThreadCard","item","onPress","peerType","showName","faceURL","lastMessage","unreadCount","recvMsgOpt","isPinned","applicationType","latestMsgSendTime","fullName","hasUnread","isMuted","timestamp","sendTime","currentUserId","s","user","userID","lastMessageText","handlePress","event","Touchable","row","alignItems","paddingH","paddingV","activeOpacity","children","avatar","View","flex","marginL","paddingB","Text","typo","numberOfLines","color","black","VisibleView","visible","VectorIcons","name","provider","size","palette","gray","w500","Boolean","w400","normal","count","displayName"],"sourceRoot":"../../../../src","sources":["components/ThreadCard/ThreadCard.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":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer, KLabel } from '@droppii/libs';
|
|
5
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
6
|
+
import { messageStyles } from "../styles.js";
|
|
7
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const FileMessage = /*#__PURE__*/memo(({
|
|
9
|
+
message,
|
|
10
|
+
isOutgoing
|
|
11
|
+
}) => {
|
|
12
|
+
const fileName = message.fileElem?.fileName || message.content || '[File]';
|
|
13
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
14
|
+
style: messageStyles.wrapper,
|
|
15
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
16
|
+
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
17
|
+
children: /*#__PURE__*/_jsxs(KLabel.Text, {
|
|
18
|
+
typo: "TextSmNormal",
|
|
19
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
20
|
+
children: ["\uD83D\uDCCE ", fileName]
|
|
21
|
+
})
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
FileMessage.displayName = 'FileMessage';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","KLabel","CHAT_BUBBLE_COLORS","messageStyles","jsxs","_jsxs","jsx","_jsx","FileMessage","message","isOutgoing","fileName","fileElem","content","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","Text","typo","color","text","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/fileMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,EAAEC,MAAM,QAAQ,eAAe;AAClD,SAASC,kBAAkB,QAAQ,2CAAwC;AAC3E,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,WAAW,gBAAGT,IAAI,CAC7B,CAAC;EAAEU,OAAO;EAAEC;AAAmC,CAAC,KAAK;EACnD,MAAMC,QAAQ,GAAGF,OAAO,CAACG,QAAQ,EAAED,QAAQ,IAAIF,OAAO,CAACI,OAAO,IAAI,QAAQ;EAE1E,oBACEN,IAAA,CAACP,UAAU,CAACc,IAAI;IAACC,KAAK,EAAEZ,aAAa,CAACa,OAAQ;IAAAC,QAAA,eAC5CV,IAAA,CAACP,UAAU,CAACc,IAAI;MACdC,KAAK,EAAE,CACLZ,aAAa,CAACe,MAAM,EACpBR,UAAU,GACNP,aAAa,CAACgB,UAAU,GACxBhB,aAAa,CAACiB,cAAc,CAChC;MAAAH,QAAA,eAEFZ,KAAA,CAACJ,MAAM,CAACoB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,KAAK,EAAErB,kBAAkB,CAACsB,IAAK;QAAAP,QAAA,GAAC,eAC5D,EAACN,QAAQ;MAAA,CACD;IAAC,CACC;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,WAAW,CAACiB,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useState, useCallback, useMemo } from 'react';
|
|
4
|
+
import { StyleSheet, Image, useWindowDimensions } from 'react-native';
|
|
5
|
+
import { KContainer, KImage } from '@droppii/libs';
|
|
6
|
+
import ChatImageDimens from "../../../utils/chatImageDimens.js";
|
|
7
|
+
import { messageStyles } from "../styles.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
export const ImageMessage = /*#__PURE__*/memo(({
|
|
10
|
+
message,
|
|
11
|
+
onMediaPress
|
|
12
|
+
}) => {
|
|
13
|
+
const windowWidth = useWindowDimensions().width;
|
|
14
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
15
|
+
const pictureElem = message.pictureElem;
|
|
16
|
+
const rawImageUrl = pictureElem?.snapshotPicture?.url || pictureElem?.bigPicture?.url || pictureElem?.sourcePicture?.url;
|
|
17
|
+
|
|
18
|
+
// Calculate dimensions respecting aspect ratio and 80% device width
|
|
19
|
+
const imageDimensions = useMemo(() => {
|
|
20
|
+
if (!rawImageUrl) return {
|
|
21
|
+
width: 250,
|
|
22
|
+
height: 250
|
|
23
|
+
};
|
|
24
|
+
const responseWidth = pictureElem?.width || pictureElem?.bigPicture?.width || pictureElem?.snapshotPicture?.width;
|
|
25
|
+
const responseHeight = pictureElem?.height || pictureElem?.bigPicture?.height || pictureElem?.snapshotPicture?.height;
|
|
26
|
+
let imgWidth = responseWidth;
|
|
27
|
+
let imgHeight = responseHeight;
|
|
28
|
+
|
|
29
|
+
// If no dimensions in response, try to resolve from image source
|
|
30
|
+
if (!imgWidth || !imgHeight) {
|
|
31
|
+
try {
|
|
32
|
+
const source = Image.resolveAssetSource({
|
|
33
|
+
uri: rawImageUrl
|
|
34
|
+
});
|
|
35
|
+
imgWidth = source?.width || 300;
|
|
36
|
+
imgHeight = source?.height || 300;
|
|
37
|
+
} catch {
|
|
38
|
+
// Fallback to default if resolution fails
|
|
39
|
+
imgWidth = 300;
|
|
40
|
+
imgHeight = 300;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const aspectRatio = imgWidth / imgHeight;
|
|
44
|
+
// Account for all margins/padding: use 75% of window width with buffer
|
|
45
|
+
const horizontalBuffer = 16; // Left and right combined buffer
|
|
46
|
+
const maxWidth = Math.floor(windowWidth * 0.75 - horizontalBuffer);
|
|
47
|
+
|
|
48
|
+
// Calculate final dimensions
|
|
49
|
+
let finalWidth = maxWidth;
|
|
50
|
+
let finalHeight = maxWidth / aspectRatio;
|
|
51
|
+
|
|
52
|
+
// Cap maximum height to avoid overly tall images
|
|
53
|
+
const maxHeight = 500;
|
|
54
|
+
if (finalHeight > maxHeight) {
|
|
55
|
+
finalHeight = maxHeight;
|
|
56
|
+
finalWidth = finalHeight * aspectRatio;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
width: Math.round(finalWidth),
|
|
60
|
+
height: Math.round(finalHeight)
|
|
61
|
+
};
|
|
62
|
+
}, [pictureElem, rawImageUrl, windowWidth]);
|
|
63
|
+
const handleLoadEnd = useCallback(() => {
|
|
64
|
+
setIsLoading(false);
|
|
65
|
+
}, []);
|
|
66
|
+
const handlePress = useCallback(() => {
|
|
67
|
+
onMediaPress?.([{
|
|
68
|
+
url: rawImageUrl
|
|
69
|
+
}], 0);
|
|
70
|
+
}, [onMediaPress, rawImageUrl]);
|
|
71
|
+
if (!rawImageUrl) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Use dynamic optimization matching calculated dimensions
|
|
76
|
+
const optimizedUrl = ChatImageDimens.getOptimizedImageUrlWithDimensions(rawImageUrl, imageDimensions.width, imageDimensions.height);
|
|
77
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
78
|
+
style: [messageStyles.wrapper, styles.wrapper],
|
|
79
|
+
children: /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
80
|
+
onPress: handlePress,
|
|
81
|
+
style: [messageStyles.imageBubble, styles.imageContainer, {
|
|
82
|
+
width: imageDimensions.width,
|
|
83
|
+
height: imageDimensions.height
|
|
84
|
+
}],
|
|
85
|
+
children: [/*#__PURE__*/_jsx(KImage.Base, {
|
|
86
|
+
uri: optimizedUrl,
|
|
87
|
+
width: imageDimensions.width,
|
|
88
|
+
height: imageDimensions.height,
|
|
89
|
+
style: [messageStyles.imageBubble],
|
|
90
|
+
onLoadEnd: handleLoadEnd
|
|
91
|
+
}), isLoading && /*#__PURE__*/_jsx(KContainer.View, {
|
|
92
|
+
style: styles.skeleton
|
|
93
|
+
})]
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
ImageMessage.displayName = 'ImageMessage';
|
|
98
|
+
const styles = StyleSheet.create({
|
|
99
|
+
wrapper: {
|
|
100
|
+
// paddingRight: 8,
|
|
101
|
+
overflow: 'hidden'
|
|
102
|
+
},
|
|
103
|
+
skeleton: {
|
|
104
|
+
position: 'absolute',
|
|
105
|
+
top: 0,
|
|
106
|
+
left: 0,
|
|
107
|
+
right: 0,
|
|
108
|
+
bottom: 0,
|
|
109
|
+
backgroundColor: '#f0f0f0',
|
|
110
|
+
borderRadius: 8
|
|
111
|
+
},
|
|
112
|
+
imageContainer: {
|
|
113
|
+
position: 'relative',
|
|
114
|
+
overflow: 'hidden',
|
|
115
|
+
borderRadius: 8
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useState","useCallback","useMemo","StyleSheet","Image","useWindowDimensions","KContainer","KImage","ChatImageDimens","messageStyles","jsx","_jsx","jsxs","_jsxs","ImageMessage","message","onMediaPress","windowWidth","width","isLoading","setIsLoading","pictureElem","rawImageUrl","snapshotPicture","url","bigPicture","sourcePicture","imageDimensions","height","responseWidth","responseHeight","imgWidth","imgHeight","source","resolveAssetSource","uri","aspectRatio","horizontalBuffer","maxWidth","Math","floor","finalWidth","finalHeight","maxHeight","round","handleLoadEnd","handlePress","optimizedUrl","getOptimizedImageUrlWithDimensions","View","style","wrapper","styles","children","Touchable","onPress","imageBubble","imageContainer","Base","onLoadEnd","skeleton","displayName","create","overflow","position","top","left","right","bottom","backgroundColor","borderRadius"],"sourceRoot":"../../../../../src","sources":["components/messages/imageMessage/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { Linking, StyleSheet } from 'react-native';
|
|
5
|
+
import { KContainer, KImage, KLabel, KColors, KSpacingValue } from '@droppii/libs';
|
|
6
|
+
import { formatMessageTime } from "../types.js";
|
|
7
|
+
import { CHAT_BUBBLE_COLORS } from "../../../screens/chat-detail/constants.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const parseUrlMetadata = ex => {
|
|
10
|
+
if (!ex) return undefined;
|
|
11
|
+
try {
|
|
12
|
+
const parsed = JSON.parse(ex);
|
|
13
|
+
// Handle nested urlMetadata structure
|
|
14
|
+
return parsed.urlMetadata || parsed;
|
|
15
|
+
} catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const renderTextWithLinks = (content, urls) => {
|
|
20
|
+
if (!urls.length) {
|
|
21
|
+
return /*#__PURE__*/_jsx(KLabel.Text, {
|
|
22
|
+
typo: "TextMdNormal",
|
|
23
|
+
children: content
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return /*#__PURE__*/_jsx(KLabel.Text, {
|
|
27
|
+
typo: "TextMdNormal",
|
|
28
|
+
color: CHAT_BUBBLE_COLORS.text,
|
|
29
|
+
children: content
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
export const LinkMessage = /*#__PURE__*/memo(({
|
|
33
|
+
message,
|
|
34
|
+
isOutgoing,
|
|
35
|
+
createdAtTime
|
|
36
|
+
}) => {
|
|
37
|
+
const content = message?.urlTextElem?.content;
|
|
38
|
+
const urls = message?.urlTextElem?.urls ?? [];
|
|
39
|
+
const metadata = parseUrlMetadata(message.ex);
|
|
40
|
+
const timeLabel = formatMessageTime(createdAtTime);
|
|
41
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
42
|
+
style: styles.wrapper,
|
|
43
|
+
children: [/*#__PURE__*/_jsxs(KContainer.View, {
|
|
44
|
+
style: [styles.bubble, isOutgoing ? styles.bubbleSent : styles.bubbleReceived],
|
|
45
|
+
children: [!!content?.trim() && /*#__PURE__*/_jsx(KContainer.View, {
|
|
46
|
+
style: styles.textRow,
|
|
47
|
+
children: renderTextWithLinks(content, urls)
|
|
48
|
+
}), metadata && /*#__PURE__*/_jsxs(KContainer.Touchable, {
|
|
49
|
+
style: styles.card,
|
|
50
|
+
onPress: () => metadata.url && Linking.openURL(metadata.url),
|
|
51
|
+
children: [!!metadata.image && /*#__PURE__*/_jsx(KContainer.View, {
|
|
52
|
+
style: styles.cardThumb,
|
|
53
|
+
children: /*#__PURE__*/_jsx(KImage.Base, {
|
|
54
|
+
uri: metadata.image,
|
|
55
|
+
style: StyleSheet.absoluteFill,
|
|
56
|
+
resizeMode: "cover"
|
|
57
|
+
})
|
|
58
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
59
|
+
style: styles.cardBody,
|
|
60
|
+
children: [!!metadata.title && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
61
|
+
typo: "TextNmMedium",
|
|
62
|
+
color: KColors.palette.gray.w900,
|
|
63
|
+
numberOfLines: 1,
|
|
64
|
+
children: metadata.title
|
|
65
|
+
}), !!metadata.url && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
66
|
+
typo: "TextXsMedium",
|
|
67
|
+
color: KColors.palette.primary.w400,
|
|
68
|
+
numberOfLines: 1,
|
|
69
|
+
children: metadata.url
|
|
70
|
+
}), !!metadata.description && /*#__PURE__*/_jsx(KLabel.Text, {
|
|
71
|
+
typo: "TextXsNormal",
|
|
72
|
+
color: KColors.gray.normal,
|
|
73
|
+
numberOfLines: 2,
|
|
74
|
+
children: metadata.description
|
|
75
|
+
})]
|
|
76
|
+
})]
|
|
77
|
+
})]
|
|
78
|
+
}), !isOutgoing && timeLabel ? /*#__PURE__*/_jsx(KLabel.Text, {
|
|
79
|
+
typo: "TextXsNormal",
|
|
80
|
+
color: CHAT_BUBBLE_COLORS.timestamp,
|
|
81
|
+
marginL: "0.25rem",
|
|
82
|
+
children: timeLabel
|
|
83
|
+
}) : null]
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
LinkMessage.displayName = 'LinkMessage';
|
|
87
|
+
const styles = StyleSheet.create({
|
|
88
|
+
wrapper: {
|
|
89
|
+
maxWidth: '80%'
|
|
90
|
+
},
|
|
91
|
+
bubble: {
|
|
92
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
93
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
94
|
+
borderRadius: KSpacingValue['1.25rem']
|
|
95
|
+
},
|
|
96
|
+
bubbleReceived: {
|
|
97
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
98
|
+
},
|
|
99
|
+
bubbleSent: {
|
|
100
|
+
backgroundColor: CHAT_BUBBLE_COLORS.sent
|
|
101
|
+
},
|
|
102
|
+
textRow: {
|
|
103
|
+
paddingHorizontal: KSpacingValue['0.25rem']
|
|
104
|
+
},
|
|
105
|
+
card: {
|
|
106
|
+
borderRadius: KSpacingValue['0.75rem'],
|
|
107
|
+
borderWidth: 1,
|
|
108
|
+
borderColor: 'rgba(57,62,64,0.1)',
|
|
109
|
+
backgroundColor: KColors.white,
|
|
110
|
+
overflow: 'hidden'
|
|
111
|
+
},
|
|
112
|
+
cardThumb: {
|
|
113
|
+
width: '100%',
|
|
114
|
+
aspectRatio: 16 / 9
|
|
115
|
+
},
|
|
116
|
+
cardBody: {
|
|
117
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
118
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
119
|
+
gap: 2
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Linking","StyleSheet","KContainer","KImage","KLabel","KColors","KSpacingValue","formatMessageTime","CHAT_BUBBLE_COLORS","jsx","_jsx","jsxs","_jsxs","parseUrlMetadata","ex","undefined","parsed","JSON","parse","urlMetadata","renderTextWithLinks","content","urls","length","Text","typo","children","color","text","LinkMessage","message","isOutgoing","createdAtTime","urlTextElem","metadata","timeLabel","View","style","styles","wrapper","bubble","bubbleSent","bubbleReceived","trim","textRow","Touchable","card","onPress","url","openURL","image","cardThumb","Base","uri","absoluteFill","resizeMode","cardBody","title","palette","gray","w900","numberOfLines","primary","w400","description","normal","timestamp","marginL","displayName","create","maxWidth","paddingHorizontal","paddingVertical","borderRadius","backgroundColor","received","sent","borderWidth","borderColor","white","overflow","width","aspectRatio","gap"],"sourceRoot":"../../../../../src","sources":["components/messages/linkMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,OAAO,EAAEC,UAAU,QAAQ,cAAc;AAClD,SACEC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,aAAa,QACR,eAAe;AAGtB,SAASC,iBAAiB,QAAQ,aAAU;AAC5C,SAASC,kBAAkB,QAAQ,2CAAwC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ5E,MAAMC,gBAAgB,GAAIC,EAAW,IAA+B;EAClE,IAAI,CAACA,EAAE,EAAE,OAAOC,SAAS;EACzB,IAAI;IACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,EAAE,CAAQ;IACpC;IACA,OAAOE,MAAM,CAACG,WAAW,IAAIH,MAAM;EACrC,CAAC,CAAC,MAAM;IACN,OAAOD,SAAS;EAClB;AACF,CAAC;AAED,MAAMK,mBAAmB,GAAGA,CAACC,OAAe,EAAEC,IAAc,KAAK;EAC/D,IAAI,CAACA,IAAI,CAACC,MAAM,EAAE;IAChB,oBAAOb,IAAA,CAACN,MAAM,CAACoB,IAAI;MAACC,IAAI,EAAC,cAAc;MAAAC,QAAA,EAAEL;IAAO,CAAc,CAAC;EACjE;EAEA,oBACEX,IAAA,CAACN,MAAM,CAACoB,IAAI;IAACC,IAAI,EAAC,cAAc;IAACE,KAAK,EAAEnB,kBAAkB,CAACoB,IAAK;IAAAF,QAAA,EAC7DL;EAAO,CACG,CAAC;AAElB,CAAC;AAED,OAAO,MAAMQ,WAAW,gBAAG9B,IAAI,CAC7B,CAAC;EAAE+B,OAAO;EAAEC,UAAU;EAAEC;AAAsC,CAAC,KAAK;EAClE,MAAMX,OAAO,GAAGS,OAAO,EAAEG,WAAW,EAAEZ,OAAO;EAC7C,MAAMC,IAAI,GAAGQ,OAAO,EAAEG,WAAW,EAAEX,IAAI,IAAI,EAAE;EAC7C,MAAMY,QAAQ,GAAGrB,gBAAgB,CAACiB,OAAO,CAAChB,EAAE,CAAC;EAC7C,MAAMqB,SAAS,GAAG5B,iBAAiB,CAACyB,aAAa,CAAC;EAElD,oBACEpB,KAAA,CAACV,UAAU,CAACkC,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAAAb,QAAA,gBACrCd,KAAA,CAACV,UAAU,CAACkC,IAAI;MACdC,KAAK,EAAE,CACLC,MAAM,CAACE,MAAM,EACbT,UAAU,GAAGO,MAAM,CAACG,UAAU,GAAGH,MAAM,CAACI,cAAc,CACtD;MAAAhB,QAAA,GAED,CAAC,CAACL,OAAO,EAAEsB,IAAI,CAAC,CAAC,iBAChBjC,IAAA,CAACR,UAAU,CAACkC,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACM,OAAQ;QAAAlB,QAAA,EACpCN,mBAAmB,CAACC,OAAO,EAAEC,IAAI;MAAC,CACpB,CAClB,EAEAY,QAAQ,iBACPtB,KAAA,CAACV,UAAU,CAAC2C,SAAS;QACnBR,KAAK,EAAEC,MAAM,CAACQ,IAAK;QACnBC,OAAO,EAAEA,CAAA,KAAMb,QAAQ,CAACc,GAAG,IAAIhD,OAAO,CAACiD,OAAO,CAACf,QAAQ,CAACc,GAAG,CAAE;QAAAtB,QAAA,GAE5D,CAAC,CAACQ,QAAQ,CAACgB,KAAK,iBACfxC,IAAA,CAACR,UAAU,CAACkC,IAAI;UAACC,KAAK,EAAEC,MAAM,CAACa,SAAU;UAAAzB,QAAA,eACvChB,IAAA,CAACP,MAAM,CAACiD,IAAI;YACVC,GAAG,EAAEnB,QAAQ,CAACgB,KAAM;YACpBb,KAAK,EAAEpC,UAAU,CAACqD,YAAa;YAC/BC,UAAU,EAAC;UAAO,CACnB;QAAC,CACa,CAClB,eACD3C,KAAA,CAACV,UAAU,CAACkC,IAAI;UAACC,KAAK,EAAEC,MAAM,CAACkB,QAAS;UAAA9B,QAAA,GACrC,CAAC,CAACQ,QAAQ,CAACuB,KAAK,iBACf/C,IAAA,CAACN,MAAM,CAACoB,IAAI;YACVC,IAAI,EAAC,cAAc;YACnBE,KAAK,EAAEtB,OAAO,CAACqD,OAAO,CAACC,IAAI,CAACC,IAAK;YACjCC,aAAa,EAAE,CAAE;YAAAnC,QAAA,EAEhBQ,QAAQ,CAACuB;UAAK,CACJ,CACd,EACA,CAAC,CAACvB,QAAQ,CAACc,GAAG,iBACbtC,IAAA,CAACN,MAAM,CAACoB,IAAI;YACVC,IAAI,EAAC,cAAc;YACnBE,KAAK,EAAEtB,OAAO,CAACqD,OAAO,CAACI,OAAO,CAACC,IAAK;YACpCF,aAAa,EAAE,CAAE;YAAAnC,QAAA,EAEhBQ,QAAQ,CAACc;UAAG,CACF,CACd,EACA,CAAC,CAACd,QAAQ,CAAC8B,WAAW,iBACrBtD,IAAA,CAACN,MAAM,CAACoB,IAAI;YACVC,IAAI,EAAC,cAAc;YACnBE,KAAK,EAAEtB,OAAO,CAACsD,IAAI,CAACM,MAAO;YAC3BJ,aAAa,EAAE,CAAE;YAAAnC,QAAA,EAEhBQ,QAAQ,CAAC8B;UAAW,CACV,CACd;QAAA,CACc,CAAC;MAAA,CACE,CACvB;IAAA,CACc,CAAC,EAEjB,CAACjC,UAAU,IAAII,SAAS,gBACvBzB,IAAA,CAACN,MAAM,CAACoB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBE,KAAK,EAAEnB,kBAAkB,CAAC0D,SAAU;MACpCC,OAAO,EAAC,SAAS;MAAAzC,QAAA,EAEhBS;IAAS,CACC,CAAC,GACZ,IAAI;EAAA,CACO,CAAC;AAEtB,CACF,CAAC;AAEDN,WAAW,CAACuC,WAAW,GAAG,aAAa;AAEvC,MAAM9B,MAAM,GAAGrC,UAAU,CAACoE,MAAM,CAAC;EAC/B9B,OAAO,EAAE;IACP+B,QAAQ,EAAE;EACZ,CAAC;EACD9B,MAAM,EAAE;IACN+B,iBAAiB,EAAEjE,aAAa,CAAC,SAAS,CAAC;IAC3CkE,eAAe,EAAElE,aAAa,CAAC,QAAQ,CAAC;IACxCmE,YAAY,EAAEnE,aAAa,CAAC,SAAS;EACvC,CAAC;EACDoC,cAAc,EAAE;IACdgC,eAAe,EAAElE,kBAAkB,CAACmE;EACtC,CAAC;EACDlC,UAAU,EAAE;IACViC,eAAe,EAAElE,kBAAkB,CAACoE;EACtC,CAAC;EACDhC,OAAO,EAAE;IACP2B,iBAAiB,EAAEjE,aAAa,CAAC,SAAS;EAC5C,CAAC;EACDwC,IAAI,EAAE;IACJ2B,YAAY,EAAEnE,aAAa,CAAC,SAAS,CAAC;IACtCuE,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,oBAAoB;IACjCJ,eAAe,EAAErE,OAAO,CAAC0E,KAAK;IAC9BC,QAAQ,EAAE;EACZ,CAAC;EACD7B,SAAS,EAAE;IACT8B,KAAK,EAAE,MAAM;IACbC,WAAW,EAAE,EAAE,GAAG;EACpB,CAAC;EACD1B,QAAQ,EAAE;IACRe,iBAAiB,EAAEjE,aAAa,CAAC,SAAS,CAAC;IAC3CkE,eAAe,EAAElE,aAAa,CAAC,QAAQ,CAAC;IACxC6E,GAAG,EAAE;EACP;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import { KContainer } from '@droppii/libs';
|
|
5
|
+
import { MergedImageGrid } from "../../MergedImageGrid.js";
|
|
6
|
+
import { messageStyles } from "../styles.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const MergedMessage = /*#__PURE__*/memo(({
|
|
9
|
+
message,
|
|
10
|
+
isOutgoing,
|
|
11
|
+
onMediaPress
|
|
12
|
+
}) => {
|
|
13
|
+
const mergeElem = message.mergeElem;
|
|
14
|
+
if (!mergeElem?.multiMessage) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const {
|
|
18
|
+
multiMessage
|
|
19
|
+
} = mergeElem;
|
|
20
|
+
const imageMessages = multiMessage.filter(msg => msg.contentType === 102);
|
|
21
|
+
return /*#__PURE__*/_jsx(KContainer.View, {
|
|
22
|
+
style: messageStyles.wrapper,
|
|
23
|
+
children: /*#__PURE__*/_jsx(KContainer.View, {
|
|
24
|
+
style: [messageStyles.bubble, isOutgoing ? messageStyles.bubbleSent : messageStyles.bubbleReceived],
|
|
25
|
+
children: imageMessages.length > 0 && /*#__PURE__*/_jsx(KContainer.View, {
|
|
26
|
+
marginB: "0.5rem",
|
|
27
|
+
children: /*#__PURE__*/_jsx(MergedImageGrid, {
|
|
28
|
+
images: imageMessages,
|
|
29
|
+
maxDisplay: 4,
|
|
30
|
+
onMediaPress: onMediaPress
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
MergedMessage.displayName = 'MergedMessage';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","KContainer","MergedImageGrid","messageStyles","jsx","_jsx","MergedMessage","message","isOutgoing","onMediaPress","mergeElem","multiMessage","imageMessages","filter","msg","contentType","View","style","wrapper","children","bubble","bubbleSent","bubbleReceived","length","marginB","images","maxDisplay","displayName"],"sourceRoot":"../../../../../src","sources":["components/messages/mergedMessage/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,eAAe,QAAQ,0BAAuB;AACvD,SAASC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG1C,OAAO,MAAMC,aAAa,gBAAGN,IAAI,CAC/B,CAAC;EAAEO,OAAO;EAAEC,UAAU;EAAEC;AAAqC,CAAC,KAAK;EACjE,MAAMC,SAAS,GAAIH,OAAO,CAASG,SAAS;EAE5C,IAAI,CAACA,SAAS,EAAEC,YAAY,EAAE;IAC5B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEA;EAAa,CAAC,GAAGD,SAAS;EAClC,MAAME,aAAa,GAAGD,YAAY,CAACE,MAAM,CACtCC,GAAQ,IAAKA,GAAG,CAACC,WAAW,KAAK,GACpC,CAAC;EAED,oBACEV,IAAA,CAACJ,UAAU,CAACe,IAAI;IAACC,KAAK,EAAEd,aAAa,CAACe,OAAQ;IAAAC,QAAA,eAC5Cd,IAAA,CAACJ,UAAU,CAACe,IAAI;MACdC,KAAK,EAAE,CACLd,aAAa,CAACiB,MAAM,EACpBZ,UAAU,GACNL,aAAa,CAACkB,UAAU,GACxBlB,aAAa,CAACmB,cAAc,CAChC;MAAAH,QAAA,EAEDP,aAAa,CAACW,MAAM,GAAG,CAAC,iBACvBlB,IAAA,CAACJ,UAAU,CAACe,IAAI;QAACQ,OAAO,EAAC,QAAQ;QAAAL,QAAA,eAC/Bd,IAAA,CAACH,eAAe;UACduB,MAAM,EAAEb,aAAc;UACtBc,UAAU,EAAE,CAAE;UACdjB,YAAY,EAAEA;QAAa,CAC5B;MAAC,CACa;IAClB,CACc;EAAC,CACH,CAAC;AAEtB,CACF,CAAC;AAEDH,aAAa,CAACqB,WAAW,GAAG,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
import { KSpacingValue } from '@droppii/libs';
|
|
5
|
+
import { CHAT_BUBBLE_COLORS } from "../../screens/chat-detail/constants.js";
|
|
6
|
+
export const messageStyles = StyleSheet.create({
|
|
7
|
+
wrapper: {
|
|
8
|
+
maxWidth: '80%'
|
|
9
|
+
},
|
|
10
|
+
bubble: {
|
|
11
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
12
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
13
|
+
borderRadius: KSpacingValue['1.25rem']
|
|
14
|
+
},
|
|
15
|
+
bubbleReceived: {
|
|
16
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
17
|
+
},
|
|
18
|
+
bubbleSent: {
|
|
19
|
+
backgroundColor: CHAT_BUBBLE_COLORS.sent
|
|
20
|
+
},
|
|
21
|
+
imageBubble: {
|
|
22
|
+
borderRadius: KSpacingValue['0.75rem']
|
|
23
|
+
},
|
|
24
|
+
videoPlaceholder: {
|
|
25
|
+
backgroundColor: CHAT_BUBBLE_COLORS.received
|
|
26
|
+
},
|
|
27
|
+
videoContainer: {
|
|
28
|
+
position: 'relative',
|
|
29
|
+
overflow: 'hidden',
|
|
30
|
+
borderRadius: KSpacingValue['0.75rem']
|
|
31
|
+
},
|
|
32
|
+
playButtonOverlay: {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
top: 0,
|
|
35
|
+
left: 0,
|
|
36
|
+
right: 0,
|
|
37
|
+
bottom: 0,
|
|
38
|
+
backgroundColor: 'rgba(0, 0, 0, 0.3)'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","KSpacingValue","CHAT_BUBBLE_COLORS","messageStyles","create","wrapper","maxWidth","bubble","paddingHorizontal","paddingVertical","borderRadius","bubbleReceived","backgroundColor","received","bubbleSent","sent","imageBubble","videoPlaceholder","videoContainer","position","overflow","playButtonOverlay","top","left","right","bottom"],"sourceRoot":"../../../../src","sources":["components/messages/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,kBAAkB,QAAQ,wCAAqC;AAExE,OAAO,MAAMC,aAAa,GAAGH,UAAU,CAACI,MAAM,CAAC;EAC7CC,OAAO,EAAE;IACPC,QAAQ,EAAE;EACZ,CAAC;EACDC,MAAM,EAAE;IACNC,iBAAiB,EAAEP,aAAa,CAAC,SAAS,CAAC;IAC3CQ,eAAe,EAAER,aAAa,CAAC,QAAQ,CAAC;IACxCS,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDU,cAAc,EAAE;IACdC,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDC,UAAU,EAAE;IACVF,eAAe,EAAEV,kBAAkB,CAACa;EACtC,CAAC;EACDC,WAAW,EAAE;IACXN,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDgB,gBAAgB,EAAE;IAChBL,eAAe,EAAEV,kBAAkB,CAACW;EACtC,CAAC;EACDK,cAAc,EAAE;IACdC,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE,QAAQ;IAClBV,YAAY,EAAET,aAAa,CAAC,SAAS;EACvC,CAAC;EACDoB,iBAAiB,EAAE;IACjBF,QAAQ,EAAE,UAAU;IACpBG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTb,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
|