From 36e777aea57c46239de36b85c301049781274a94 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 27 Nov 2024 20:06:49 +0530 Subject: [PATCH] feat: file icon --- .../components-next/message/Message.vue | 7 +- .../components-next/message/bubbles/File.vue | 100 ++++++++++++++++++ 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 app/javascript/dashboard/components-next/message/bubbles/File.vue diff --git a/app/javascript/dashboard/components-next/message/Message.vue b/app/javascript/dashboard/components-next/message/Message.vue index 1470fb6a3..313ae6a0a 100644 --- a/app/javascript/dashboard/components-next/message/Message.vue +++ b/app/javascript/dashboard/components-next/message/Message.vue @@ -3,6 +3,8 @@ import { computed } from 'vue'; import { provideMessageContext } from './provider.js'; import { MESSAGE_TYPES, + MEDIA_TYPES, + ATTACHMENT_TYPES, MESSAGE_VARIANTS, SENDER_TYPES, ORIENTATION, @@ -14,6 +16,7 @@ import Avatar from 'next/avatar/Avatar.vue'; import TextBubble from './bubbles/Text.vue'; import ActivityBubble from './bubbles/Activity.vue'; import MediaBubble from './bubbles/Media.vue'; +import FileBubble from './bubbles/File.vue'; import MessageError from './MessageError.vue'; import MessageMeta from './MessageMeta.vue'; @@ -210,7 +213,9 @@ const shouldShowAvatar = computed(() => { const componentToRender = computed(() => { if (props.attachments.length === 1) { - return MediaBubble; + const fileType = props.attachments[0].fileType; + if (MEDIA_TYPES.includes(fileType)) return MediaBubble; + if (fileType === ATTACHMENT_TYPES.FILE) return FileBubble; } return TextBubble; diff --git a/app/javascript/dashboard/components-next/message/bubbles/File.vue b/app/javascript/dashboard/components-next/message/bubbles/File.vue new file mode 100644 index 000000000..0d907f68a --- /dev/null +++ b/app/javascript/dashboard/components-next/message/bubbles/File.vue @@ -0,0 +1,100 @@ + + +