From e70f5bcce39ae19060be62aec8b75f75c26d1b9e Mon Sep 17 00:00:00 2001 From: kolaente Date: Fri, 6 Sep 2024 09:43:41 +0200 Subject: [PATCH] chore(attachments): refactor building image preview (cherry picked from commit 02c1de55c4b21863bb7500811e04bc0de9177089) --- .../components/tasks/partials/Attachments.vue | 6 +- .../components/tasks/partials/FilePreview.vue | 8 +- .../components/tasks/partials/KanbanCard.vue | 2 +- frontend/src/models/attachment.ts | 4 + frontend/src/services/attachment.ts | 9 +- pkg/models/task_attachment.go | 113 +++++++++++++++++- pkg/routes/api/v1/task_attachment.go | 15 +-- 7 files changed, 131 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/tasks/partials/Attachments.vue b/frontend/src/components/tasks/partials/Attachments.vue index dc84aaa27..d6ba21dae 100644 --- a/frontend/src/components/tasks/partials/Attachments.vue +++ b/frontend/src/components/tasks/partials/Attachments.vue @@ -180,7 +180,7 @@ import ProgressBar from '@/components/misc/ProgressBar.vue' import BaseButton from '@/components/base/BaseButton.vue' import AttachmentService from '@/services/attachment' -import {SUPPORTED_IMAGE_SUFFIX} from '@/models/attachment' +import {canPreview} from '@/models/attachment' import type {IAttachment} from '@/modelTypes/IAttachment' import type {ITask} from '@/modelTypes/ITask' @@ -274,10 +274,6 @@ async function viewOrDownload(attachment: IAttachment) { } } -function canPreview(attachment: IAttachment): boolean { - return SUPPORTED_IMAGE_SUFFIX.some((suffix) => attachment.file.name.toLowerCase().endsWith(suffix)) -} - const copy = useCopyToClipboard() function copyUrl(attachment: IAttachment) { diff --git a/frontend/src/components/tasks/partials/FilePreview.vue b/frontend/src/components/tasks/partials/FilePreview.vue index 306a2915e..4edde7e13 100644 --- a/frontend/src/components/tasks/partials/FilePreview.vue +++ b/frontend/src/components/tasks/partials/FilePreview.vue @@ -22,7 +22,7 @@ import {ref, shallowReactive, watchEffect} from 'vue' import AttachmentService from '@/services/attachment' import type {IAttachment} from '@/modelTypes/IAttachment' -import {SUPPORTED_IMAGE_SUFFIX} from '@/models/attachment' +import {canPreview} from '@/models/attachment' const props = defineProps<{ modelValue?: IAttachment @@ -33,13 +33,9 @@ const blobUrl = ref(undefined) watchEffect(async () => { if (props.modelValue && canPreview(props.modelValue)) { - blobUrl.value = await attachmentService.getBlobUrl(props.modelValue) + blobUrl.value = await attachmentService.getBlobUrl(props.modelValue, PREVIEW_SIZE.MD) } }) - -function canPreview(attachment: IAttachment): boolean { - return SUPPORTED_IMAGE_SUFFIX.some((suffix) => attachment.file.name.toLowerCase().endsWith(suffix)) -}