From c86153b4e9615f60cd112776700a180b0438b882 Mon Sep 17 00:00:00 2001 From: Pranav Date: Mon, 15 Dec 2025 18:40:44 -0800 Subject: [PATCH] hotfix: Share not working --- .../year-in-review/ShareModal.vue | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue b/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue index 92f45a12b..130a7c4be 100644 --- a/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue +++ b/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue @@ -28,6 +28,7 @@ const { t } = useI18n(); const isGenerating = ref(false); const shareImageUrl = ref(null); +const shareImageBlob = ref(null); const generateImage = async () => { if (!props.slideElement) return; @@ -91,7 +92,7 @@ const generateImage = async () => { ); const logo = new Image(); - logo.src = '/brand-assets/logo.svg'; + logo.src = window.location.origin + '/brand-assets/logo.svg'; await new Promise(resolve => { logo.onload = resolve; }); @@ -104,6 +105,9 @@ const generateImage = async () => { ctx.drawImage(logo, logoX, logoY, logoWidth, logoHeight); shareImageUrl.value = finalCanvas.toDataURL('image/png'); + shareImageBlob.value = await new Promise(resolve => { + finalCanvas.toBlob(resolve, 'image/png'); + }); } catch (err) { // Handle errors silently for now // eslint-disable-next-line no-console @@ -126,11 +130,18 @@ const shareImage = async () => { if (!shareImageUrl.value) return; try { - const response = await fetch(shareImageUrl.value); - const blob = await response.blob(); - const file = new File([blob], `chatwoot-year-in-review-${props.year}.png`, { - type: 'image/png', - }); + if (!shareImageBlob.value) { + downloadImage(); + return; + } + + const file = new File( + [shareImageBlob.value], + `chatwoot-year-in-review-${props.year}.png`, + { + type: 'image/png', + } + ); if ( navigator.share && @@ -156,6 +167,7 @@ const shareImage = async () => { const close = () => { shareImageUrl.value = null; + shareImageBlob.value = null; emit('close'); };