54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
export default class ActorHelpers {
|
|
static async actorUpdate(event, formData) {
|
|
formData = expandObject(formData);
|
|
|
|
// Handle the free-form relationship list
|
|
const formAttrs = expandObject(formData)?.data?.relationships || {};
|
|
|
|
const relationships = Object.values(formAttrs).reduce((obj, v) => {
|
|
let k = v["key"].trim();
|
|
delete v["key"];
|
|
obj[k] = v;
|
|
return obj;
|
|
}, {});
|
|
|
|
// Remove modifications which are no longer used
|
|
if (this.object.data?.data?.relationships) {
|
|
for (let k of Object.keys(this.object.data.data.relationships)) {
|
|
if (!relationships.hasOwnProperty(k)) relationships[`-=${k}`] = null;
|
|
}
|
|
}
|
|
|
|
// recombine modifications to formData
|
|
if (Object.keys(relationships).length > 0) {
|
|
setProperty(formData, `data.relationships`, relationships);
|
|
}
|
|
|
|
|
|
// Handle the free-form learnign list
|
|
const formAttrsLearning = expandObject(formData)?.data?.learning || {};
|
|
|
|
const learning = Object.values(formAttrsLearning).reduce((obj, v) => {
|
|
let k = v["key"].trim();
|
|
delete v["key"];
|
|
obj[k] = v;
|
|
return obj;
|
|
}, {});
|
|
|
|
// Remove modifications which are no longer used
|
|
if (this.object.data?.data?.learning) {
|
|
for (let k of Object.keys(this.object.data.data.learning)) {
|
|
if (!learning.hasOwnProperty(k)) learning[`-=${k}`] = null;
|
|
}
|
|
}
|
|
|
|
// recombine modifications to formData
|
|
if (Object.keys(learning).length > 0) {
|
|
setProperty(formData, `data.learning`, learning);
|
|
}
|
|
|
|
// Update the Item
|
|
this.actor.data.flags.loaded = false;
|
|
this.object.update(formData);
|
|
}
|
|
} |