diff --git a/src/module/compendium-browser.js b/src/module/compendium-browser.js index 2e47f22..bb335b9 100644 --- a/src/module/compendium-browser.js +++ b/src/module/compendium-browser.js @@ -56,7 +56,8 @@ class CompendiumBrowser extends Application { } get settings() { - return game.settings.get(COMPENDIUM_BROWSER, "settings"); + const settings = game.settings.get(COMPENDIUM_BROWSER, "settings"); + return foundry.utils.mergeObject(game.compendiumBrowser.readCompendiums, settings); } /** @override */ @@ -219,17 +220,32 @@ class CompendiumBrowser extends Application { } // settings - html.find(".settings input").on("change", (ev) => { + html.find(".settings input").on("change", async (ev) => { const setting = ev.target.dataset.setting; const value = ev.target.checked; if (setting === "spell-compendium-setting") { const key = ev.target.dataset.key; - this.settings.loadedSpellCompendium[key].load = value; + const settings = foundry.utils.mergeObject(this.settings, { + loadedSpellCompendium: { + [key]: { + load: value + } + } + }); + await game.settings.set("compendium-browser", "settings", settings); + // this.settings.loadedSpellCompendium[key].load = value; this.render(); ui.notifications.info("Settings Saved. Item Compendiums are being reloaded."); } else if (setting === "npc-compendium-setting") { const key = ev.target.dataset.key; - this.settings.loadedNpcCompendium[key].load = value; + const settings = foundry.utils.mergeObject(this.settings, { + loadedNpcCompendium: { + [key]: { + load: value + } + } + }); + await game.settings.set("compendium-browser", "settings", settings); this.render(); ui.notifications.info("Settings Saved. NPC Compendiums are being reloaded."); } else if (setting === "allow-spell-browser") { diff --git a/src/module/settings.js b/src/module/settings.js index 775f85f..ec850b7 100644 --- a/src/module/settings.js +++ b/src/module/settings.js @@ -4,19 +4,19 @@ export function registerSettings() { // Register any custom module settings here - const defaultSettings = { + game.compendiumBrowser.readCompendiums = { loadedSpellCompendium: {}, loadedNpcCompendium: {}, }; for (const compendium of game.packs) { if (compendium.documentName === "Item") { - defaultSettings.loadedSpellCompendium[compendium.collection] = { + game.compendiumBrowser.readCompendiums.loadedSpellCompendium[compendium.collection] = { load: true, name: `${compendium.metadata.label} (${compendium.collection})`, }; } if (compendium.documentName === "Actor") { - defaultSettings.loadedNpcCompendium[compendium.collection] = { + game.compendiumBrowser.readCompendiums.loadedNpcCompendium[compendium.collection] = { load: true, name: `${compendium.metadata.label} (${compendium.collection})`, }; @@ -26,7 +26,7 @@ export function registerSettings() { game.settings.register("compendium-browser", "settings", { name: "Compendium Browser Settings", hint: "Settings to exclude packs from loading and visibility of the browser", - default: defaultSettings, + default: game.compendiumBrowser.readCompendiums, type: Object, scope: "world" });