mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-06-05 20:34:15 +02:00
[Fix] Preload ancestry and community features in description (#1967)
* Preload ancestry and community features in description * Corrected comments --------- Co-authored-by: WBHarry <williambjrklund@gmail.com>
This commit is contained in:
parent
5ac4fc3b9c
commit
c0c9095847
4 changed files with 13 additions and 4 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import BaseDataItem from './base.mjs';
|
import BaseDataItem from './base.mjs';
|
||||||
import ItemLinkFields from '../../data/fields/itemLinkFields.mjs';
|
import ItemLinkFields from '../../data/fields/itemLinkFields.mjs';
|
||||||
import { getFeaturesHTMLData } from '../../helpers/utils.mjs';
|
import { fromUuids, getFeaturesHTMLData } from '../../helpers/utils.mjs';
|
||||||
|
|
||||||
export default class DHAncestry extends BaseDataItem {
|
export default class DHAncestry extends BaseDataItem {
|
||||||
/** @inheritDoc */
|
/** @inheritDoc */
|
||||||
|
|
@ -45,6 +45,10 @@ export default class DHAncestry extends BaseDataItem {
|
||||||
|
|
||||||
/**@inheritdoc */
|
/**@inheritdoc */
|
||||||
async getDescriptionData() {
|
async getDescriptionData() {
|
||||||
|
// Preload all ancestry features for acquisition from the cache
|
||||||
|
// todo: make feature acquisition async and replace feature helpers for methods
|
||||||
|
await fromUuids(this._source.features.map(f => f.item));
|
||||||
|
|
||||||
const baseDescription = this.description;
|
const baseDescription = this.description;
|
||||||
const features = await getFeaturesHTMLData(this.features);
|
const features = await getFeaturesHTMLData(this.features);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { getFeaturesHTMLData } from '../../helpers/utils.mjs';
|
import { fromUuids, getFeaturesHTMLData } from '../../helpers/utils.mjs';
|
||||||
import ForeignDocumentUUIDArrayField from '../fields/foreignDocumentUUIDArrayField.mjs';
|
import ForeignDocumentUUIDArrayField from '../fields/foreignDocumentUUIDArrayField.mjs';
|
||||||
import BaseDataItem from './base.mjs';
|
import BaseDataItem from './base.mjs';
|
||||||
|
|
||||||
|
|
@ -27,6 +27,10 @@ export default class DHCommunity extends BaseDataItem {
|
||||||
|
|
||||||
/**@inheritdoc */
|
/**@inheritdoc */
|
||||||
async getDescriptionData() {
|
async getDescriptionData() {
|
||||||
|
// Preload all community features for acquisition from the cache
|
||||||
|
// todo: make feature acquisition async and replace feature helpers for methods
|
||||||
|
await fromUuids(this._source.features);
|
||||||
|
|
||||||
const baseDescription = this.description;
|
const baseDescription = this.description;
|
||||||
const features = await getFeaturesHTMLData(this.features);
|
const features = await getFeaturesHTMLData(this.features);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ export default class DHSubclass extends BaseDataItem {
|
||||||
? game.i18n.localize(CONFIG.DH.ACTOR.abilities[this.spellcastingTrait].label)
|
? game.i18n.localize(CONFIG.DH.ACTOR.abilities[this.spellcastingTrait].label)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
// Preload all class features for acquisition from the cache
|
// Preload all subclass features for acquisition from the cache
|
||||||
// todo: make feature acquisition async and replace feature helpers for methods
|
// todo: make feature acquisition async and replace feature helpers for methods
|
||||||
await fromUuids(this._source.features.map(f => f.item));
|
await fromUuids(this._source.features.map(f => f.item));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -879,6 +879,7 @@ export async function fromUuids(uuids) {
|
||||||
const packEmbeddedEntries = entries.filter(
|
const packEmbeddedEntries = entries.filter(
|
||||||
e =>
|
e =>
|
||||||
!(e.value instanceof Document) &&
|
!(e.value instanceof Document) &&
|
||||||
|
e.parsed &&
|
||||||
e.parsed.collection instanceof foundry.documents.collections.CompendiumCollection &&
|
e.parsed.collection instanceof foundry.documents.collections.CompendiumCollection &&
|
||||||
e.parsed.embedded.length > 0
|
e.parsed.embedded.length > 0
|
||||||
);
|
);
|
||||||
|
|
@ -895,7 +896,7 @@ export async function fromUuids(uuids) {
|
||||||
const pack = game.packs.get(packGroup[0].value.pack);
|
const pack = game.packs.get(packGroup[0].value.pack);
|
||||||
if (!pack) continue;
|
if (!pack) continue;
|
||||||
|
|
||||||
const ids = packGroup.map(p => p.parsed.id);
|
const ids = packGroup.map(p => p.parsed?.id).filter(id => !!id);
|
||||||
const documents = await pack.getDocuments({ _id__in: ids });
|
const documents = await pack.getDocuments({ _id__in: ids });
|
||||||
for (const p of packGroup) {
|
for (const p of packGroup) {
|
||||||
p.value = documents.find(d => d.id === p.parsed.id) ?? p.value;
|
p.value = documents.find(d => d.id === p.parsed.id) ?? p.value;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue