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;
|
|
|
|
|
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-10-18 11:28:20 +02:00
|
|
|
}
|