aboutsummaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2022-08-28 00:08:07 +0300
committerkartofen <mladenovnasko0@gmail.com>2022-08-28 00:08:07 +0300
commit35b06b4fc851192916e000ad5e7e2f458846448c (patch)
treef9a1536aae76a5058d26f8b82ddcf63e83f500cc /src/pages
parent8f5278eb443864910dd9c2131c992d71e3af2d20 (diff)
working on thread uploading
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/board/[board].astro1
-rw-r--r--src/pages/create/[board].astro54
-rw-r--r--src/pages/create/thread.ts28
3 files changed, 82 insertions, 1 deletions
diff --git a/src/pages/board/[board].astro b/src/pages/board/[board].astro
index 2624fed..23a5551 100644
--- a/src/pages/board/[board].astro
+++ b/src/pages/board/[board].astro
@@ -22,5 +22,4 @@ for(let thread of threads)
{threads.map((thread) => (
<Thread thread={thread} board={board} />
))}
-
</Default>
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
+ });
+}