fix(hooks): remove auto editMode flag setting to prevent phase errors
The createActor hook was causing 'ActiveEffect application phase already completed' errors because setFlag() triggers actor updates which call prepareData() -> prepareEmbeddedDocuments() -> applyActiveEffects(). Even with setTimeout delays, the error persisted. The cleanest solution is to remove the auto-setting entirely. Users can enable edit mode manually via the checkbox in the character sheet (which is preserved). This prevents the error on: - Character sheet profile editing - Creature sheet creation - Group sheet profile editing Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
+6
-13
@@ -147,17 +147,10 @@ export const registerHooks = function () {
|
|||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Hooks.on("createActor", async function (actor, options, id) {
|
// Note: editMode flag is no longer auto-set on actor creation to avoid
|
||||||
// Delay flag setting to avoid the "phase already completed" error
|
// "ActiveEffect application phase already completed" errors.
|
||||||
// When an actor is created, it goes through data preparation which applies effects.
|
// Users can enable edit mode manually via the checkbox in the character sheet.
|
||||||
// If we call setFlag() immediately, it triggers updateActor -> prepareData ->
|
// Hooks.on("createActor", async function (actor, options, id) {
|
||||||
// prepareEmbeddedDocuments() which tries to apply effects again, causing the error.
|
// actor.setFlag("world", "editMode", true);
|
||||||
// By using setTimeout with 0ms, we defer the flag setting until after the current
|
// })
|
||||||
// preparation cycle is complete.
|
|
||||||
setTimeout(() => {
|
|
||||||
actor.setFlag("world", "editMode", true).catch(err => {
|
|
||||||
console.error("Vermine2047 | Failed to set editMode flag:", err);
|
|
||||||
});
|
|
||||||
}, 0);
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user