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