From bf830b08490737707a74bd83cfd7f74f903ee7dd Mon Sep 17 00:00:00 2001 From: orosmatthew Date: Sat, 29 Apr 2023 12:38:29 -0400 Subject: [PATCH] Use form for reviewing --- .../admin/diff/[submissionId]/+page.server.ts | 19 ++- .../admin/diff/[submissionId]/+page.svelte | 109 +++++++++--------- .../admin/diff/[submissionId]/+server.ts | 23 ---- 3 files changed, 73 insertions(+), 78 deletions(-) delete mode 100644 web/src/routes/admin/diff/[submissionId]/+server.ts diff --git a/web/src/routes/admin/diff/[submissionId]/+page.server.ts b/web/src/routes/admin/diff/[submissionId]/+page.server.ts index 4839185..e9d404c 100644 --- a/web/src/routes/admin/diff/[submissionId]/+page.server.ts +++ b/web/src/routes/admin/diff/[submissionId]/+page.server.ts @@ -1,4 +1,4 @@ -import type { PageServerLoad } from './$types'; +import type { Actions, PageServerLoad } from './$types'; import * as Diff from 'diff'; import { error, redirect } from '@sveltejs/kit'; import { db } from '$lib/server/prisma'; @@ -20,3 +20,20 @@ export const load = (async ({ params }) => { ); return { diff: diff }; }) satisfies PageServerLoad; + +export const actions = { + submit: async ({ request, params }) => { + const submissionId = parseInt(params.submissionId); + if (isNaN(submissionId)) { + return { success: false }; + } + const data = await request.formData(); + const correct = data.get('correct'); + if (!correct) { + return { success: false }; + } + const correctBool = correct.toString().toLowerCase() === 'true'; + await db.submission.delete({ where: { id: submissionId } }); + return { success: true }; + } +} satisfies Actions; diff --git a/web/src/routes/admin/diff/[submissionId]/+page.svelte b/web/src/routes/admin/diff/[submissionId]/+page.svelte index a1319c3..49b758f 100644 --- a/web/src/routes/admin/diff/[submissionId]/+page.svelte +++ b/web/src/routes/admin/diff/[submissionId]/+page.svelte @@ -2,17 +2,30 @@ import { Diff2HtmlUI } from 'diff2html/lib/ui/js/diff2html-ui-base'; import 'diff2html/bundles/css/diff2html.min.css'; import { onMount } from 'svelte'; - import type { DiffPostData } from './+server'; + import type { Actions, PageData } from './$types'; + import { enhance } from '$app/forms'; import { goto } from '$app/navigation'; - import type { PageData } from './$types'; - import { page } from '$app/stores'; export let data: PageData; + export let form: Actions; + + $: if (form && form.success) { + goto('/admin/reviews'); + } let incorrectBtn: HTMLInputElement; let correctBtn: HTMLInputElement; let submitBtn: HTMLButtonElement; - let messageText: HTMLTextAreaElement; + + let correct = false; + + function updateCorrect() { + if (correctBtn.checked) { + correct = true; + } else { + correct = false; + } + } onMount(() => { const diff2htmlUi = new Diff2HtmlUI(document.getElementById('diff')!, data.diff, { @@ -27,29 +40,13 @@ incorrectBtn.addEventListener('change', () => { submitBtn.disabled = false; + updateCorrect(); }); correctBtn.addEventListener('change', () => { submitBtn.disabled = false; + updateCorrect(); }); }); - - async function onSubmitClick() { - if (incorrectBtn.checked) { - let postData: DiffPostData = { - correct: false, - message: messageText.value - }; - await fetch($page.url, { method: 'POST', body: JSON.stringify(postData) }); - goto('/admin/reviews'); - } else if (correctBtn.checked) { - let postData: DiffPostData = { - correct: true, - message: messageText.value - }; - await fetch($page.url, { method: 'POST', body: JSON.stringify(postData) }); - goto('/admin/reviews'); - } - } @@ -58,41 +55,45 @@

Diff

+{#if form && !form.success} +
Submission was not successful
+{:else if form && form.success} +
Success!
+{/if} + Back
-
Message
-