Web: AutoBackup: Refactoring.

This commit is contained in:
Tatiana Lopaeva 2022-03-04 16:12:06 +03:00
parent 10e8ab7a12
commit d6fe627217
5 changed files with 81 additions and 63 deletions

View File

@ -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";

View File

@ -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,

View File

@ -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 {

View File

@ -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)));

View File

@ -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,