fix: unable to check on the checkbox field (#1593)

This change prevents race conditions between state updates and API
operations by updating local state immediately before making async
calls.
This commit is contained in:
Ephraim Duncan
2025-02-01 03:34:42 +00:00
committed by David Nguyen
parent c0ae68c28b
commit 06076c1809

View File

@ -181,28 +181,25 @@ export const DocumentSigningCheckboxField = ({
...checkedValues, ...checkedValues,
item.value.length > 0 ? item.value : `empty-value-${item.id}`, item.value.length > 0 ? item.value : `empty-value-${item.id}`,
]; ];
await removeSignedFieldWithToken({
token: recipient.token,
fieldId: field.id,
});
if (isLengthConditionMet) {
await signFieldWithToken({
token: recipient.token,
fieldId: field.id,
value: toCheckboxValue(checkedValues),
isBase64: true,
});
}
} else { } else {
updatedValues = checkedValues.filter( updatedValues = checkedValues.filter(
(v) => v !== item.value && v !== `empty-value-${item.id}`, (v) => v !== item.value && v !== `empty-value-${item.id}`,
); );
}
await removeSignedFieldWithToken({ setCheckedValues(updatedValues);
await removeSignedFieldWithToken({
token: recipient.token,
fieldId: field.id,
});
if (updatedValues.length > 0) {
await signFieldWithToken({
token: recipient.token, token: recipient.token,
fieldId: field.id, fieldId: field.id,
value: toCheckboxValue(updatedValues),
isBase64: true,
}); });
} }
} catch (err) { } catch (err) {
@ -214,7 +211,6 @@ export const DocumentSigningCheckboxField = ({
variant: 'destructive', variant: 'destructive',
}); });
} finally { } finally {
setCheckedValues(updatedValues);
await revalidate(); await revalidate();
} }
}; };