diff options
author | kartofen <mladenovnasko0@gmail.com> | 2022-08-28 00:08:07 +0300 |
---|---|---|
committer | kartofen <mladenovnasko0@gmail.com> | 2022-08-28 00:08:07 +0300 |
commit | 35b06b4fc851192916e000ad5e7e2f458846448c (patch) | |
tree | f9a1536aae76a5058d26f8b82ddcf63e83f500cc /src/pages/create | |
parent | 8f5278eb443864910dd9c2131c992d71e3af2d20 (diff) |
working on thread uploading
Diffstat (limited to 'src/pages/create')
-rw-r--r-- | src/pages/create/[board].astro | 54 | ||||
-rw-r--r-- | src/pages/create/thread.ts | 28 |
2 files changed, 82 insertions, 0 deletions
diff --git a/src/pages/create/[board].astro b/src/pages/create/[board].astro new file mode 100644 index 0000000..45f8b0d --- /dev/null +++ b/src/pages/create/[board].astro @@ -0,0 +1,54 @@ +--- +import Default from '../../layouts/Default.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> +</Default> diff --git a/src/pages/create/thread.ts b/src/pages/create/thread.ts new file mode 100644 index 0000000..0af3471 --- /dev/null +++ b/src/pages/create/thread.ts @@ -0,0 +1,28 @@ +import type { APIRoute } from 'astro'; +import { v4 as uuidV4 } from 'uuid'; + +import type Thread from '../../models/Thread' +import { api } from '../../lib/api' + +export async function post({ params, request }): APIRoute { + const form = await request.formData(); + + 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 = ''; + + // await api('post', `thread/${form.get('board')}`, JSON.stringify(data)); + + return new Response(null, { + status: 200 + }); +} |