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 +    }); +} | 
