From c3410de1d7862e474fe9ee6bbf88d4aa64c3a95b Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 23 Feb 2025 12:25:56 +0100 Subject: [PATCH] Refactor event handling to use Promises for better efficiency. --- src/pages/ankuendigungen/[...slug].astro | 25 ++++++++---------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/pages/ankuendigungen/[...slug].astro b/src/pages/ankuendigungen/[...slug].astro index f325f53..343337f 100644 --- a/src/pages/ankuendigungen/[...slug].astro +++ b/src/pages/ankuendigungen/[...slug].astro @@ -111,15 +111,13 @@ const ogImage = await getImage({ import type {ExtendedEvent} from "@type/event"; import {mount} from "svelte"; - const eventMounts: Map void)[]> = new Map(); + const eventMounts: Map> = new Map(); class FightTableElement extends HTMLElement { connectedCallback(): void { - if (!eventMounts.has(this.dataset["event"]!)) { - eventMounts.set(this.dataset["event"]!, []); - } + loadEvent(this.dataset["event"]!); const rows = Number.parseInt(this.dataset["rows"]!); - eventMounts.get(this.dataset["event"]!)!.push(ev => { + eventMounts.get(this.dataset["event"]!)!.then(ev => { mount(FightTable, { target: this, props: { @@ -134,11 +132,9 @@ const ogImage = await getImage({ class GroupTableElement extends HTMLElement { connectedCallback(): void { - if (!eventMounts.has(this.dataset["event"]!)) { - eventMounts.set(this.dataset["event"]!, []); - } + loadEvent(this.dataset["event"]!); const rows = Number.parseInt(this.dataset["rows"]!); - eventMounts.get(this.dataset["event"]!)!.push(ev => { + eventMounts.get(this.dataset["event"]!)!.then(ev => { mount(GroupTable, { target: this, props: { @@ -154,17 +150,12 @@ const ogImage = await getImage({ customElements.define("fight-table", FightTableElement); customElements.define("group-table", GroupTableElement); - function mountEvent() { - for (const key of eventMounts.keys()) { - get(eventRepo).getEvent(key).then(ev => { - for (const mount of eventMounts.get(key)!) { - mount(ev); - } - }); + function loadEvent(id: string) { + if (!eventMounts.has(id)) { + eventMounts.set(id, get(eventRepo).getEvent(id)); } } - document.addEventListener("astro:page-load", mountEvent); document.addEventListener("astro:before-swap", eventMounts.clear);