From 5218cb2a5dc1ca97a2f351d9ab4956774ef10097 Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Fri, 28 Aug 2026 02:45:56 +0300 Subject: [PATCH] fix(example): share tooltip requests and allow retries after failure --- examples/demo/src/services/TooltipHelper.ts | 28 +++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/examples/demo/src/services/TooltipHelper.ts b/examples/demo/src/services/TooltipHelper.ts index 07389759..1d15d4a9 100644 --- a/examples/demo/src/services/TooltipHelper.ts +++ b/examples/demo/src/services/TooltipHelper.ts @@ -16,6 +16,7 @@ class TooltipHelper { private static _instance: TooltipHelper; private tooltips: Record = {}; private initialized = false; + private initialization?: Promise; static getInstance(): TooltipHelper { if (!TooltipHelper._instance) { @@ -24,20 +25,25 @@ class TooltipHelper { return TooltipHelper._instance; } - async init(): Promise { + init(): Promise { if (this.initialized) { - return; + return Promise.resolve(); } - try { - const response = await fetch(TOOLTIP_URL); - if (response.ok) { - const json = await response.json(); - this.tooltips = json as Record; - } - } catch { - // Tooltips are non-critical; silently ignore failures + if (!this.initialization) { + this.initialization = (async () => { + try { + const response = await fetch(TOOLTIP_URL); + if (!response.ok) return; + this.tooltips = (await response.json()) as Record; + this.initialized = true; + } catch { + // Tooltips are non-critical; silently ignore failures and allow a retry. + } + })().finally(() => { + this.initialization = undefined; + }); } - this.initialized = true; + return this.initialization; } getTooltip(key: string): TooltipData | undefined {