Added the ability to exclude world compendiums in the Compendium Browser Settings

This commit is contained in:
WBHarry 2026-02-12 19:27:03 +01:00
parent 60cd28ae82
commit e0b3d33f80
3 changed files with 14 additions and 5 deletions

View file

@ -355,7 +355,8 @@
"CompendiumBrowserSettings": { "CompendiumBrowserSettings": {
"title": "Enable Compendiums", "title": "Enable Compendiums",
"enableSource": "Enable Source", "enableSource": "Enable Source",
"disableSource": "Disable Source" "disableSource": "Disable Source",
"worldCompendiums": "World Compendiums"
}, },
"ContextMenu": { "ContextMenu": {
"disableEffect": "Disable Effect", "disableEffect": "Disable Effect",

View file

@ -50,13 +50,20 @@ export default class CompendiumBrowserSettings extends HandlebarsApplicationMixi
const excludedSourceData = this.browserSettings.excludedSources; const excludedSourceData = this.browserSettings.excludedSources;
const excludedPackData = this.browserSettings.excludedPacks; const excludedPackData = this.browserSettings.excludedPacks;
context.typePackCollections = game.packs.reduce((acc, pack) => { context.typePackCollections = game.packs.reduce((acc, pack) => {
const { type, label, packageType, packageName, id } = pack.metadata; const { type, label, packageType, packageName: basePackageName, id } = pack.metadata;
if (packageType === 'world' || !CompendiumBrowserSettings.#browserPackTypes.includes(type)) return acc; if (!CompendiumBrowserSettings.#browserPackTypes.includes(type)) return acc;
const isWorldPack = packageType === 'world';
const packageName = isWorldPack ? 'world' : basePackageName;
const sourceChecked = const sourceChecked =
!excludedSourceData[packageName] || !excludedSourceData[packageName] ||
!excludedSourceData[packageName].excludedDocumentTypes.includes(type); !excludedSourceData[packageName].excludedDocumentTypes.includes(type);
const sourceLabel = game.modules.get(packageName)?.title ?? game.system.title;
const sourceLabel =
game.modules.get(packageName)?.title ??
(isWorldPack
? game.i18n.localize('DAGGERHEART.APPLICATIONS.CompendiumBrowserSettings.worldCompendiums')
: game.system.title);
if (!acc[type]) acc[type] = { label: game.i18n.localize(`DOCUMENT.${type}s`), sources: {} }; if (!acc[type]) acc[type] = { label: game.i18n.localize(`DOCUMENT.${type}s`), sources: {} };
if (!acc[type].sources[packageName]) if (!acc[type].sources[packageName])
acc[type].sources[packageName] = { label: sourceLabel, checked: sourceChecked, packs: [] }; acc[type].sources[packageName] = { label: sourceLabel, checked: sourceChecked, packs: [] };

View file

@ -24,7 +24,8 @@ export default class CompendiumBrowserSettings extends foundry.abstract.DataMode
const pack = game.packs.get(item.pack); const pack = game.packs.get(item.pack);
if (!pack) return false; if (!pack) return false;
const excludedSourceData = this.excludedSources[pack.metadata.packageName]; const packageName = pack.metadata.packageType === 'world' ? 'world' : pack.metadata.packageName;
const excludedSourceData = this.excludedSources[packageName];
if (excludedSourceData && excludedSourceData.excludedDocumentTypes.includes(pack.metadata.type)) return true; if (excludedSourceData && excludedSourceData.excludedDocumentTypes.includes(pack.metadata.type)) return true;
const excludedPackData = this.excludedPacks[item.pack]; const excludedPackData = this.excludedPacks[item.pack];