From 97ddf651a074164d1333b710fe0bba6db30fdd04 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Sat, 15 Nov 2025 05:51:34 -0800 Subject: [PATCH] Prune missing party members (#1285) --- module/data/actor/party.mjs | 3 +-- module/data/fields/foreignDocumentUUIDArrayField.mjs | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/module/data/actor/party.mjs b/module/data/actor/party.mjs index 93fb3cde..77b17045 100644 --- a/module/data/actor/party.mjs +++ b/module/data/actor/party.mjs @@ -7,7 +7,7 @@ export default class DhParty extends BaseDataActor { const fields = foundry.data.fields; return { ...super.defineSchema(), - partyMembers: new ForeignDocumentUUIDArrayField({ type: 'Actor' }), + partyMembers: new ForeignDocumentUUIDArrayField({ type: 'Actor' }, { prune: true }), notes: new fields.HTMLField(), gold: new fields.SchemaField({ coins: new fields.NumberField({ initial: 0, integer: true }), @@ -27,7 +27,6 @@ export default class DhParty extends BaseDataActor { prepareBaseData() { super.prepareBaseData(); - this.partyMembers = this.partyMembers.filter(p => !!p); // Register this party to all members if (game.actors.get(this.parent.id) === this.parent) { diff --git a/module/data/fields/foreignDocumentUUIDArrayField.mjs b/module/data/fields/foreignDocumentUUIDArrayField.mjs index 1cf120d8..abb67dff 100644 --- a/module/data/fields/foreignDocumentUUIDArrayField.mjs +++ b/module/data/fields/foreignDocumentUUIDArrayField.mjs @@ -15,6 +15,9 @@ export default class ForeignDocumentUUIDArrayField extends foundry.data.fields.A /** @inheritdoc */ initialize(value, model, options = {}) { const v = super.initialize(value, model, options); - return () => v.map(entry => (typeof entry === 'function' ? entry() : entry)); + return () => { + const data = v.map(entry => (typeof entry === 'function' ? entry() : entry)); + return this.options.prune ? data.filter((d) => !!d) : d; + }; } }