diff --git a/package.json b/package.json index c6d1159..bba4968 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@yusurko/vigil", "private": true, - "version": "0.1.0-dev46", + "version": "0.1.0-dev47", "type": "module", "scripts": { "dev": "vite dev", diff --git a/src/lib/BigSearchInput.svelte b/src/lib/BigSearchInput.svelte index 2334ffb..053b4c2 100644 --- a/src/lib/BigSearchInput.svelte +++ b/src/lib/BigSearchInput.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/create/+page.server.ts b/src/routes/create/+page.server.ts new file mode 100644 index 0000000..2d172ce --- /dev/null +++ b/src/routes/create/+page.server.ts @@ -0,0 +1,43 @@ +import { backend } from '$lib/backend.js'; +import { redirect } from 'sveltekit-flash-message/server'; + +export const actions = { + + async default (event) { + const { request }= event; + + const data = await request.formData(); + const guildName = ''+data.get('to'); + const title = data.get('title'); + const content = data.get('content'); + const privacy = +(data.get('privacy') || 0); + + const backend2 = await backend.withEvent(event).oath(); + const resp = await backend2.submitJson(`guild/@${encodeURIComponent(guildName)}`, { + title, content, privacy + }) + + const { status } = resp; + const respData = await resp.json(); + + if ([200, 204].indexOf(status) < 0) { + // error + console.log(`/create: status ${status}`); + switch(status) { + case 403: + case 404: + redirect({ + message: respData.error + }, event); + break; + default: + redirect({message: `Unknown error (HTTP ${status})`}, event); + break; + } + } else { + const { id: myId } = respData; + + redirect(303, "/=" + myId); + } + } +}; \ No newline at end of file diff --git a/src/routes/create/+page.svelte b/src/routes/create/+page.svelte index af0029c..00a33fa 100644 --- a/src/routes/create/+page.svelte +++ b/src/routes/create/+page.svelte @@ -1,4 +1,5 @@ {#if me} -
+

Posting as @{me.username}