diff options
| author | Fuwn <[email protected]> | 2023-10-26 15:59:30 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-26 15:59:30 -0700 |
| commit | 79c36ade395dd49ad8f25244d46f21d14656733b (patch) | |
| tree | 8e1fcd9edf25fa34d83c893d08a20c009b23a4b7 /src | |
| parent | merge: branch 'badges' (diff) | |
| download | due.moe-79c36ade395dd49ad8f25244d46f21d14656733b.tar.xz due.moe-79c36ade395dd49ad8f25244d46f21d14656733b.zip | |
feat(badges): errors
Diffstat (limited to 'src')
| -rw-r--r-- | src/routes/user/[user]/badges/+page.svelte | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index 324d568e..fb5f5e29 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -7,6 +7,7 @@ let editMode = false; let currentUserIdentity: ReturnType<typeof userIdentity>; + let error: null | string; onMount(async () => { if (data.user) { @@ -26,6 +27,18 @@ const activityURL = document.querySelector('input[name="activity_url"]') as HTMLInputElement; const description = document.querySelector('input[name="description"]') as HTMLInputElement; + if (!imageURL.value || !activityURL.value) { + error = 'Fields cannot be empty.'; + + return; + } + + if (!imageURL.value.startsWith('http') || !activityURL.value.startsWith('http')) { + error = 'URLs must start with http or https.'; + + return; + } + fetch( `/api/badges/add?image=${encodeURIComponent(imageURL.value)}&post=${encodeURIComponent( activityURL.value @@ -34,6 +47,7 @@ method: 'POST' } ).then(() => { + error = null; imageURL.value = ''; activityURL.value = ''; description.value = ''; @@ -69,6 +83,10 @@ careful! </p> + {#if error} + <p style="color: red;">{error}</p> + {/if} + <p> <input type="text" placeholder="Image URL" name="image_url" minlength="1" maxlength="1000" /> <input |