mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
fix: envelope autosave (#2103)
This commit is contained in:
@ -306,7 +306,10 @@ export const setFieldsForDocument = async ({
|
||||
});
|
||||
}
|
||||
|
||||
return upsertedField;
|
||||
return {
|
||||
...upsertedField,
|
||||
formId: field.formId,
|
||||
};
|
||||
}),
|
||||
);
|
||||
});
|
||||
@ -340,17 +343,25 @@ export const setFieldsForDocument = async ({
|
||||
}
|
||||
|
||||
// Filter out fields that have been removed or have been updated.
|
||||
const filteredFields = existingFields.filter((field) => {
|
||||
const isRemoved = removedFields.find((removedField) => removedField.id === field.id);
|
||||
const isUpdated = persistedFields.find((persistedField) => persistedField.id === field.id);
|
||||
const mappedFilteredFields = existingFields
|
||||
.filter((field) => {
|
||||
const isRemoved = removedFields.find((removedField) => removedField.id === field.id);
|
||||
const isUpdated = persistedFields.find((persistedField) => persistedField.id === field.id);
|
||||
|
||||
return !isRemoved && !isUpdated;
|
||||
});
|
||||
return !isRemoved && !isUpdated;
|
||||
})
|
||||
.map((field) => ({
|
||||
...mapFieldToLegacyField(field, envelope),
|
||||
formId: undefined,
|
||||
}));
|
||||
|
||||
const mappedPersistentFields = persistedFields.map((field) => ({
|
||||
...mapFieldToLegacyField(field, envelope),
|
||||
formId: field?.formId,
|
||||
}));
|
||||
|
||||
return {
|
||||
fields: [...filteredFields, ...persistedFields].map((field) =>
|
||||
mapFieldToLegacyField(field, envelope),
|
||||
),
|
||||
fields: [...mappedFilteredFields, ...mappedPersistentFields],
|
||||
};
|
||||
};
|
||||
|
||||
@ -359,6 +370,7 @@ export const setFieldsForDocument = async ({
|
||||
*/
|
||||
type FieldData = {
|
||||
id?: number | null;
|
||||
formId?: string;
|
||||
envelopeItemId: string;
|
||||
type: FieldType;
|
||||
recipientId: number;
|
||||
|
||||
@ -27,6 +27,7 @@ export type SetFieldsForTemplateOptions = {
|
||||
id: EnvelopeIdOptions;
|
||||
fields: {
|
||||
id?: number | null;
|
||||
formId?: string;
|
||||
envelopeItemId: string;
|
||||
type: FieldType;
|
||||
recipientId: number;
|
||||
@ -111,10 +112,10 @@ export const setFieldsForTemplate = async ({
|
||||
};
|
||||
});
|
||||
|
||||
const persistedFields = await prisma.$transaction(
|
||||
const persistedFields = await Promise.all(
|
||||
// Disabling as wrapping promises here causes type issues
|
||||
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
||||
linkedFields.map((field) => {
|
||||
linkedFields.map(async (field) => {
|
||||
const parsedFieldMeta = field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined;
|
||||
|
||||
if (field.type === FieldType.TEXT && field.fieldMeta) {
|
||||
@ -176,7 +177,7 @@ export const setFieldsForTemplate = async ({
|
||||
}
|
||||
|
||||
// Proceed with upsert operation
|
||||
return prisma.field.upsert({
|
||||
const upsertedField = await prisma.field.upsert({
|
||||
where: {
|
||||
id: field._persisted?.id ?? -1,
|
||||
envelopeId: envelope.id,
|
||||
@ -219,6 +220,11 @@ export const setFieldsForTemplate = async ({
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
...upsertedField,
|
||||
formId: field.formId,
|
||||
};
|
||||
}),
|
||||
);
|
||||
|
||||
@ -240,9 +246,17 @@ export const setFieldsForTemplate = async ({
|
||||
return !isRemoved && !isUpdated;
|
||||
});
|
||||
|
||||
const mappedFilteredFields = filteredFields.map((field) => ({
|
||||
...mapFieldToLegacyField(field, envelope),
|
||||
formId: undefined,
|
||||
}));
|
||||
|
||||
const mappedPersistentFields = persistedFields.map((field) => ({
|
||||
...mapFieldToLegacyField(field, envelope),
|
||||
formId: field?.formId,
|
||||
}));
|
||||
|
||||
return {
|
||||
fields: [...filteredFields, ...persistedFields].map((field) =>
|
||||
mapFieldToLegacyField(field, envelope),
|
||||
),
|
||||
fields: [...mappedFilteredFields, ...mappedPersistentFields],
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user