vigil/src/routes/+page.ts

60 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-10-07 09:36:42 +02:00
import { backend, type GuildEntry, type PostEntry } from '$lib/backend.js';
2025-10-07 11:46:05 +02:00
import { getMe, sleep } from '$lib/globals.svelte.js';
2025-09-12 19:20:30 +02:00
import type { LoadEvent } from '@sveltejs/kit';
2025-10-07 11:46:05 +02:00
let isFirstLoad = false;
2025-09-12 19:20:30 +02:00
async function loadFeed (event: LoadEvent): Promise<PostEntry[] | null> {
const resp = await backend.withEvent(event).fetch('home/feed');
2025-09-14 16:05:35 +02:00
if ([200].indexOf(resp.status) < 0) {
console.error(`fetch feed returned status ${resp.status}`);
return null;
}
2025-09-12 19:20:30 +02:00
try {
const respJ = await resp.json();
const { feed } : { feed: PostEntry[] } = respJ;
return feed;
} catch (e) {
return null;
}
}
2025-10-07 09:36:42 +02:00
async function loadTopGuilds (event: LoadEvent): Promise<GuildEntry[] | null> {
const resp = await backend.withEvent(event).fetch('top/guilds');
if ([200].indexOf(resp.status) < 0) {
console.error(`fetch top_guilds returned status ${resp.status}`);
return null;
}
try {
const respJ = await resp.json();
const { has: top_guilds } : { has: GuildEntry[] } = respJ;
console.log('top_guilds is', top_guilds);
return top_guilds;
} catch (e) {
return null;
}
}
export async function load(event): Promise<{feed: PostEntry[] | null, top_guilds?: GuildEntry[] | null}> {
2025-10-07 11:46:05 +02:00
// delay loading after layout
if (!isFirstLoad) {
await sleep(2000);
isFirstLoad = true;
}
2025-09-12 19:20:30 +02:00
let feed = null;
let me = getMe();
2025-10-07 09:36:42 +02:00
let top_guilds = null;
2025-09-12 19:20:30 +02:00
if (me) {
feed = await loadFeed(event);
2025-10-07 09:36:42 +02:00
top_guilds = await loadTopGuilds(event);
2025-09-12 19:20:30 +02:00
}
2025-10-07 09:36:42 +02:00
return { feed, top_guilds };
2025-09-12 19:20:30 +02:00
}