From 8bce7c047b51ae92a10f5b096f4c901979fe4017 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Thu, 9 Jun 2022 16:49:48 -0500 Subject: [PATCH] Case Builder: Disable buttons on submit --- relog-web/src/casebuilder/InputPage.js | 44 +++++++++++++++++--------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/relog-web/src/casebuilder/InputPage.js b/relog-web/src/casebuilder/InputPage.js index d8fd311..005550c 100644 --- a/relog-web/src/casebuilder/InputPage.js +++ b/relog-web/src/casebuilder/InputPage.js @@ -70,6 +70,7 @@ const InputPage = () => { const fileElem = useRef(); let [data, setData] = useState(defaultData); let [messages, setMessages] = useState([]); + let [processing, setProcessing] = useState(false); const save = async (data) => { const db = await openRelogDB(); @@ -302,21 +303,30 @@ const InputPage = () => { ); } - const onSubmit = () => { + const onSubmit = async () => { const exported = exportData(data); const valid = validate(exported); if (valid) { - fetch("/submit", { - method: "POST", - body: JSON.stringify(exported), - }) - .then((response) => { - return response.json(); - }) - .then((data) => { - console.log(data); - history.push(`/solver/${data.job_id}`); + setProcessing(true); + try { + const response = await fetch("/submit", { + method: "POST", + body: JSON.stringify(exported), }); + if (response.ok) { + const data = await response.json(); + history.push(`/solver/${data.job_id}`); + } else { + throw "Error"; + } + } catch { + setMessages([ + ...messages, + "Failed to submit job. Please try again later.", + ]); + } finally { + setProcessing(false); + } } }; @@ -357,10 +367,14 @@ const InputPage = () => { return ( <>
-