refactor: refactor form submission logic in actor sheet

This commit is contained in:
Alexander Minges 2025-07-12 20:49:35 +02:00
parent cd44db079f
commit bfbd327e51
Signed by: Athemis
GPG key ID: 31FBDEF92DDB162B

View file

@ -12,7 +12,6 @@ export class DS4ActorSheet extends foundry.applications.api.DocumentSheetV2 {
classes: ["sheet", "ds4-actor-sheet"],
tag: "form",
form: {
handler: DS4ActorSheet.prototype._onSubmitForm,
submitOnChange: true,
closeOnSubmit: false,
},
@ -172,30 +171,19 @@ export class DS4ActorSheet extends foundry.applications.api.DocumentSheetV2 {
}
/**
* Handle form submission
* Process form data for submission
* @param {Event} event - The form submission event
* @param {HTMLFormElement} form - The form element
* @param {FormDataExtended} formData - The form data
* @returns {object} The processed form data
*/
async _onSubmitForm(event, form, formData) {
const submitData = this._prepareSubmitData(event, form, formData);
await this.document.update(submitData);
}
/**
* Prepare data for form submission
* @param {Event} event - The form submission event
* @param {HTMLFormElement} form - The form element
* @param {FormDataExtended} formData - The form data
* @returns {object} The prepared submit data
*/
_prepareSubmitData(event, form, formData) {
const submitData = super._prepareSubmitData(event, form, formData);
_processFormData(event, form, formData) {
const submitData = foundry.utils.expandObject(formData.object);
// Parse values for specific fields
for (const [key, value] of Object.entries(submitData)) {
for (const [key, value] of Object.entries(formData.object)) {
if (key.includes("system.") && typeof value === "string") {
submitData[key] = this.parseValue(value);
foundry.utils.setProperty(submitData, key, this.parseValue(value));
}
}