diff --git a/packages/bruno-app/src/components/Preferences/General/index.js b/packages/bruno-app/src/components/Preferences/General/index.js
index 14eff0709..8e603a091 100644
--- a/packages/bruno-app/src/components/Preferences/General/index.js
+++ b/packages/bruno-app/src/components/Preferences/General/index.js
@@ -37,6 +37,25 @@ const General = ({ close }) => {
.test('isValidTimeout', 'Request Timeout must be equal or greater than 0', (value) => {
return value === undefined || Number(value) >= 0;
}),
+ autoSave: Yup.object({
+ enabled: Yup.boolean(),
+ interval: Yup.mixed()
+ .transform((value, originalValue) => {
+ return originalValue === '' ? undefined : value;
+ })
+ .test('isNumber', 'Save Delay must be a number', (value) => {
+ return value === undefined || !isNaN(value);
+ })
+ .test('isValidInterval', 'Save Delay must be at least 100ms', (value) => {
+ return value === undefined || Number(value) >= 100;
+ })
+ }).test('intervalRequired', 'Save Delay is required when Auto Save is enabled', (value) => {
+ // If autosave is enabled, interval must be provided
+ if (value.enabled && (value.interval === undefined || value.interval === '')) {
+ return false;
+ }
+ return true;
+ }),
defaultCollectionLocation: Yup.string().max(1024)
});
@@ -53,6 +72,10 @@ const General = ({ close }) => {
timeout: preferences.request.timeout,
storeCookies: get(preferences, 'request.storeCookies', true),
sendCookies: get(preferences, 'request.sendCookies', true),
+ autoSave: {
+ enabled: get(preferences, 'autoSave.enabled', false),
+ interval: get(preferences, 'autoSave.interval', 1000)
+ },
defaultCollectionLocation: get(preferences, 'general.defaultCollectionLocation', '')
},
validationSchema: preferencesSchema,
@@ -83,12 +106,16 @@ const General = ({ close }) => {
storeCookies: newPreferences.storeCookies,
sendCookies: newPreferences.sendCookies
},
+ autoSave: {
+ enabled: newPreferences.autoSave.enabled,
+ interval: newPreferences.autoSave.interval
+ },
general: {
defaultCollectionLocation: newPreferences.defaultCollectionLocation
}
}))
.then(() => {
- toast.success('Preferences saved successfully')
+ toast.success('Preferences saved successfully');
close();
})
.catch((err) => console.log(err) && toast.error('Failed to update preferences'));
@@ -250,6 +277,43 @@ const General = ({ close }) => {
{formik.touched.timeout && formik.errors.timeout ? (
{formik.errors.timeout}
) : null}
+
+
+
+
+
+
+
+
+ {formik.touched.autoSave && formik.errors.autoSave && typeof formik.errors.autoSave === 'string' && (
+ {formik.errors.autoSave}
+ )}
+ {formik.touched.autoSave?.interval && formik.errors.autoSave?.interval && (
+ {formik.errors.autoSave.interval}
+ )}