Who are you?
@ @@ -53,7 +54,11 @@ - +Bracket
@@ -129,10 +138,7 @@ diff --git a/views/projects/item/fediverse-madness/scripts/game.js b/views/projects/item/fediverse-madness/scripts/game.js index 57e9626..bfb3094 100644 --- a/views/projects/item/fediverse-madness/scripts/game.js +++ b/views/projects/item/fediverse-madness/scripts/game.js @@ -47,6 +47,8 @@ async function verify() { const user_req = await fetch(`https://${domain_url}/api/v1/accounts/lookup?acct=${username}`).catch(n); if (user_req == null || !domain.ok) return null; const user_json = await user_req.json(); + + window.localStorage.setItem("fediversemadness_game", JSON.stringify({ username, instance })); return { USER_ID: user_json.id, @@ -54,21 +56,27 @@ async function verify() { }; } +async function lookupUser() { + const lsGame = JSON.parse(window.localStorage.getItem("fediversemadness_game")); + if (lsGame != null) { + el_id_user.value = lsGame.username; + el_id_instance.value = lsGame.instance; + } +} + +lookupUser(); + el_id_submitwhoamiFollowers.addEventListener("click", async (e) => { el_id_errorwhoami.innerHTML = ""; el_id_submitwhoamiFollowers.disabled = true; el_id_submitwhoamiFollowing.disabled = true; - const result = await verify(); + game = await verify(); el_id_submitwhoamiFollowers.disabled = false; el_id_submitwhoamiFollowing.disabled = false; - if (result == null) { + if (game == null) { el_id_errorwhoami.innerHTML = "Invalid user!"; return false; } - game = { - ...game, - ...result - }; gamemodeFollowers = true; getFollowers(); @@ -76,15 +84,15 @@ el_id_submitwhoamiFollowers.addEventListener("click", async (e) => { el_id_submitwhoamiFollowing.addEventListener("click", async (e) => { el_id_errorwhoami.innerHTML = ""; - const result = await verify(); - if (result == null) { + el_id_submitwhoamiFollowers.disabled = true; + el_id_submitwhoamiFollowing.disabled = true; + game = await verify(); + el_id_submitwhoamiFollowers.disabled = false; + el_id_submitwhoamiFollowing.disabled = false; + if (game == null) { el_id_errorwhoami.innerHTML = "Invalid user!"; return false; } - game = { - ...game, - ...result - }; gamemodeFollowers = false; getFollowing(); @@ -102,22 +110,49 @@ const el_id_deselectrandomfollowers = document.querySelector("#deselectrandomfol const el_id_selectnofollowers = document.querySelector("#selectnofollowers"); const el_id_morefollowers = document.querySelector("#morefollowers"); const el_id_submitfollowers = document.querySelector("#submitfollowers"); +const el_id_savehandlesfollowers = document.querySelector("#savehandlesfollowers"); +const el_id_loadhandlesfollowers = document.querySelector("#loadhandlesfollowers"); let selectboxes = []; let userList = []; let lastId = ""; let selectedUsers = []; -function renderNameHTML(name, user) { - return escapeHtml(name).replace(/:([a-z0-9_-]+?):/gim, (m, p1) => { - const emoji = user.emojis.find(x => x.shortcode == p1); - if (emoji == null) return null; - return ``; +function generateFollowersMap() { + const checks = Array.from(el_id_listfollowers.querySelectorAll(".followers_checkbox")); + let codeMap = {}; + checks.forEach((checkbox) => { + const handle = checkbox.parentElement.parentElement.querySelector(".followers_checkname"); + codeMap[handle.innerHTML] = checkbox.checked; + }); + return Object.fromEntries(codeMap.entries()); +} + +function readFollowersMap(m) { + if (m == null) return; + const handles = Array.from(el_id_listfollowers.querySelectorAll(".followers_checkname")); + handles.forEach((handle) => { + const checkbox = handle.parentElement.parentElement.querySelector(".followers_checkbox"); + checkbox.checked = m[handle.innerHTML]; }); } +function renderNameHTML(name, user) { + return `${escapeHtml(name).replace(/:([a-z0-9_-]+?):/gim, (m, p1) => { + const emoji = user.emojis.find(x => x.shortcode == p1); + if (emoji == null) return null; + return ``; + })}`; +} + async function getFollowers(dontLoadNew = false) { - el_id_whoami.hidden = true; - el_id_followers.hidden = false; + goToState("followers"); + if (!dontLoadNew) { + selectboxes = []; + userList = []; + lastId = ""; + selectedUsers = []; + el_id_listfollowers.innerHTML = ""; + } el_id_submitfollowers.disabled = true; el_id_morefollowers.disabled = true; let res; @@ -144,7 +179,7 @@ async function getFollowers(dontLoadNew = false) { ${renderNameHTML(cuser.display_name, cuser)} -${renderNameHTML(escapeHtml(cu.display_name), cu)}
+${renderNameHTML(escapeHtml(cu.display_name), cu)}
@${cu.fqn}