mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-08-20 06:35:54 +02:00
v2.35.0
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
export default async function setWidgetPreferences(request) {
|
||||
if (!request?.user) {
|
||||
throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'User is not authenticated.');
|
||||
}
|
||||
const dateWidgetParams = request?.params?.dateWidget;
|
||||
if (!dateWidgetParams || Object.keys(dateWidgetParams).length === 0) {
|
||||
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'Please provide parameters.');
|
||||
}
|
||||
try {
|
||||
const orgQuery = new Parse.Query('contracts_Users');
|
||||
orgQuery.equalTo('UserId', request.user);
|
||||
const userObj = await orgQuery.first({ useMasterKey: true });
|
||||
if (!userObj) {
|
||||
throw new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, 'Permission denied.');
|
||||
}
|
||||
|
||||
const widgetPreferencesRaw = userObj?.get('WidgetPreferences');
|
||||
const widgetPreferences = Array.isArray(widgetPreferencesRaw) ? widgetPreferencesRaw : [];
|
||||
|
||||
// Normalize booleans (simple + safe)
|
||||
const dateWidget = {
|
||||
type: 'date',
|
||||
isSigningDate: !!dateWidgetParams.isSigningDate,
|
||||
isReadOnly: !!dateWidgetParams.isReadOnly,
|
||||
date: dateWidgetParams?.isSigningDate ? '' : dateWidgetParams?.date || '',
|
||||
format: dateWidgetParams.format || 'MM/dd/yyyy',
|
||||
};
|
||||
|
||||
// Upsert: replace if exists, otherwise append
|
||||
const updatedWidgetPreferences =
|
||||
widgetPreferences?.length > 0
|
||||
? widgetPreferences.map(w => (w.type === 'date' ? dateWidget : w))
|
||||
: [...widgetPreferences, dateWidget];
|
||||
|
||||
userObj.set('WidgetPreferences', updatedWidgetPreferences);
|
||||
const saved = await userObj.save(null, { useMasterKey: true });
|
||||
if (saved) {
|
||||
const response = typeof saved.toJSON === 'function' ? saved.toJSON() : saved;
|
||||
return {
|
||||
WidgetPreferences: response.WidgetPreferences,
|
||||
updatedAt: response.updatedAt,
|
||||
createdAt: response.createdAt,
|
||||
};
|
||||
}
|
||||
} catch (err) {
|
||||
console.log('set widget preferences error:', err);
|
||||
throw new Parse.Error(err?.code || 400, err?.message || 'Something went wrong.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user