aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-10-26 15:59:30 -0700
committerFuwn <[email protected]>2023-10-26 15:59:30 -0700
commit79c36ade395dd49ad8f25244d46f21d14656733b (patch)
tree8e1fcd9edf25fa34d83c893d08a20c009b23a4b7 /src
parentmerge: branch 'badges' (diff)
downloaddue.moe-79c36ade395dd49ad8f25244d46f21d14656733b.tar.xz
due.moe-79c36ade395dd49ad8f25244d46f21d14656733b.zip
feat(badges): errors
Diffstat (limited to 'src')
-rw-r--r--src/routes/user/[user]/badges/+page.svelte18
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