Web: Settings: Added backup store.

This commit is contained in:
Tatiana Lopaeva 2022-02-28 18:31:11 +03:00
parent c2518d3b1e
commit e4deaa19b0
5 changed files with 144 additions and 13 deletions

View File

@ -41,7 +41,6 @@ class BackupDesktopView extends React.Component {
enableRestore: false,
enableAutoBackup: false,
backupSchedule: {},
backupStorage: {},
commonThirdPartyList: {},
isLoading: true,
};
@ -60,6 +59,8 @@ class BackupDesktopView extends React.Component {
clearInterval(this.timerId);
}
setBasicSettings = async () => {
const { setThirdPartyStorage } = this.props;
const requests = [
enableRestore(),
enableAutoBackup(),
@ -89,12 +90,13 @@ class BackupDesktopView extends React.Component {
}
}
setThirdPartyStorage(backupStorage);
this.setState({
isLoading: false,
enableRestore: canRestore,
enableAutoBackup: canAutoBackup,
backupSchedule,
backupStorage,
commonThirdPartyList,
});
} catch (error) {
@ -179,7 +181,6 @@ class BackupDesktopView extends React.Component {
enableRestore,
enableAutoBackup,
backupSchedule,
backupStorage,
commonThirdPartyList,
link,
} = this.state;
@ -255,7 +256,6 @@ class BackupDesktopView extends React.Component {
<AutoBackup
isDesktop
backupSchedule={backupSchedule}
thirdPartyStorageInfo={backupStorage}
commonThirdPartyList={commonThirdPartyList}
/>
</div>
@ -290,11 +290,14 @@ class BackupDesktopView extends React.Component {
}
}
export default inject(({ auth }) => {
export default inject(({ auth, backup }) => {
const { language } = auth;
const { helpUrlCreatingBackup } = auth.settingsStore;
const { setThirdPartyStorage } = backup;
return {
helpUrlCreatingBackup,
language,
setThirdPartyStorage,
};
})(observer(withTranslation(["Settings", "Common"])(BackupDesktopView)));

View File

@ -938,7 +938,7 @@ class AutomaticBackup extends React.PureComponent {
time,
day
) => {
const { t } = this.props;
const { t, setThirdPartyStorage } = this.props;
try {
await createBackupSchedule(
@ -954,7 +954,7 @@ class AutomaticBackup extends React.PureComponent {
getBackupSchedule(),
getBackupStorage(),
]);
this.storageInfo = storageInfo;
setThirdPartyStorage(storageInfo);
this.selectedSchedule = true;
this.onSetDefaultOptions(selectedSchedule, true);
@ -1227,10 +1227,12 @@ class AutomaticBackup extends React.PureComponent {
);
}
}
export default inject(({ auth }) => {
export default inject(({ auth, backup }) => {
const { language } = auth;
const { setThirdPartyStorage } = backup;
return {
language,
setThirdPartyStorage,
};
})(withTranslation(["Settings", "Common"])(observer(AutomaticBackup)));

View File

@ -8,13 +8,14 @@ import SelectelStorage from "./storages/SelectelStorage";
import AmazonStorage from "./storages/AmazonStorage";
import { ThirdPartyStorages } from "@appserver/common/constants";
import { StyledAutoBackup } from "../../StyledBackup";
import { inject, observer } from "mobx-react";
let googleStorageId = ThirdPartyStorages.GoogleId;
class ThirdPartyStorageModule extends React.PureComponent {
constructor(props) {
super(props);
const { storageInfo } = this.props;
const { thirdPartyStorage } = this.props;
this.state = {
availableOptions: [],
@ -24,7 +25,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
selectedId: "",
};
storageInfo && this.getOptions(storageInfo);
thirdPartyStorage && this.getOptions(thirdPartyStorage);
this._isMount = false;
}
componentDidMount() {
@ -35,7 +36,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
this._isMount = false;
}
componentDidUpdate(prevProps) {
const { isSuccessSave, isReset, storageInfo } = this.props;
const { isSuccessSave, isReset, thirdPartyStorage } = this.props;
const {
defaultSelectedStorage,
selectedStorage,
@ -43,7 +44,7 @@ class ThirdPartyStorageModule extends React.PureComponent {
} = this.state;
if (isSuccessSave && isSuccessSave !== prevProps.isSuccessSave) {
storageInfo && this.getOptions(storageInfo);
thirdPartyStorage && this.getOptions(thirdPartyStorage);
}
if (isReset && isReset !== prevProps.isReset) {
@ -231,4 +232,9 @@ class ThirdPartyStorageModule extends React.PureComponent {
}
}
export default withTranslation("Settings")(ThirdPartyStorageModule);
export default inject(({ backup }) => {
const { thirdPartyStorage } = backup;
return {
thirdPartyStorage,
};
})(withTranslation("Settings")(observer(ThirdPartyStorageModule)));

View File

@ -0,0 +1,117 @@
import api from "@appserver/common/api";
import { makeAutoObservable } from "mobx";
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 BackupStore {
isMobileOnly = false;
backupSchedule = {};
backupStorage = {};
commonThirdPartyList = {};
defaultDay = "0";
defaultHour = "12:00";
defaultPeriodNumber = "0";
defaultPeriodLabel = "Every day";
defaultMaxCopiesNumber = "10";
defaultWeekday = null;
defaultWeekdayLabel = "";
defaultStorageType = null;
defaultFolderId = null;
selectedDay = "0";
selectedHour = "12:00";
selectedPeriodNumber = "0";
selectedPeriodLabel = "Every day";
selectedMaxCopiesNumber = "10";
selectedWeekday = null;
selectedWeekdayLabel = "";
selectedStorageType = null;
selectedFolderId = null;
thirdPartyStorage = [];
constructor() {
makeAutoObservable(this);
}
setIsMobileOnly = (isMobile) => {
this.isMobileOnly = isMobile;
};
setDefaultOptions = (t, periodObj, weekdayArr) => {
if (this.backupSchedule) {
const {
storageType,
cronParams,
backupsStored,
storageParams,
} = this.backupSchedule;
const { folderId } = storageParams;
const { period, day, hour } = cronParams;
this.defaultDay = `${day}`;
this.defaultHour = `${hour}:00`;
this.defaultPeriodNumber = `${period}`;
this.defaultMaxCopiesNumber = `${backupsStored}`;
this.defaultStorageType = `${storageType}`;
this.defaultFolderId = `${folderId}`;
this.selectedDay = this.defaultDay;
this.selectedHour = this.defaultHour;
this.selectedPeriodNumber = this.defaultPeriodNumber;
this.selectedMaxCopiesNumber = this.defaultMaxCopiesNumber;
this.selectedStorageType = this.defaultStorageType;
this.selectedFolderId = this.defaultFolderId;
this.defaultPeriodLabel = periodObj[+this.defaultPeriodNumber].label;
this.selectedPeriodLabel = this.defaultPeriodLabel;
this.defaultMonthDay =
this.defaultPeriodNumber === EVERY_WEEK_TYPE ||
this.defaultPeriodNumber === EVERY_DAY_TYPE
? "1"
: this.defaultDay;
this.selectedMonthDay = this.defaultMonthDay;
if (this.defaultPeriodNumber === EVERY_WEEK_TYPE) {
//Every Week option
let weekDay;
for (let i = 0; i < weekdayArr.length; i++) {
if (+weekdayArr[i].key === +this.defaultDay) {
weekDay = i;
}
}
this.defaultWeekdayLabel = weekdayArr[defaultDay ? weekDay : 0].label;
this.selectedWeekdayLabel = this.defaultWeekdayLabel;
this.defaultWeekday = this.defaultDay;
this.selectedWeekday = this.defaultWeekday;
} else {
this.defaultWeekday = weekdayArr[0].key;
this.defaultWeekdayLabel = weekdayArr[0].label;
this.selectedWeekdayLabel = this.defaultWeekdayLabel;
this.selectedWeekday = this.defaultWeekday;
}
}
};
setThirdPartyStorage = (list) => {
this.thirdPartyStorage = list;
};
}
export default BackupStore;

View File

@ -3,11 +3,13 @@ import PaymentStore from "./PaymentStore";
import WizardStore from "./WizardStore";
import SettingsSetupStore from "./SettingsSetupStore";
import ConfirmStore from "./ConfirmStore";
import BackupStore from "./BackupStore";
const paymentStore = new PaymentStore();
const wizardStore = new WizardStore();
const setupStore = new SettingsSetupStore();
const confirmStore = new ConfirmStore();
const backupStore = new BackupStore();
const store = {
auth: authStore,
@ -15,6 +17,7 @@ const store = {
wizard: wizardStore,
setup: setupStore,
confirm: confirmStore,
backup: backupStore,
};
export default store;