ente/src/components/ExportModal.tsx

54 lines
1.9 KiB
TypeScript
Raw Normal View History

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
}
}