From fc8537ba4daf7cd1e0846be700790ee40ec95f12 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 19 Jan 2025 01:57:39 +0100 Subject: [PATCH] feat(webui): add "add missing mods" (#804) Co-authored-by: Chinosu <46995931+Chinosu@users.noreply.github.com> --- static/webui/index.html | 6 ++++++ static/webui/script.js | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/static/webui/index.html b/static/webui/index.html index 5d037980..eb455a18 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -199,6 +199,12 @@ +
+
Bulk Actions
+
+ +
+
diff --git a/static/webui/script.js b/static/webui/script.js index 68dd9db1..0c023d44 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1077,6 +1077,50 @@ function doHelminthUnlockAll() { }); } +function doAddAllMods() { + let modsAll = new Set(); + for (const child of document.getElementById("datalist-mods").children) { + modsAll.add(child.getAttribute("data-key")); + } + + revalidateAuthz(() => { + const req = $.get("/api/inventory.php?" + window.authz + "&xpBasedLevelCapDisabled=1"); + req.done(data => { + for (const modOwned of data.RawUpgrades) { + if (modOwned.ItemCount ?? 1 > 0) { + modsAll.delete(modOwned.ItemType); + } + } + + modsAll = Array.from(modsAll); + if ( + modsAll.length != 0 && + window.confirm("Are you sure you want to add " + modsAll.length + " mods to your account?") + ) { + // Batch to avoid PayloadTooLargeError + const batches = []; + for (let i = 0; i < modsAll.length; i += 1000) { + batches.push(modsAll.slice(i, i + 1000)); + } + batches.forEach(batch => { + $.post({ + url: "/api/missionInventoryUpdate.php?" + window.authz, + contentType: "text/plain", + data: JSON.stringify({ + RawUpgrades: batch.map(mod => ({ + ItemType: mod, + ItemCount: 21 // To fully upgrade certain arcanes + })) + }) + }).done(function () { + updateInventory(); + }); + }); + } + }); + }); +} + // Powersuit Route single.getRoute("#powersuit-route").on("beforeload", function () {