fix(webui): recreate missing datalist-QuestKeys entries after refreshing inventory #2452

Merged
Sainan merged 1 commits from recreate-questkeys into main 2025-07-08 20:52:45 -07:00
Showing only changes of commit e1490670d8 - Show all commits

View File

@ -273,6 +273,8 @@ function fetchItemList() {
window.itemListPromise = new Promise(resolve => { window.itemListPromise = new Promise(resolve => {
const req = $.get("/custom/getItemLists?lang=" + window.lang); const req = $.get("/custom/getItemLists?lang=" + window.lang);
req.done(async data => { req.done(async data => {
window.allQuestKeys = data.QuestKeys;
await dictPromise; await dictPromise;
document.querySelectorAll('[id^="datalist-"]').forEach(datalist => { document.querySelectorAll('[id^="datalist-"]').forEach(datalist => {
@ -879,6 +881,14 @@ function updateInventory() {
// Populate quests route // Populate quests route
document.getElementById("QuestKeys-list").innerHTML = ""; 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 => { data.QuestKeys.forEach(item => {
const tr = document.createElement("tr"); const tr = document.createElement("tr");
tr.setAttribute("data-item-type", item.ItemType); tr.setAttribute("data-item-type", item.ItemType);
@ -972,10 +982,7 @@ function updateInventory() {
a.href = "#"; a.href = "#";
a.onclick = function (event) { a.onclick = function (event) {
event.preventDefault(); event.preventDefault();
const option = document.createElement("option"); readdQuestKey(itemMap, item.ItemType);
option.setAttribute("data-key", item.ItemType);
option.value = itemMap[item.ItemType]?.name ?? item.ItemType;
document.getElementById("datalist-QuestKeys").appendChild(option);
doQuestUpdate("deleteKey", item.ItemType); doQuestUpdate("deleteKey", item.ItemType);
}; };
a.title = loc("code_remove"); a.title = loc("code_remove");
@ -2254,6 +2261,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) { function doQuestUpdate(operation, itemType) {
revalidateAuthz().then(() => { revalidateAuthz().then(() => {
$.post({ $.post({