2021-07-07 05:31:48 +00:00
|
|
|
import React, { useEffect, useState } from 'react';
|
|
|
|
import exportService from 'services/exportService';
|
|
|
|
import { getData, LS_KEYS, setData } from 'utils/storage/localStorage';
|
2021-07-06 11:23:13 +00:00
|
|
|
import ExportFinished from './ExportFinished';
|
2021-07-06 09:20:05 +00:00
|
|
|
import ExportInit from './ExportInit';
|
|
|
|
import ExportInProgress from './ExportInProgress';
|
|
|
|
|
2021-07-07 05:31:48 +00:00
|
|
|
export enum ExportState {
|
2021-07-06 09:20:05 +00:00
|
|
|
INIT,
|
|
|
|
INPROGRESS,
|
|
|
|
FINISHED
|
|
|
|
}
|
|
|
|
|
2021-07-07 05:31:48 +00:00
|
|
|
interface Props {
|
|
|
|
show: boolean
|
|
|
|
onHide: () => void
|
|
|
|
usage: number
|
|
|
|
}
|
|
|
|
export default function ExportModal(props: Props) {
|
2021-07-06 09:20:05 +00:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
2021-07-07 05:31:48 +00:00
|
|
|
const [exportState, setExportState] = useState(ExportState.INIT);
|
|
|
|
const [exportFolder, setExportFolder] = useState(null);
|
|
|
|
const [exportSize, setExportSize] = useState(null);
|
|
|
|
useEffect(() => {
|
|
|
|
const exportInfo = getData(LS_KEYS.EXPORT);
|
|
|
|
exportInfo?.state && setExportState(exportInfo.state);
|
|
|
|
exportInfo?.folder && setExportFolder(exportInfo.folder);
|
|
|
|
setExportSize(props.usage);
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
const updateExportFolder = (newFolder) => {
|
|
|
|
setExportFolder(newFolder);
|
|
|
|
setData(LS_KEYS.EXPORT, { ...getData(LS_KEYS.EXPORT), folder: newFolder });
|
|
|
|
};
|
|
|
|
const updateExportState = (newState) => {
|
|
|
|
setExportState(newState);
|
|
|
|
setData(LS_KEYS.EXPORT, { ...getData(LS_KEYS.EXPORT), satte: newState });
|
|
|
|
};
|
2021-07-06 09:20:05 +00:00
|
|
|
switch (exportState) {
|
|
|
|
case ExportState.INIT:
|
|
|
|
return (
|
2021-07-07 05:31:48 +00:00
|
|
|
<ExportInit {...props} exportFolder={exportFolder} exportSize={exportSize} updateExportFolder={updateExportFolder} exportFiles={() => exportService.exportFiles()} updateExportState={updateExportState} />
|
2021-07-06 09:20:05 +00:00
|
|
|
);
|
|
|
|
case ExportState.INPROGRESS:
|
|
|
|
return (
|
|
|
|
<ExportInProgress {...props} />
|
|
|
|
);
|
2021-07-06 11:23:13 +00:00
|
|
|
case ExportState.FINISHED:
|
|
|
|
return (
|
|
|
|
<ExportFinished {...props} />
|
|
|
|
);
|
2021-07-06 09:20:05 +00:00
|
|
|
}
|
|
|
|
}
|