Neale Pickett
·
2023-09-13
token.mjs
1/**
2 * Functionality for token.html
3 */
4import * as moth from "./moth.mjs"
5import * as common from "./common.mjs"
6
7const server = new moth.Server(".")
8
9/**
10 * Handle a submit event on a form.
11 *
12 * @param {SubmitEvent} event
13 */
14async function formSubmitHandler(event) {
15 event.preventDefault()
16
17 let formData = new FormData(event.target)
18 let token = formData.get("token")
19 let vals = token.split(":")
20 let category = vals[0]
21 let points = Number(vals[1])
22 let proposed = vals[2]
23 if (!category || !points || !proposed) {
24 console.info("Not a token:", vals)
25 common.Toast("This is not a properly-formed token")
26 return
27 }
28 try {
29 let message = await server.SubmitAnswer(category, points, proposed)
30 common.Toast(message)
31 }
32 catch (error) {
33 if (error.message == "incorrect answer") {
34 common.Toast("Unknown token")
35 } else {
36 console.error(error)
37 common.Toast(error)
38 }
39 }
40}
41
42function init() {
43 for (let form of document.querySelectorAll("form.token")) {
44 form.addEventListener("submit", formSubmitHandler)
45 }
46}
47
48common.WhenDOMLoaded(init)