X-Git-Url: https://git.cworth.org/git?p=lmno.games;a=blobdiff_plain;f=lmno.js;h=5cd5802856c79e9fdcad6a738de1bd1cb1175070;hp=f1f9cd7f874a1f193382283a5a6a350deefc0b74;hb=cc8155229ca86b7c56afedde33009b6cbac6a203;hpb=ab1f9903376d346bd6230f03169408464ee7b526 diff --git a/lmno.js b/lmno.js index f1f9cd7..5cd5802 100644 --- a/lmno.js +++ b/lmno.js @@ -11,18 +11,52 @@ ${message} message_area.insertAdjacentHTML('beforeend', message); } -function join_loadend(request, game_id) { +function lmno_login_loadend(request, username) { + if (request.status === 404) { + add_message("danger", "User authentication failed. Please try again."); + return; + } + + /* Now that user is logged in, advance to the desired page (if any). */ + const url = new URL(window.location); + const next_param = url.searchParams.get('next'); + if (next_param) { + window.location.href = next_param; + return; + } + + /* Otherwise, just report the successful login. */ + add_message("success", `User ${username} logged in. Have fun.`); +} + +function lmno_login(form) { + const username = form.username.value; + const password = form.password.value; + + console.log("In lmno_login with username: " + username); + var request = new XMLHttpRequest(); + request.addEventListener("loadend", () => lmno_login_loadend(request, username)); + + request.open("POST", "/login"); + request.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); + request.send(`{"username": "${username}", "password": "${password}"}`); +} + +function lmno_join_loadend(request, game_id) { if (request.status === 404) { add_message("danger", game_id + " is not a valid game ID. Try again."); return; } + + /* Now that its validated, send the browser to the URL for the game_id. */ + window.location.href = "/" + game_id; } function lmno_join(form) { const game_id = form.id.value; var request = new XMLHttpRequest(); - request.addEventListener("loadend", () => join_loadend(request, game_id)); + request.addEventListener("loadend", () => lmno_join_loadend(request, game_id)); request.open("GET", "/" + game_id); request.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); @@ -30,3 +64,25 @@ function lmno_join(form) { form.reset(); } + +function lmno_new_loadend() { + if (this.status == 200) { + /* Response contains the game ID which we simply point the browser to. */ + const game_id = JSON.parse(this.response); + window.location.href = ('/' + game_id); + return; + } + + add_message("danger", `An error occured creating a new game (${this.status}).`); +} + +function lmno_new(engine) { + const request = new XMLHttpRequest(); + request.addEventListener("loadend", lmno_new_loadend); + + request.open("POST", "/new/" + engine); + request.setRequestHeader("Content-Type", "application/json; charset=UTF-8"); + request.send(); + + return false; +}