main.js (2886B)
1 import * as api from "/lib/api.js" 2 import * as etc from "/lib/etc.js" 3 4 etc.handle_wrap(main) 5 6 function main() { 7 api.fetch("GET", "users/:user/email/code") 8 .then(function() { 9 document.getElementById("wait").remove() 10 document.body.appendChild(codeForm()) 11 document.body.appendChild(document.createElement("br")) 12 document.body.appendChild(resendForm()) 13 }) 14 .catch(function(err) { 15 etc.error(err + ": Unable to send code") 16 17 let b = document.body.appendChild(document.createElement("input")) 18 b.type = "button" 19 b.value = "Retry" 20 b.addEventListener("click", function() { 21 b.remove() 22 main() 23 }) 24 }) 25 26 } 27 28 function codeForm() { 29 let form = document.createElement("form") 30 form.id = "code_form" 31 32 let label = form.appendChild( 33 document.createElement("label") 34 ) 35 label.setAttribute("for", "code") 36 label.classList.add("break") 37 38 label.appendChild( 39 document.createTextNode("Please enter the code sent to your email:") 40 ) 41 let input = form.appendChild( 42 document.createElement("input") 43 ) 44 input.id = "code" 45 input.setAttribute("autofocus", true) 46 input.setAttribute("name", "otp") 47 input.setAttribute("type", "number") 48 49 input.after(document.createTextNode(" ")) 50 51 let submit = form.appendChild( 52 document.createElement("input") 53 ) 54 submit.setAttribute("type", "submit") 55 56 form.addEventListener("submit", function(event) { 57 event.preventDefault() 58 api.fetch("POST", "users/:user/email/code", { code: code.value }) 59 .then(function(body) { 60 if (!body.valid) { 61 etc.error("That was not the correct code, please try again.", form) 62 } else { 63 etc.userService() 64 .then(function(service) { 65 if (service) { 66 window.location.href = "/settings" 67 } else { 68 window.location.href = "/services" 69 } 70 }) 71 .catch(function() { 72 // Eh. 73 window.location.href = "/settings" 74 }) 75 } 76 }) 77 .catch(function(err) { 78 etc.error(err + ": Could not verify code", form) 79 }) 80 }) 81 82 return form 83 } 84 85 function resendForm() { 86 let form = document.createElement("form") 87 form.id = "resend" 88 89 let label = form.appendChild( 90 document.createElement("label") 91 ) 92 label.setAttribute("for", "resend") 93 label.appendChild( 94 document.createTextNode("Don't see the code? Click here to resend it: ") 95 ) 96 97 let resend = form.appendChild( 98 document.createElement("input") 99 ) 100 resend.setAttribute("type", "submit") 101 resend.setAttribute("value", "Resend") 102 103 form.addEventListener("submit", function(event) { 104 event.preventDefault() 105 api.fetch("GET", "users/:user/email/code") 106 .then(function(body) { 107 console.log(body) 108 let msg = document.createElement("p") 109 msg.appendChild(document.createTextNode("Code resent.")) 110 form.before(msg) 111 setTimeout(function() { msg.remove() }, 5500) 112 }) 113 .catch(function(err) { 114 etc.error(err + ": Unable to resend code", form) 115 }) 116 }) 117 118 return form 119 }