From fc27361e37151221d2fb8203ec96f1d31c88b234 Mon Sep 17 00:00:00 2001 From: Jack Kingsman Date: Fri, 27 Feb 2026 18:48:39 -0800 Subject: [PATCH] Fix prefetch type glitch --- frontend/src/prefetch.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/frontend/src/prefetch.ts b/frontend/src/prefetch.ts index 3bb55d2..f5b7bdf 100644 --- a/frontend/src/prefetch.ts +++ b/frontend/src/prefetch.ts @@ -8,21 +8,21 @@ import type { AppSettings, Channel, Contact, RadioConfig, UnreadCounts } from './types'; interface PrefetchMap { - config?: Promise; - settings?: Promise; - channels?: Promise; - contacts?: Promise; - unreads?: Promise; - undecryptedCount?: Promise<{ count: number }>; + config: Promise; + settings: Promise; + channels: Promise; + contacts: Promise; + unreads: Promise; + undecryptedCount: Promise<{ count: number }>; } -const store: PrefetchMap = (window as unknown as { __prefetch?: PrefetchMap }).__prefetch ?? {}; +const store: Partial = + (window as unknown as { __prefetch?: Partial }).__prefetch ?? {}; -type PrefetchResolved = - PrefetchMap[K] extends Promise ? T : never; +type PrefetchResolved = Awaited; /** Take a prefetched promise (consumed once, then gone). */ -export function takePrefetch(key: K): PrefetchMap[K] { +export function takePrefetch(key: K): PrefetchMap[K] | undefined { const p = store[key]; delete store[key]; return p; @@ -42,7 +42,7 @@ export async function takePrefetchOrFetch( } try { - return await prefetched; + return (await prefetched) as PrefetchResolved; } catch (err) { console.warn(`Prefetch for "${String(key)}" failed, falling back to live fetch.`, err); return fallback();