From 6abe3d4d88e8f48e0f43a5a7bceaa9cf3df3f981 Mon Sep 17 00:00:00 2001 From: Alexander Polyankin <alexander.polyankin@metabase.com> Date: Fri, 15 Mar 2024 13:13:50 +0200 Subject: [PATCH] Fix png download in safari in embedding (#40130) --- .../visualizations/lib/save-chart-image.ts | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/frontend/src/metabase/visualizations/lib/save-chart-image.ts b/frontend/src/metabase/visualizations/lib/save-chart-image.ts index 2019e9ceb2c..5324edafe02 100644 --- a/frontend/src/metabase/visualizations/lib/save-chart-image.ts +++ b/frontend/src/metabase/visualizations/lib/save-chart-image.ts @@ -28,14 +28,16 @@ export const saveChartImage = async (selector: string, fileName: string) => { node.classList.remove(SAVING_DOM_IMAGE_CLASS); - const link = document.createElement("a"); - - link.setAttribute("download", fileName); - link.setAttribute( - "href", - canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"), - ); - - link.click(); - link.remove(); + canvas.toBlob(blob => { + if (blob) { + const link = document.createElement("a"); + const url = URL.createObjectURL(blob); + link.rel = "noopener"; + link.download = fileName; + link.href = url; + link.click(); + link.remove(); + setTimeout(() => URL.revokeObjectURL(url), 60_000); + } + }); }; -- GitLab