From 9ae59e80151247d467e2f0fb9a32aaecde984863 Mon Sep 17 00:00:00 2001 From: arianber7 Date: Sun, 9 Nov 2025 00:33:43 +0100 Subject: [PATCH] fix: [PROD-14867] handle refresh for superset guest tokens fix: [PROD-14867] handle refresh for superset guest tokens --- src/charts/SupersetEmbed/SupersetEmbed.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/charts/SupersetEmbed/SupersetEmbed.js b/src/charts/SupersetEmbed/SupersetEmbed.js index c2d980e3..8d20f1cd 100644 --- a/src/charts/SupersetEmbed/SupersetEmbed.js +++ b/src/charts/SupersetEmbed/SupersetEmbed.js @@ -13,21 +13,27 @@ export const SupersetEmbed = ({ options, }) => { const containerRef = useRef(null); + const tokenRef = useRef(guestToken); const [isEmbedded, setIsEmbedded] = useState(false); + const [dashboard, setDashboard] = useState(null); useEffect(() => { - const loadSuperset = async () => { - if (!guestToken || !report?.id || !options?.supersetUrl) return; + tokenRef.current = guestToken; + }, [guestToken]); + + useEffect(() => { + if (!report?.id || !options?.supersetUrl) return; + const loadSuperset = async () => { try { - setIsEmbedded(false); - await embedDashboard({ + const embedded = await embedDashboard({ id: report.id, supersetDomain: options.supersetUrl, mountPoint: containerRef.current, - fetchGuestToken: async () => guestToken, + fetchGuestToken: async () => tokenRef.current, dashboardUiConfig: report?.uiConfig || {}, }); + setDashboard(embedded); setIsEmbedded(true); } catch (error) { console.error('Superset embedding failed:', error); @@ -40,7 +46,12 @@ export const SupersetEmbed = ({ containerRef.current.children[0].style.width = '100%'; containerRef.current.children[0].style.height = '100%'; } - }, [guestToken, report, options]); + + return () => { + if (dashboard?.destroy) dashboard.destroy(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [report.id, options.supersetUrl]); return (