From ba70ba88dd920d438ade49696e42b2206508b603 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 8 Jul 2025 20:52:45 -0700 Subject: [PATCH] fix(webui): recreate missing datalist-QuestKeys entries after refreshing inventory (#2452) Closes #2448 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2452 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- static/webui/script.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/static/webui/script.js b/static/webui/script.js index e15d2bb8..bb557ff3 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -273,6 +273,8 @@ function fetchItemList() { window.itemListPromise = new Promise(resolve => { const req = $.get("/custom/getItemLists?lang=" + window.lang); req.done(async data => { + window.allQuestKeys = data.QuestKeys; + await dictPromise; document.querySelectorAll('[id^="datalist-"]').forEach(datalist => { @@ -879,6 +881,14 @@ function updateInventory() { // Populate quests route document.getElementById("QuestKeys-list").innerHTML = ""; + window.allQuestKeys.forEach(questKey => { + if (!data.QuestKeys.some(x => x.ItemType == questKey.uniqueName)) { + const datalist = document.getElementById("datalist-QuestKeys"); + if (!datalist.querySelector(`option[data-key="${questKey.uniqueName}"]`)) { + readdQuestKey(itemMap, questKey.uniqueName); + } + } + }); data.QuestKeys.forEach(item => { const tr = document.createElement("tr"); tr.setAttribute("data-item-type", item.ItemType); @@ -972,10 +982,7 @@ function updateInventory() { a.href = "#"; a.onclick = function (event) { event.preventDefault(); - const option = document.createElement("option"); - option.setAttribute("data-key", item.ItemType); - option.value = itemMap[item.ItemType]?.name ?? item.ItemType; - document.getElementById("datalist-QuestKeys").appendChild(option); + readdQuestKey(itemMap, item.ItemType); doQuestUpdate("deleteKey", item.ItemType); }; a.title = loc("code_remove"); @@ -2270,6 +2277,13 @@ function doAddCurrency(currency) { }); } +function readdQuestKey(itemMap, itemType) { + const option = document.createElement("option"); + option.setAttribute("data-key", itemType); + option.value = itemMap[itemType]?.name ?? itemType; + document.getElementById("datalist-QuestKeys").appendChild(option); +} + function doQuestUpdate(operation, itemType) { revalidateAuthz().then(() => { $.post({