improve loading ux

This commit is contained in:
Yusur 2025-12-25 16:32:20 +01:00
parent edc38bb6a5
commit db37df4151
4 changed files with 17 additions and 6 deletions

View file

@ -1,7 +1,7 @@
{ {
"name": "@yusurko/vigil", "name": "@yusurko/vigil",
"private": true, "private": true,
"version": "0.1.0-dev50", "version": "0.1.0-dev51",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite dev", "dev": "vite dev",

View file

@ -4,14 +4,16 @@ import { RiListOrdered } from "svelte-remixicon";
let health : { let health : {
app_name: string, version: string, post_count: number, app_name: string, version: string, post_count: number,
user_count: number, me: null | UserEntry, color_theme: number user_count: number, me: null | UserEntry, color_theme: number,
loaded: boolean
} = $state({ } = $state({
app_name: 'app_name', app_name: 'Freak',
version: "?.?", version: "?.?",
post_count: NaN, post_count: NaN,
user_count: NaN, user_count: NaN,
me: null, me: null,
color_theme: 0 color_theme: 0,
loaded: false
}); });
@ -21,6 +23,7 @@ export function setHealth ({ name, version, post_count, user_count, color_theme
health.post_count = post_count; health.post_count = post_count;
health.user_count = user_count; health.user_count = user_count;
health.color_theme = color_theme; health.color_theme = color_theme;
health.loaded = true;
} }
export function setMe (me: UserEntry | null) { export function setMe (me: UserEntry | null) {
@ -61,3 +64,7 @@ export function randomChoice<T>(list: T[]): T {
export function getColorThemeCode (): number { export function getColorThemeCode (): number {
return health.color_theme; return health.color_theme;
} }
export function isLoaded(): boolean {
return health.loaded;
}

View file

@ -27,7 +27,7 @@ let colorThemeCls = $derived(`color-scheme-${colorScheme} color-theme-${colorThe
</script> </script>
<svelte:head> <svelte:head>
<meta name="og:site_name" content="app_name" /> <meta name="og:site_name" content="Freak" />
{#if data} {#if data}
<meta name="generator" content={`Freak (frontend ${version} + Svelte 5, backend ${bkVersion()}); https://nekode.yusur.moe/yusur/freak`} /> <meta name="generator" content={`Freak (frontend ${version} + Svelte 5, backend ${bkVersion()}); https://nekode.yusur.moe/yusur/freak`} />
{/if} {/if}

View file

@ -3,7 +3,7 @@
import type { GuildEntry, PostEntry } from "$lib/backend"; import type { GuildEntry, PostEntry } from "$lib/backend";
import Centered from "$lib/Centered.svelte"; import Centered from "$lib/Centered.svelte";
import Feed from "$lib/Feed.svelte"; import Feed from "$lib/Feed.svelte";
import { activePostCount, activeUserCount, appName, getMe } from "$lib/globals.svelte"; import { activePostCount, activeUserCount, appName, getMe, isLoaded } from "$lib/globals.svelte";
import HomeMenu from "$lib/HomeMenu.svelte"; import HomeMenu from "$lib/HomeMenu.svelte";
import SLayout from "$lib/SLayout.svelte"; import SLayout from "$lib/SLayout.svelte";
@ -46,6 +46,10 @@
{/if} {/if}
{/snippet} {/snippet}
</SLayout> </SLayout>
{:else if !isLoaded()}
<Centered>
<p>{appName()} is now loading…</p>
</Centered>
{:else} {:else}
<Centered> <Centered>
<p>{appName()} is a social media platform made by people like you.<br /> <p>{appName()} is a social media platform made by people like you.<br />