diff --git a/module/applications/ui/itemBrowser.mjs b/module/applications/ui/itemBrowser.mjs index 67a16f6a..4bdc1b31 100644 --- a/module/applications/ui/itemBrowser.mjs +++ b/module/applications/ui/itemBrowser.mjs @@ -277,7 +277,7 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { (await foundry.applications.ux.TextEditor.implementation.enrichHTML(item.description)); } - this.fieldFilter = this._createFieldFilter(); + this.fieldFilter = await this._createFieldFilter(); if (this.presets?.filter) { Object.entries(this.presets.filter).forEach(([k, v]) => { @@ -355,12 +355,12 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { ); } - _createFieldFilter() { + async _createFieldFilter() { const filters = ItemBrowser.getFolderConfig(this.selectedMenu.data, 'filters'); - filters.forEach(f => { + for(const f of filters) { if (typeof f.field === 'string') f.field = foundry.utils.getProperty(game, f.field); else if (typeof f.choices === 'function') { - f.choices = f.choices(this.items); + f.choices = await f.choices(this.items); } // Clear field label so template uses our custom label parameter @@ -370,7 +370,8 @@ export class ItemBrowser extends HandlebarsApplicationMixin(ApplicationV2) { f.name ??= f.key; f.value = this.presets?.filter?.[f.name]?.value ?? null; - }); + } + return filters; } diff --git a/module/config/itemBrowserConfig.mjs b/module/config/itemBrowserConfig.mjs index 04b387cb..0bb805b6 100644 --- a/module/config/itemBrowserConfig.mjs +++ b/module/config/itemBrowserConfig.mjs @@ -393,15 +393,18 @@ export const typeConfig = { ], filters: [ { - key: 'system.linkedClass.uuid', + key: 'system.linkedClass', label: 'TYPES.Item.class', - choices: items => { - const list = items - .filter(item => item.system.linkedClass) - .map(item => ({ - value: item.system.linkedClass.uuid, - label: item.system.linkedClass.name - })); + choices: async items => { + const list = []; + for(const item of items.filter(item => item.system.linkedClass)) { + const linkedClass = await foundry.utils.fromUuid(item.system.linkedClass); + list.push({ + value: linkedClass.uuid, + label: linkedClass.name + }); + } + return list.reduce((a, c) => { if (!a.find(i => i.value === c.value)) a.push(c); return a;