import { getDiscoverItem } from "#lib/api/endpoints.js"; import type { DiscoverItem } from "#lib/api/types.js"; import { accounts } from "#lib/stores/accounts.svelte.js"; function createDiscover() { let items = $state>({}); let account: number | null = null; const pending = new Set(); function syncAccount() { if (accounts.selectedId !== account) { account = accounts.selectedId; items = {}; pending.clear(); } } return { async ensure(chatId: number) { syncAccount(); if (account === null || items[chatId] || pending.has(chatId)) { return; } pending.add(chatId); try { const item = await getDiscoverItem(chatId); items = { ...items, [chatId]: item }; } finally { pending.delete(chatId); } }, get(chatId: number): DiscoverItem | undefined { return items[chatId]; }, set(item: DiscoverItem) { items = { ...items, [item.chat_id]: item }; }, }; } export const discover = createDiscover();