diff --git a/packages/xo-web/src/xo-app/backup-ng/new/index.js b/packages/xo-web/src/xo-app/backup-ng/new/index.js index 174affbaa..47f9528bf 100644 --- a/packages/xo-web/src/xo-app/backup-ng/new/index.js +++ b/packages/xo-web/src/xo-app/backup-ng/new/index.js @@ -371,6 +371,13 @@ export default [ _, { cron, timezone, exportRetention, snapshotRetention } ) => async (state, props) => { + if (!state.exportMode) { + exportRetention = 0 + } + if (!state.snapshotMode) { + snapshotRetention = 0 + } + if (state.editionMode === 'creation') { return { ...state, diff --git a/packages/xo-web/src/xo-app/backup-ng/new/new-schedule.js b/packages/xo-web/src/xo-app/backup-ng/new/new-schedule.js index d8a67830a..3397d3e35 100644 --- a/packages/xo-web/src/xo-app/backup-ng/new/new-schedule.js +++ b/packages/xo-web/src/xo-app/backup-ng/new/new-schedule.js @@ -43,8 +43,8 @@ export default [ initialState: ({ schedule: { cron = '0 0 * * *', - exportRetention = 0, - snapshotRetention = 0, + exportRetention = 1, + snapshotRetention = 1, timezone = moment.tz.guess(), }, }) => ({ @@ -76,14 +76,27 @@ export default [ }), }, computed: { - isScheduleInvalid: ({ - cron, + isScheduleInvalid: ({ retentionNeeded, scheduleNotEdited }) => + retentionNeeded || scheduleNotEdited, + retentionNeeded: ({ + exportMode, exportRetention, + snapshotMode, + snapshotRetention, + }) => + !( + (exportMode && exportRetention !== 0) || + (snapshotMode && snapshotRetention !== 0) + ), + scheduleNotEdited: ({ + cron, + editionMode, + exportRetention, + oldSchedule, snapshotRetention, timezone, - oldSchedule, }) => - (snapshotRetention === 0 && exportRetention === 0) || + editionMode !== 'creation' && isEqual(oldSchedule, { cron, exportRetention,