diff options
Diffstat (limited to 'src/pages/create')
-rw-r--r-- | src/pages/create/[board].astro | 67 | ||||
-rw-r--r-- | src/pages/create/thread.ts | 32 |
2 files changed, 29 insertions, 70 deletions
diff --git a/src/pages/create/[board].astro b/src/pages/create/[board].astro index 45f8b0d..9c2308f 100644 --- a/src/pages/create/[board].astro +++ b/src/pages/create/[board].astro @@ -1,54 +1,25 @@ --- -import Default from '../../layouts/Default.astro' +import Default from '../../layouts/Default.astro'; +import Form from '../../components/Form.astro'; + const { board } = Astro.params; --- -<h1>{board}</h1> - <Default> - <form id="form" method="post" action="/create/thread" onsubmit="document.getElementById('submit-button').disabled = true"> - <textarea name="ThreadName" placeholder="Thread Name" style="height: 1.5rem; width: 350px;"></textarea> <br> - <textarea name="ThreadText" placeholder="Thread Contents" style="height: 150px; width: 350px;"></textarea> - <br> <input id="submit-button" type="submit" value="Create Thread" /> - <input id="image" type="file" accept=".png,.jpg,.gif,.bmp,.mp4" /> - - </form> - <script define:vars={{ board }}> - document.forms['form'].addEventListener('submit', async (event) => { - event.preventDefault(); - - let form = new FormData(event.target); - let reader = new FileReader(); - - reader.onload = e => { - form.append('image', - (e != null) ? e.target.result.toString() : '' - ); - } - - reader.onloadend = () => { - fetch(event.target.action, { - method: event.target.method, - body: new URLSearchParams(form) - }).then((r) => { - if(r.status == 200) { - alert('Thread Successfuly Posted'); - window.location.assign(`/board/${board}`); - } - else alert('An Error has Accured'); - }); - } - - form.append('board', board); - - let image = document.getElementById("image").files[0]; - if(image) { - reader.readAsDataURL(image); - } else { - reader.onload(null); - reader.onloadend(); - } - - }); - </script> + <h1>{board}</h1> + + <Form board={board} tid="niggers"> + <form id="form" method="post" action="/create/thread" onsubmit="document.getElementById('submit-button').disabled = true"> + <textarea name="ThreadName" placeholder="Thread Name" style="height: 1.5rem; width: 350px;"></textarea> <br> + <textarea name="ThreadText" placeholder="Thread Contents" style="height: 150px; width: 350px;"></textarea> + <br> <input id="submit-button" type="submit" value="Create Thread" /> + <input id="image" type="file" accept=".png,.jpg,.gif,.bmp,.mp4" /> + </form> + </Form> </Default> + +<style> + :root { + --wdt: 360px; + } +</style> diff --git a/src/pages/create/thread.ts b/src/pages/create/thread.ts index 0af3471..0a0b7d1 100644 --- a/src/pages/create/thread.ts +++ b/src/pages/create/thread.ts @@ -1,28 +1,16 @@ -import type { APIRoute } from 'astro'; -import { v4 as uuidV4 } from 'uuid'; +import { api } from '../../lib/api'; +import { processThreadOut } from '../../lib/thread'; -import type Thread from '../../models/Thread' -import { api } from '../../lib/api' +export async function post({ request }) { + const form = await request.formData(); -export async function post({ params, request }): APIRoute { - const form = await request.formData(); + console.log(form); - let t: Thread = {}; - t.id = uuidV4().toString(); - t.ThreadName = form.get('ThreadName').toString(); - // data["ThreadCreator"] = locals.userid; - t.ThreadCreator = ''; - t.ThreadText = form.get('ThreadText').toString(); - t.Comments = []; - t.CreationDate = Date.now(); - // data["ImageId"] = await post_img(base64image, writeFileSync); - // data["FileType"] = get_img_type(base64image); - t.ImageId = form.get('image').toString(); - t.FileType = ''; + let t: Thread = await processThreadOut(form); - // await api('post', `thread/${form.get('board')}`, JSON.stringify(data)); + await api('post', `thread/${form.get('board')}`, JSON.stringify(t)); - return new Response(null, { - status: 200 - }); + return new Response(t.id, { + status: 200 + }); } |