From df4e04d4276711dc2814dca5152a82799ce3dbc1 Mon Sep 17 00:00:00 2001 From: Michael An <2331806369@qq.com> Date: Wed, 5 Mar 2025 16:55:39 +0800 Subject: [PATCH] fix set repo history validation (#7563) --- .../lib-settings/lib-history-setting-panel.js | 26 +++++++++++-------- .../sysadmin-lib-history-setting-dialog.js | 26 +++++++++++-------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/frontend/src/components/dialog/lib-settings/lib-history-setting-panel.js b/frontend/src/components/dialog/lib-settings/lib-history-setting-panel.js index 38e2380e52..a8df5f4fc4 100644 --- a/frontend/src/components/dialog/lib-settings/lib-history-setting-panel.js +++ b/frontend/src/components/dialog/lib-settings/lib-history-setting-panel.js @@ -48,21 +48,25 @@ class LibHistorySetting extends React.Component { days = this.state.expireDays; } let repoID = this.props.repoID; - if (Number(days) > 0) { - let message = gettext('Successfully set library history.'); - seafileAPI.setRepoHistoryLimit(repoID, parseInt(days)).then(res => { - toaster.success(message); - this.setState({ keepDays: res.data.keep_days }); - this.props.toggleDialog(); - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); - } else { + // If it's allHistory, days is always -1, no validation is needed; + // If it's noHistory, days is always 0, no validation is needed; + // If it's autoHistory, days needs to be validated to be greater than 0." + if (this.state.autoHistory && Number(days) <= 0) { this.setState({ errorInfo: gettext('Please enter a non-negative integer'), }); + return; } + + let message = gettext('Successfully set library history.'); + seafileAPI.setRepoHistoryLimit(repoID, parseInt(days)).then(res => { + toaster.success(message); + this.setState({ keepDays: res.data.keep_days }); + this.props.toggleDialog(); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); + }); }; handleKeyDown = (e) => { diff --git a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog.js b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog.js index f47508469e..2e2577fc29 100644 --- a/frontend/src/components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog.js +++ b/frontend/src/components/dialog/sysadmin-dialog/sysadmin-lib-history-setting-dialog.js @@ -50,21 +50,25 @@ class SysAdminLibHistorySettingDialog extends React.Component { days = this.state.expireDays; } let repoID = this.props.repoID; - if (Number(days) > 0) { - let message = gettext('Successfully set library history.'); - systemAdminAPI.sysAdminUpdateRepoHistorySetting(repoID, parseInt(days)).then(res => { - toaster.success(message); - this.setState({ keepDays: res.data.keep_days }); - this.props.toggleDialog(); - }).catch(error => { - let errMessage = Utils.getErrorMsg(error); - toaster.danger(errMessage); - }); - } else { + // If it's allHistory, days is always -1, no validation is needed; + // If it's noHistory, days is always 0, no validation is needed; + // If it's autoHistory, days needs to be validated to be greater than 0." + if (this.state.autoHistory && Number(days) <= 0) { this.setState({ errorInfo: gettext('Please enter a non-negative integer'), }); + return; } + + let message = gettext('Successfully set library history.'); + systemAdminAPI.sysAdminUpdateRepoHistorySetting(repoID, parseInt(days)).then(res => { + toaster.success(message); + this.setState({ keepDays: res.data.keep_days }); + this.props.toggleDialog(); + }).catch(error => { + let errMessage = Utils.getErrorMsg(error); + toaster.danger(errMessage); + }); }; handleKeyDown = (e) => {