Web: AutoBackup: Refactoring.
This commit is contained in:
parent
10e8ab7a12
commit
d6fe627217
@ -142,12 +142,29 @@ export const LoaderStyle = {
|
||||
animate: true,
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum for third-party storages.
|
||||
* @readonly
|
||||
*/
|
||||
export const ThirdPartyStorages = Object.freeze({
|
||||
GoogleId: "googlecloud",
|
||||
RackspaceId: "rackspace",
|
||||
SelectelId: "selectel",
|
||||
AmazonId: "s3",
|
||||
});
|
||||
/**
|
||||
* Enum for backup types.
|
||||
* @readonly
|
||||
*/
|
||||
export const BackupTypes = Object.freeze({
|
||||
DocumentModuleType: 0,
|
||||
ResourcesModuleType: 1,
|
||||
StorageModuleType: 5,
|
||||
|
||||
EveryDayType: 0,
|
||||
EveryWeekType: 1,
|
||||
EveryMonthType: 2,
|
||||
});
|
||||
|
||||
import config from "./AppServerConfig";
|
||||
|
||||
|
@ -14,7 +14,7 @@ import {
|
||||
import toastr from "@appserver/components/toast/toastr";
|
||||
import SelectFolderDialog from "files/SelectFolderDialog";
|
||||
import Loader from "@appserver/components/loader";
|
||||
import { AppServerConfig } from "@appserver/common/constants";
|
||||
import { AppServerConfig, BackupTypes } from "@appserver/common/constants";
|
||||
import { combineUrl } from "@appserver/common/utils";
|
||||
import FloatingButton from "@appserver/common/components/FloatingButton";
|
||||
import { StyledModules, StyledAutoBackup } from "../StyledBackup";
|
||||
@ -26,14 +26,15 @@ import { getBackupStorage } from "@appserver/common/api/settings";
|
||||
import { isMobileOnly } from "react-device-detect";
|
||||
|
||||
const { proxyURL } = AppServerConfig;
|
||||
const {
|
||||
DocumentModuleType,
|
||||
ResourcesModuleType,
|
||||
StorageModuleType,
|
||||
EveryDayType,
|
||||
EveryWeekType,
|
||||
EveryMonthType,
|
||||
} = BackupTypes;
|
||||
|
||||
const DOCUMENT_MODULE_TYPE = 0;
|
||||
const RESOURCES_MODULE_TYPE = 1;
|
||||
const STORAGES_MODULE_TYPE = 5;
|
||||
|
||||
const EVERY_DAY_TYPE = 0;
|
||||
const EVERY_WEEK_TYPE = 1;
|
||||
const EVERY_MONTH_TYPE = 2;
|
||||
class AutomaticBackup extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@ -279,7 +280,7 @@ class AutomaticBackup extends React.PureComponent {
|
||||
const { isEnable } = this.state;
|
||||
const { seStorageType, backupSchedule } = this.props;
|
||||
|
||||
seStorageType(DOCUMENT_MODULE_TYPE.toString());
|
||||
seStorageType(DocumentModuleType.toString());
|
||||
|
||||
if (backupSchedule) {
|
||||
this.setState({
|
||||
@ -397,14 +398,14 @@ class AutomaticBackup extends React.PureComponent {
|
||||
let day, period;
|
||||
|
||||
if (selectedPeriodNumber === "1") {
|
||||
period = EVERY_WEEK_TYPE;
|
||||
period = EveryWeekType;
|
||||
day = selectedWeekday;
|
||||
} else {
|
||||
if (selectedPeriodNumber === "2") {
|
||||
period = EVERY_MONTH_TYPE;
|
||||
period = EveryMonthType;
|
||||
day = selectedMonthDay;
|
||||
} else {
|
||||
period = EVERY_DAY_TYPE;
|
||||
period = EveryDayType;
|
||||
day = null;
|
||||
}
|
||||
}
|
||||
@ -412,10 +413,10 @@ class AutomaticBackup extends React.PureComponent {
|
||||
let time = selectedHour.substring(0, selectedHour.indexOf(":"));
|
||||
|
||||
const storageType = isCheckedDocuments
|
||||
? DOCUMENT_MODULE_TYPE
|
||||
? DocumentModuleType
|
||||
: isCheckedThirdParty
|
||||
? RESOURCES_MODULE_TYPE
|
||||
: STORAGES_MODULE_TYPE;
|
||||
? ResourcesModuleType
|
||||
: StorageModuleType;
|
||||
|
||||
const storageParams = [
|
||||
{
|
||||
@ -576,7 +577,15 @@ class AutomaticBackup extends React.PureComponent {
|
||||
isChangedInStorage,
|
||||
} = this.state;
|
||||
|
||||
console.log("backupSchedule", backupSchedule);
|
||||
console.log(
|
||||
"backupSchedule",
|
||||
DocumentModuleType,
|
||||
ResourcesModuleType,
|
||||
StorageModuleType,
|
||||
EveryDayType,
|
||||
EveryWeekType,
|
||||
EveryMonthType
|
||||
);
|
||||
|
||||
const isDisabledThirdPartyList = !!this.commonThirdPartyList;
|
||||
|
||||
@ -622,7 +631,7 @@ class AutomaticBackup extends React.PureComponent {
|
||||
<RadioButton
|
||||
{...commonRadioButtonProps}
|
||||
label={t("DocumentsModule")}
|
||||
name={`${DOCUMENT_MODULE_TYPE}`}
|
||||
name={`${DocumentModuleType}`}
|
||||
key={0}
|
||||
isChecked={isCheckedDocuments}
|
||||
isDisabled={isLoadingData}
|
||||
@ -639,7 +648,7 @@ class AutomaticBackup extends React.PureComponent {
|
||||
<RadioButton
|
||||
{...commonRadioButtonProps}
|
||||
label={t("ThirdPartyResource")}
|
||||
name={`${RESOURCES_MODULE_TYPE}`}
|
||||
name={`${ResourcesModuleType}`}
|
||||
isChecked={isCheckedThirdParty}
|
||||
isDisabled={isLoadingData || isDisabledThirdPartyList}
|
||||
/>
|
||||
@ -662,7 +671,7 @@ class AutomaticBackup extends React.PureComponent {
|
||||
<RadioButton
|
||||
{...commonRadioButtonProps}
|
||||
label={t("ThirdPartyStorage")}
|
||||
name={`${STORAGES_MODULE_TYPE}`}
|
||||
name={`${StorageModuleType}`}
|
||||
isChecked={isCheckedThirdPartyStorage}
|
||||
isDisabled={isLoadingData}
|
||||
/>
|
||||
@ -745,11 +754,10 @@ export default inject(({ auth, backup }) => {
|
||||
selectedFolderId,
|
||||
selectedStorageId,
|
||||
} = backup;
|
||||
const isCheckedDocuments = selectedStorageType === `${DOCUMENT_MODULE_TYPE}`;
|
||||
const isCheckedThirdParty =
|
||||
selectedStorageType === `${RESOURCES_MODULE_TYPE}`;
|
||||
const isCheckedDocuments = selectedStorageType === `${DocumentModuleType}`;
|
||||
const isCheckedThirdParty = selectedStorageType === `${ResourcesModuleType}`;
|
||||
const isCheckedThirdPartyStorage =
|
||||
selectedStorageType === `${STORAGES_MODULE_TYPE}`;
|
||||
selectedStorageType === `${StorageModuleType}`;
|
||||
|
||||
return {
|
||||
language,
|
||||
|
@ -2,6 +2,7 @@ import React from "react";
|
||||
import SelectFolderInput from "files/SelectFolderInput";
|
||||
import ScheduleComponent from "./ScheduleComponent";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { BackupTypes } from "@appserver/common/constants";
|
||||
|
||||
class DocumentsModule extends React.PureComponent {
|
||||
constructor(props) {
|
||||
@ -67,7 +68,9 @@ class DocumentsModule extends React.PureComponent {
|
||||
export default inject(({ backup }) => {
|
||||
const { setSelectedFolder, defaultFolderId, defaultStorageType } = backup;
|
||||
|
||||
const isDocumentsDefault = defaultStorageType === `0`;
|
||||
const isDocumentsDefault =
|
||||
defaultStorageType === `${BackupTypes.DocumentModuleType}`;
|
||||
|
||||
const passedId = isDocumentsDefault ? defaultFolderId : "";
|
||||
|
||||
return {
|
||||
|
@ -3,6 +3,7 @@ import { withTranslation } from "react-i18next";
|
||||
import SelectFolderInput from "files/SelectFolderInput";
|
||||
import ScheduleComponent from "./ScheduleComponent";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { BackupTypes } from "@appserver/common/constants";
|
||||
class ThirdPartyModule extends React.PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@ -24,26 +25,27 @@ class ThirdPartyModule extends React.PureComponent {
|
||||
});
|
||||
};
|
||||
|
||||
onSelectFolder = (selectedFolder) => {
|
||||
const { setSelectedFolder } = this.props;
|
||||
setSelectedFolder(selectedFolder);
|
||||
};
|
||||
|
||||
render() {
|
||||
const { isPanelVisible } = this.state;
|
||||
const {
|
||||
|
||||
isError,
|
||||
isLoadingData,
|
||||
isReset,
|
||||
isThirdPartyDefault,
|
||||
defaultSelectedFolder,
|
||||
isSuccessSave,
|
||||
setSelectedFolder,
|
||||
passedId,
|
||||
...rest
|
||||
} = this.props;
|
||||
|
||||
const passedId = isThirdPartyDefault ? defaultSelectedFolder : "";
|
||||
return (
|
||||
<>
|
||||
<div className="auto-backup_folder-input">
|
||||
<SelectFolderInput
|
||||
onSelectFolder={setSelectedFolder}
|
||||
onSelectFolder={this.onSelectFolder}
|
||||
onClose={this.onClose}
|
||||
onClickInput={this.onClickInput}
|
||||
isPanelVisible={isPanelVisible}
|
||||
@ -62,9 +64,14 @@ class ThirdPartyModule extends React.PureComponent {
|
||||
}
|
||||
|
||||
export default inject(({ backup }) => {
|
||||
const { setSelectedFolder } = backup;
|
||||
const { setSelectedFolder, defaultFolderId, defaultStorageType } = backup;
|
||||
|
||||
const isResourcesDefault =
|
||||
defaultStorageType === `${BackupTypes.ResourcesModuleType}`;
|
||||
const passedId = isResourcesDefault ? defaultFolderId : "";
|
||||
|
||||
return {
|
||||
setSelectedFolder,
|
||||
passedId,
|
||||
};
|
||||
})(withTranslation("Settings")(observer(ThirdPartyModule)));
|
||||
|
@ -1,7 +1,6 @@
|
||||
import React from "react";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import ComboBox from "@appserver/components/combobox";
|
||||
import { getBackupStorage } from "@appserver/common/api/settings";
|
||||
import GoogleCloudStorage from "./storages/GoogleCloudStorage";
|
||||
import RackspaceStorage from "./storages/RackspaceStorage";
|
||||
import SelectelStorage from "./storages/SelectelStorage";
|
||||
@ -20,7 +19,6 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
this.state = {
|
||||
availableOptions: [],
|
||||
availableStorage: {},
|
||||
|
||||
};
|
||||
|
||||
thirdPartyStorage && this.getOptions(thirdPartyStorage);
|
||||
@ -35,13 +33,10 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
}
|
||||
componentDidUpdate(prevProps) {
|
||||
const { isSuccessSave, isReset, thirdPartyStorage } = this.props;
|
||||
|
||||
|
||||
if (isSuccessSave && isSuccessSave !== prevProps.isSuccessSave) {
|
||||
thirdPartyStorage && this.getOptions(thirdPartyStorage);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
getOptions = (storageBackup) => {
|
||||
@ -53,8 +48,6 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
let options = [];
|
||||
let availableStorage = {};
|
||||
|
||||
let newState = {};
|
||||
|
||||
for (let item = 0; item < storageBackup.length; item++) {
|
||||
const backupElem = storageBackup[item];
|
||||
|
||||
@ -81,8 +74,6 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
if (current) {
|
||||
isSetDefaultIdStorage = true;
|
||||
!this._isMount ? setStorageId(null, id) : setStorageId(id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (!isFirstSet && isSet) {
|
||||
@ -93,31 +84,27 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
|
||||
if (!isSetDefaultIdStorage && !isFirstSet) {
|
||||
const currentStorage = availableStorage[googleStorageId];
|
||||
const { id, title } = currentStorage;
|
||||
const { id } = currentStorage;
|
||||
|
||||
!this._isMount ? setStorageId(null, id) : setStorageId(id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (!isSetDefaultIdStorage && isFirstSet) {
|
||||
const currentStorage = availableStorage[firstSetId];
|
||||
const { id, title } = currentStorage;
|
||||
const { id } = currentStorage;
|
||||
|
||||
!this._isMount ? setStorageId(null, id) : setStorageId(id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
newState = {
|
||||
|
||||
availableOptions: options,
|
||||
availableStorage: availableStorage,
|
||||
};
|
||||
|
||||
this._isMount
|
||||
? this.setState({ ...newState })
|
||||
: (this.state = { ...newState });
|
||||
? this.setState({
|
||||
availableOptions: options,
|
||||
availableStorage: availableStorage,
|
||||
})
|
||||
: (this.state = {
|
||||
availableOptions: options,
|
||||
availableStorage: availableStorage,
|
||||
});
|
||||
};
|
||||
|
||||
onSelect = (option) => {
|
||||
@ -127,8 +114,6 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
const storage = availableStorage[selectedStorageId];
|
||||
|
||||
setStorageId(storage.id);
|
||||
|
||||
|
||||
};
|
||||
|
||||
render() {
|
||||
@ -138,11 +123,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
selectedStorageId,
|
||||
...rest
|
||||
} = this.props;
|
||||
const {
|
||||
availableOptions,
|
||||
availableStorage,
|
||||
|
||||
} = this.state;
|
||||
const { availableOptions, availableStorage } = this.state;
|
||||
|
||||
const commonProps = {
|
||||
selectedStorage: availableStorage[selectedStorageId],
|
||||
@ -153,6 +134,8 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
|
||||
const { GoogleId, RackspaceId, SelectelId, AmazonId } = ThirdPartyStorages;
|
||||
|
||||
const storageTitle = availableStorage[selectedStorageId]?.title;
|
||||
|
||||
return (
|
||||
<StyledAutoBackup>
|
||||
<div className="auto-backup_storages-module">
|
||||
@ -160,7 +143,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
options={availableOptions}
|
||||
selectedOption={{
|
||||
key: 0,
|
||||
label: availableStorage[selectedStorageId]?.title,
|
||||
label: storageTitle,
|
||||
}}
|
||||
onSelect={this.onSelect}
|
||||
isDisabled={isLoadingData}
|
||||
@ -194,7 +177,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
|
||||
|
||||
export default inject(({ backup }) => {
|
||||
const { thirdPartyStorage, setStorageId, selectedStorageId } = backup;
|
||||
console.log("selectedStorageId in module", selectedStorageId);
|
||||
|
||||
return {
|
||||
thirdPartyStorage,
|
||||
setStorageId,
|
||||
|
Loading…
Reference in New Issue
Block a user