force reload quests after submitting one

This commit is contained in:
Gwendolyn 2024-12-26 03:52:13 +01:00
parent 8373ee50de
commit d8ac955d69

View file

@ -1456,7 +1456,7 @@ c3nav = {
_modal_click: function (e) { _modal_click: function (e) {
if (!c3nav.modal_noclose && (e.target.id === 'modal' || e.target.id === 'close-modal')) { if (!c3nav.modal_noclose && (e.target.id === 'modal' || e.target.id === 'close-modal')) {
history.back(); history.back();
if (c3nav._questsControl) c3nav._questsControl.reloadQuests(); if (c3nav._questsControl) c3nav._questsControl.reloadQuests(true);
} }
}, },
_href_modal_open_tab: function (location) { _href_modal_open_tab: function (location) {
@ -2734,15 +2734,19 @@ QuestsControl = ExpandingControl.extend({
this.reloadQuests().catch(err => console.error(err)); this.reloadQuests().catch(err => console.error(err));
}, },
reloadQuests: async function() { reloadQuests: async function (force = false) {
const activeQuests = this._activeQuests; const activeQuests = this._activeQuests;
const removed = this._loadedQuests.difference(activeQuests); const removed = this._loadedQuests.difference(activeQuests);
const added = activeQuests.difference(this._loadedQuests); const added = force ? activeQuests : activeQuests.difference(this._loadedQuests);
if (removed.size === 0 && added.size === 0) return; if (removed.size === 0 && added.size === 0) return;
const questData = this._questData; const questData = this._questData;
for (const name of removed) {
delete questData[name];
}
if (added.size > 0) { if (added.size > 0) {
for(const name of added) { for(const name of added) {
questData[name] = []; questData[name] = [];
@ -2755,10 +2759,6 @@ QuestsControl = ExpandingControl.extend({
} }
} }
for (const name of removed) {
delete questData[name];
}
this._questData = questData; this._questData = questData;
this._loadedQuests = new Set([...activeQuests]); this._loadedQuests = new Set([...activeQuests]);