We have a form, for the appointment entity, for which we've registered an onsave-handling function. The intent is to display a confirmation dialog to the user when certain fields have been modified. To do this, the function cancels the initial save operation, then if the user clicks to confirm, it performs a second save operation asynchronously (with a check so that the function is not triggered again).
The code is roughly:
let confirmDialogIsOpen = false;
async function confirmSave(saveContext) {
if (confirmDialogIsOpen) {
// Allow save event from user confirmation
return;
}
confirmDialogIsOpen = true;
// Prevent save operation before async-break
saveContext.getEventArgs().preventDefault();
// ***Function synchronously returns here***
// Get result for confirmation dialog
const userHasConfirmed = await saveUserConfirmation();
if (userHasConfirmed) {
// Perform second save operation
saveContext.getFormContext().data.entity.save();
}
confirmDialogIsOpen = false;
}
This works correctly in the old-style default hub, and in Customer Service Hub. However, in Sales Hub the `.preventDefault()` call seemingly has no effect. No exception is thrown, and when the function synchronously returns before the async break, the save is performed and the form is soft-reloaded.
Has anyone else experienced/worked around this? Is it a known issue?