From ca29903a56f64a983ee83e657fef595da8b392a9 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Wed, 20 May 2026 17:10:19 +0200 Subject: [PATCH] Fixed so that CompendiumBrowserSettings saves source/pack names as slugified version to avoid foundrdy not saving names with dots in the middle --- module/applications/dialogs/CompendiumBrowserSettings.mjs | 7 +++++-- module/data/compendiumBrowserSettings.mjs | 7 +++++-- module/helpers/utils.mjs | 3 +-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/module/applications/dialogs/CompendiumBrowserSettings.mjs b/module/applications/dialogs/CompendiumBrowserSettings.mjs index bef54a6f..0e0987be 100644 --- a/module/applications/dialogs/CompendiumBrowserSettings.mjs +++ b/module/applications/dialogs/CompendiumBrowserSettings.mjs @@ -1,3 +1,5 @@ +import { slugify } from '../../helpers/utils.mjs'; + const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; export default class CompendiumBrowserSettings extends HandlebarsApplicationMixin(ApplicationV2) { @@ -50,11 +52,12 @@ export default class CompendiumBrowserSettings extends HandlebarsApplicationMixi const excludedSourceData = this.browserSettings.excludedSources; const excludedPackData = this.browserSettings.excludedPacks; context.typePackCollections = game.packs.reduce((acc, pack) => { - const { type, label, packageType, packageName: basePackageName, id } = pack.metadata; + const { type, label, packageType, packageName: basePackageName, id: baseId } = pack.metadata; if (!CompendiumBrowserSettings.#browserPackTypes.includes(type)) return acc; + const id = slugify(baseId); const isWorldPack = packageType === 'world'; - const packageName = isWorldPack ? 'world' : basePackageName; + const packageName = isWorldPack ? 'world' : slugify(basePackageName); const sourceChecked = !excludedSourceData[packageName] || !excludedSourceData[packageName].excludedDocumentTypes.includes(type); diff --git a/module/data/compendiumBrowserSettings.mjs b/module/data/compendiumBrowserSettings.mjs index ea71c439..290f68e0 100644 --- a/module/data/compendiumBrowserSettings.mjs +++ b/module/data/compendiumBrowserSettings.mjs @@ -1,3 +1,5 @@ +import { slugify } from '../helpers/utils.mjs'; + export default class CompendiumBrowserSettings extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; @@ -24,11 +26,12 @@ export default class CompendiumBrowserSettings extends foundry.abstract.DataMode const pack = game.packs.get(item.pack); if (!pack) return false; - const packageName = pack.metadata.packageType === 'world' ? 'world' : pack.metadata.packageName; + const packageName = pack.metadata.packageType === 'world' ? 'world' : slugify(pack.metadata.packageName); const excludedSourceData = this.excludedSources[packageName]; if (excludedSourceData && excludedSourceData.excludedDocumentTypes.includes(pack.metadata.type)) return true; - const excludedPackData = this.excludedPacks[item.pack]; + const packName = slugify(item.pack); + const excludedPackData = this.excludedPacks[packName]; if (excludedPackData && excludedPackData.excludedDocumentTypes.includes(pack.metadata.type)) return true; return false; diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 90937db4..68dfcb15 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -449,12 +449,11 @@ export async function createEmbeddedItemsWithEffects(actor, baseData) { effects: data.effects?.map(effect => effect.toObject()) }); } - await actor.createEmbeddedDocuments('Item', effectData); } export const slugify = name => { - return name.toLowerCase().replaceAll(' ', '-').replaceAll('.', ''); + return name.toLowerCase().replaceAll(' ', '-').replaceAll('.', '_'); }; export function shuffleArray(array) {