diff --git a/src/lib/components/Navbar.svelte b/src/lib/components/Navbar.svelte index c2e80ead..6d691f7d 100644 --- a/src/lib/components/Navbar.svelte +++ b/src/lib/components/Navbar.svelte @@ -12,7 +12,7 @@ import MainMenu from '$/components/MainMenu.svelte'; import { Button } from '$/components/ui/button'; import { Separator } from '$/components/ui/separator'; - import { dismissPromotion, getActivePromotion } from '$lib/util/promos/promo'; + import { dismissPromotion, getActivePromotion } from '$lib/util/promos/promo.svelte'; import { untrack, type ComponentProps, type Snippet } from 'svelte'; import MermaidIcon from '~icons/custom/mermaid'; import CloseIcon from '~icons/material-symbols/close-rounded'; diff --git a/src/lib/util/promos/promo.ts b/src/lib/util/promos/promo.svelte.ts similarity index 76% rename from src/lib/util/promos/promo.ts rename to src/lib/util/promos/promo.svelte.ts index 48c82782..b5d729ef 100644 --- a/src/lib/util/promos/promo.ts +++ b/src/lib/util/promos/promo.svelte.ts @@ -2,8 +2,7 @@ import { env } from '$lib/util/env'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; import type { Component, Snippet } from 'svelte'; -import { get, writable, type Writable } from 'svelte/store'; -import { localStorage, persist } from '../persist'; +import { persisted } from '../persist.svelte'; import April2025 from './April2025.svelte'; import JS2026 from './JS2026.svelte'; @@ -35,25 +34,21 @@ export const dismissPromotion = (id?: string): void => { if (!id || !promotions[id]) { return; } - hiddenPromotionsStore.update((dismissedIDs) => { - dismissedIDs[id] = dayjs().add(promotions[id].hideDurationMs).valueOf(); - return dismissedIDs; - }); + hiddenPromotions.value = { + ...hiddenPromotions.value, + [id]: dayjs().add(promotions[id].hideDurationMs).valueOf() + }; }; -const hiddenPromotionsStore: Writable> = persist( - writable({}), - localStorage(), - 'hiddenPromotions' -); +const hiddenPromotions = persisted>('hiddenPromotions', {}); export const getActivePromotion = (): (Promotion & { id: string }) | undefined => { if (!env.isEnabledMermaidChartLinks) { return; } - const hidePromotionsUntil = get(hiddenPromotionsStore); - const now = new Date(); + const hidePromotionsUntil = hiddenPromotions.value; + const now = dayjs(); const promotionWithID = Object.entries(promotions) .filter( ([id, p]) =>