diff --git a/web/app/src/lib/components/ui/ShiorikoImage.svelte b/web/app/src/lib/components/ui/ShiorikoImage.svelte index 12f0419..4eab0cc 100644 --- a/web/app/src/lib/components/ui/ShiorikoImage.svelte +++ b/web/app/src/lib/components/ui/ShiorikoImage.svelte @@ -3,6 +3,7 @@ let { alt, src } = $props(); let loading = $state(false); + let failed = $state(false); onMount(() => { const img = new Image(); @@ -11,13 +12,22 @@ img.onload = () => { loading = false; + failed = false; }; img.onerror = () => { loading = true; + failed = true; }; }) +{#if !failed} +
+{:else} +
+ There was an error loading this image. +
+{/if} diff --git a/web/app/src/lib/components/ui/TagLinkNumbered.svelte b/web/app/src/lib/components/ui/TagLinkNumbered.svelte index db80d70..a3e8a65 100644 --- a/web/app/src/lib/components/ui/TagLinkNumbered.svelte +++ b/web/app/src/lib/components/ui/TagLinkNumbered.svelte @@ -9,7 +9,9 @@ - {tagDisplay} + + {tagDisplay} + {num} diff --git a/web/app/src/routes/post/[id]/+page.svelte b/web/app/src/routes/post/[id]/+page.svelte index b885ec7..4a580fd 100644 --- a/web/app/src/routes/post/[id]/+page.svelte +++ b/web/app/src/routes/post/[id]/+page.svelte @@ -15,6 +15,7 @@ post = data; imagePercentage = ((1000 * 100) / post.width).toFixed(0) + "%"; }; + let loading = $state(false); let isOriginal = $state(false); const trimUrl = (str: string) => { @@ -53,11 +54,11 @@ let imagePercentage = $state("0%"); -{#if post} -
-
-
-
+
+
+
+
+ {#if post} {#if editMenuShown == false && deleteMenuShown == false}
{/if} -
-
+ {:else} +
+ +
+ {/if} +
+
+ {#if post} {#if post.width > 1000 && isOriginal == false}
Resized to {imagePercentage} of the original image. @@ -101,15 +108,19 @@ {:else} -
- Currently viewing original image. -
+
+ Currently viewing original image. +
{/if} -
+ {:else} +
+ +
+ {/if}
-
-
-{/if} +
+
+
\ No newline at end of file diff --git a/web/app/src/routes/posts/+page.svelte b/web/app/src/routes/posts/+page.svelte index cf9a695..a64b0c6 100644 --- a/web/app/src/routes/posts/+page.svelte +++ b/web/app/src/routes/posts/+page.svelte @@ -23,6 +23,7 @@ let tags = $state([]); let tagInfo = $state(null); let categorizedTags = {}; + let loading = $state(false); const getData = async () => { const data = await getPosts({ page, q: searchTerms.join("+") }); @@ -49,6 +50,7 @@ if (searchTerms.filter((x) => !x.startsWith("-")).length == 1) { tagInfo = await getTag({ tag: searchTerms[0] }); } + loading = false; }; let tagQuery = $state(); @@ -62,6 +64,7 @@ }; afterNavigate(() => { + loading = true; tagQuery = url.searchParams.get("tags"); if (tagQuery) { searchTerms = tagQuery.split(" "); @@ -99,7 +102,7 @@
-
Tags
+
Menu
@@ -128,21 +131,30 @@
- + {#if !loading} +
+ Tags: +
+
+ +
+ {:else} +
+ {/if}
{#if tagInfo} @@ -169,55 +181,64 @@
+ {:else} +
+
+
+ {/if}
diff --git a/web/app/src/routes/tags/+page.svelte b/web/app/src/routes/tags/+page.svelte index 0be2538..6cf44fe 100644 --- a/web/app/src/routes/tags/+page.svelte +++ b/web/app/src/routes/tags/+page.svelte @@ -6,13 +6,16 @@ import TagTypeIndicator from '$lib/components/ui/TagTypeIndicator.svelte'; let tags = $state([]); + let loading = $state(false); const getData = async () => { const data = await getTags(); tags = data; + loading = false; }; afterNavigate(() => { + loading = true; getData(); }) @@ -21,6 +24,7 @@

Tag List

+ {#if !loading} @@ -41,5 +45,8 @@ {/each}
+ {:else} +
+ {/if}
\ No newline at end of file diff --git a/web/app/src/routes/tags/[tag]/+page.svelte b/web/app/src/routes/tags/[tag]/+page.svelte index 8a91a46..3dffdab 100644 --- a/web/app/src/routes/tags/[tag]/+page.svelte +++ b/web/app/src/routes/tags/[tag]/+page.svelte @@ -8,7 +8,6 @@ import EditTagPanel from "$lib/components/panels/EditTagPanel.svelte"; import PostGallery from "$lib/components/ui/PostGallery.svelte"; - import { page } from "$app/stores"; let { tag } = $state($page.params); @@ -51,9 +50,9 @@
- {#if data} -
-
+
+
+ {#if data} {#if renameMenuShown} {/if} -
-
+ {:else} +
+ {/if} +
+
+ {#if data} {#if editMenuShown} Posts -
+ {:else} +
+ {/if}
- {/if} +