From cd92a4b12ef17a4014c6cb170c2e1dc4ba02c646 Mon Sep 17 00:00:00 2001 From: Yusur Princeps Date: Tue, 7 Oct 2025 11:46:05 +0200 Subject: [PATCH] add upvote count, fix loading issues --- src/lib/FullPost.svelte | 18 +++++++++++++++++ src/lib/VoteButton.svelte | 41 +++++++++++++++++++++++++++++++++++++++ src/lib/globals.svelte.ts | 3 +++ src/routes/+page.ts | 9 ++++++++- 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/lib/VoteButton.svelte diff --git a/src/lib/FullPost.svelte b/src/lib/FullPost.svelte index 0eeb0be..142b0e4 100644 --- a/src/lib/FullPost.svelte +++ b/src/lib/FullPost.svelte @@ -10,6 +10,7 @@ import PostMeta from "./PostMeta.svelte"; import GuildMenu from "./GuildMenu.svelte"; import { SvelteShowdown } from "svelte-showdown"; + import VoteButton from "./VoteButton.svelte"; @@ -32,6 +33,7 @@ let { title, created_at, id, content = '', to } = post;
+
@@ -56,7 +58,23 @@ let { title, created_at, id, content = '', to } = post; \ No newline at end of file diff --git a/src/lib/VoteButton.svelte b/src/lib/VoteButton.svelte new file mode 100644 index 0000000..56e5ac5 --- /dev/null +++ b/src/lib/VoteButton.svelte @@ -0,0 +1,41 @@ + + +
+ {#if vote > 0} + + {:else} + + {/if} + + {score ?? '-'} + + {#if vote > 0} + + {:else} + + {/if} +
+ + + diff --git a/src/lib/globals.svelte.ts b/src/lib/globals.svelte.ts index b75c147..26db889 100644 --- a/src/lib/globals.svelte.ts +++ b/src/lib/globals.svelte.ts @@ -47,3 +47,6 @@ export function activeUserCount (): number{ return health.user_count || 0; } +export async function sleep (ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)); +} \ No newline at end of file diff --git a/src/routes/+page.ts b/src/routes/+page.ts index a1f2924..b800451 100644 --- a/src/routes/+page.ts +++ b/src/routes/+page.ts @@ -1,7 +1,8 @@ import { backend, type GuildEntry, type PostEntry } from '$lib/backend.js'; -import { getMe } from '$lib/globals.svelte.js'; +import { getMe, sleep } from '$lib/globals.svelte.js'; import type { LoadEvent } from '@sveltejs/kit'; +let isFirstLoad = false; async function loadFeed (event: LoadEvent): Promise { const resp = await backend.withEvent(event).fetch('home/feed'); @@ -40,6 +41,12 @@ async function loadTopGuilds (event: LoadEvent): Promise { } export async function load(event): Promise<{feed: PostEntry[] | null, top_guilds?: GuildEntry[] | null}> { + // delay loading after layout + if (!isFirstLoad) { + await sleep(2000); + isFirstLoad = true; + } + let feed = null; let me = getMe(); let top_guilds = null;