diff --git a/src/components/displays/department/tables/SelfServeTryModal.vue b/src/components/displays/department/tables/SelfServeTryModal.vue index c85e50e3..18789e88 100644 --- a/src/components/displays/department/tables/SelfServeTryModal.vue +++ b/src/components/displays/department/tables/SelfServeTryModal.vue @@ -85,7 +85,22 @@ const fetchData = async () => { tasks.value = await Promise.all(filteredTasks.map(async (task) => { try { const response = await SessionUser.objects.self_serve_tasks.attachments.list(task.id); - return { ...task, attachments: response.data || [] }; + const taskAttachments = response.data || []; + + // Fetch download links for images + const attachmentsWithLinks = await Promise.all(taskAttachments.map(async (att) => { + if (isImage(att)) { + try { + const dlResponse = await SessionUser.objects.self_serve_tasks.attachments.download(task.id, att.id); + att.download_link = dlResponse.data?.download_link || dlResponse.download_link; + } catch (err) { + console.error(`Error fetching download link for attachment ${att.id}:`, err); + } + } + return att; + })); + + return { ...task, attachments: attachmentsWithLinks }; } catch (e) { console.error(`Error fetching attachments for task ${task.id}:`, e); return { ...task, attachments: [] }; @@ -168,6 +183,13 @@ const isTaskActive = (taskId, visited = new Set()) => { return evaluateCondition(task.condition_id, visited); }; +const isImage = (attachment) => { + const filename = attachment.content?.other || ''; + const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg']; + const extension = filename.split('.').pop().toLowerCase(); + return imageExtensions.includes(extension); +}; + const downloadAttachment = async (taskId, attachmentId) => { try { const response = await SessionUser.objects.self_serve_tasks.attachments.download(taskId, attachmentId); @@ -340,11 +362,16 @@ const getConditionById = (id) => { {{ t.task }}
{{ t.description }}
{{ task.task }}
{{ task.description }}