From 54ae4fdb635cfa0d53989f7a8690cb8049612904 Mon Sep 17 00:00:00 2001 From: Litasa Date: Wed, 3 Sep 2025 12:32:35 +0200 Subject: [PATCH] Fixing using map on Set causing issues. Renamed a few variables to try and make it more clear what type they are --- system/scripts/hooks.js | 32 ++++++++++++------------- system/scripts/items/base-item-sheet.js | 4 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/system/scripts/hooks.js b/system/scripts/hooks.js index 9b4cd16..612891d 100644 --- a/system/scripts/hooks.js +++ b/system/scripts/hooks.js @@ -66,7 +66,7 @@ export default class HooksL5r5e { } } } - game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", Array.from(references)); + game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", references); } /** @@ -303,17 +303,17 @@ export default class HooksL5r5e { } // Setup filters - const officialContent = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players"); - const unofficialContent = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players"); - const allCompendiumReferences = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references") + const officialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players"); + const unofficialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players"); + const allCompendiumReferencesSet = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references") const hideEmptySourcesFromPlayers = game.settings.get(CONFIG.l5r5e.namespace, "compendium-hide-empty-sources-from-players"); - const unavailableSourceForPlayers = allCompendiumReferences.filter((element) => { + const unavailableSourceForPlayersSet = new Set([...allCompendiumReferencesSet].filter((element) => { if (CONFIG.l5r5e.sourceReference[element]) { - return officialContent.size > 0 ? !officialContent.has(element) : false; + return officialContentSet.size > 0 ? !officialContentSet.has(element) : false; } - return unofficialContent.size > 0 ? !unofficialContent.has(element) : false; - }); + return unofficialContentSet.size > 0 ? !unofficialContentSet.has(element) : false; + })); // Create filter function const applyCompendiumFilter = () => { @@ -333,7 +333,7 @@ export default class HooksL5r5e { let shouldShow = true; // Handle unavailable sources - if (unavailableSourceForPlayers.has(lineSource)) { + if (unavailableSourceForPlayersSet.has(lineSource)) { if (game.user.isGM) { shouldShow &= true; $(this) @@ -405,33 +405,33 @@ export default class HooksL5r5e { if (filtersToShow.source) { // Build the source select - const selectableSources = allCompendiumReferences.map((reference) => ({ + const selectableSourcesArray = [...allCompendiumReferencesSet].map((reference) => ({ value: reference, label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference, translate: true, group: CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ?? "l5r5e.multiselect.sources_categories.others", - disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayers.has(reference)) + disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayersSet.has(reference)) })); const filterSourcesBox = L5r5eHtmlMultiSelectElement.create({ name: "filter-sources", - options: selectableSources, + options: selectableSourcesArray, localize: true, }); header.append(filterSourcesBox.outerHTML); $("l5r5e-multi-select").on("change", applyCompendiumFilter); // If gm add an extra button to easily filter the content to see the same stuff as a player - if (game.user.isGM && unavailableSourceForPlayers.length > 0) { + if (game.user.isGM && unavailableSourceForPlayersSet.size > 0) { const buttonHTML = `' - const filterPlayerView = allCompendiumReferences - .filter((item) => !unavailableSourceForPlayers.has(item)) + const filterPlayerViewArray = [...allCompendiumReferencesSet] + .filter((item) => !unavailableSourceForPlayersSet.has(item)) .filter((item) => sourcesInThisCompendium.has(item)); $(buttonHTML).appendTo($(header).find("l5r5e-multi-select")).click(function() { - header.find("l5r5e-multi-select")[0].value = filterPlayerView; + header.find("l5r5e-multi-select")[0].value = filterPlayerViewArray; }); } } diff --git a/system/scripts/items/base-item-sheet.js b/system/scripts/items/base-item-sheet.js index 16863e1..2f0eb03 100644 --- a/system/scripts/items/base-item-sheet.js +++ b/system/scripts/items/base-item-sheet.js @@ -56,8 +56,8 @@ export class BaseItemSheetL5r5e extends foundry.appv1.sheets.ItemSheet { sheetData.data.system.source_reference.source = game.i18n.localize(label_or_reference); // Translate list of available references - const all_references = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references"); - sheetData.source_references = all_references.map((reference) => { + const all_referencesSet = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references"); + sheetData.source_references = [...all_referencesSet].map((reference) => { const label_or_reference = CONFIG.l5r5e.sourceReference[reference]?.label ?? reference return game.i18n.localize(label_or_reference) })