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"], classes: ["sheet", "ds4-actor-sheet"],
tag: "form", tag: "form",
form: { form: {
handler: DS4ActorSheet.prototype._onSubmitForm,
submitOnChange: true, submitOnChange: true,
closeOnSubmit: false, 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 {Event} event - The form submission event
* @param {HTMLFormElement} form - The form element * @param {HTMLFormElement} form - The form element
* @param {FormDataExtended} formData - The form data * @param {FormDataExtended} formData - The form data
* @returns {object} The processed form data
*/ */
async _onSubmitForm(event, form, formData) { _processFormData(event, form, formData) {
const submitData = this._prepareSubmitData(event, form, formData); const submitData = foundry.utils.expandObject(formData.object);
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);
// Parse values for specific fields // 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") { if (key.includes("system.") && typeof value === "string") {
submitData[key] = this.parseValue(value); foundry.utils.setProperty(submitData, key, this.parseValue(value));
} }
} }