Web: Client: Data Import: complete routing logic
This commit is contained in:
parent
4b893a82c5
commit
252a09aeed
@ -24,6 +24,7 @@
|
|||||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||||
|
|
||||||
|
import { useLayoutEffect } from "react";
|
||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
@ -35,8 +36,17 @@ import StepLayout from "../sub-components/StepLayout";
|
|||||||
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
||||||
|
|
||||||
const GoogleWorkspace = (props: WorkspaceProps) => {
|
const GoogleWorkspace = (props: WorkspaceProps) => {
|
||||||
const { theme, filteredUsers, step, organizationName } =
|
const {
|
||||||
props as InjectedWorkspaceProps;
|
theme,
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
organizationName,
|
||||||
|
migratingWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = props as InjectedWorkspaceProps;
|
||||||
|
|
||||||
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
||||||
"Common, SMTPSettings, Settings",
|
"Common, SMTPSettings, Settings",
|
||||||
@ -48,6 +58,19 @@ const GoogleWorkspace = (props: WorkspaceProps) => {
|
|||||||
organizationName,
|
organizationName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
if (migratingWorkspace === "GoogleWorkspace" && !isMigrationInit) {
|
||||||
|
if (migrationPhase === "setup") {
|
||||||
|
setStep(2);
|
||||||
|
} else if (migrationPhase === "migrating") {
|
||||||
|
setStep(5);
|
||||||
|
} else if (migrationPhase === "complete") {
|
||||||
|
setStep(6);
|
||||||
|
}
|
||||||
|
setIsMigrationInit(true);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
if (!ready) return <SelectFileLoader />;
|
if (!ready) return <SelectFileLoader />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -65,7 +88,16 @@ const GoogleWorkspace = (props: WorkspaceProps) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
||||||
const { filteredUsers, step, setStep, setWorkspace } = importAccountsStore;
|
const {
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
setWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
migratingWorkspace,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = importAccountsStore;
|
||||||
const { theme, organizationName } = settingsStore;
|
const { theme, organizationName } = settingsStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -75,5 +107,9 @@ export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
|||||||
step,
|
step,
|
||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
migratingWorkspace,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
};
|
};
|
||||||
})(observer(GoogleWorkspace));
|
})(observer(GoogleWorkspace));
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||||
|
|
||||||
|
import { useLayoutEffect } from "react";
|
||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
@ -35,8 +36,17 @@ import StepLayout from "../sub-components/StepLayout";
|
|||||||
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
||||||
|
|
||||||
const NextcloudWorkspace = (props: WorkspaceProps) => {
|
const NextcloudWorkspace = (props: WorkspaceProps) => {
|
||||||
const { theme, filteredUsers, step, organizationName } =
|
const {
|
||||||
props as InjectedWorkspaceProps;
|
theme,
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
organizationName,
|
||||||
|
migratingWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = props as InjectedWorkspaceProps;
|
||||||
|
|
||||||
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
||||||
"Common, SMTPSettings, Settings",
|
"Common, SMTPSettings, Settings",
|
||||||
@ -48,6 +58,19 @@ const NextcloudWorkspace = (props: WorkspaceProps) => {
|
|||||||
organizationName,
|
organizationName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
if (migratingWorkspace === "Nextcloud" && !isMigrationInit) {
|
||||||
|
if (migrationPhase === "setup") {
|
||||||
|
setStep(2);
|
||||||
|
} else if (migrationPhase === "migrating") {
|
||||||
|
setStep(6);
|
||||||
|
} else if (migrationPhase === "complete") {
|
||||||
|
setStep(7);
|
||||||
|
}
|
||||||
|
setIsMigrationInit(true);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
if (!ready) return <SelectFileLoader />;
|
if (!ready) return <SelectFileLoader />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -65,7 +88,16 @@ const NextcloudWorkspace = (props: WorkspaceProps) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
||||||
const { filteredUsers, step, setStep, setWorkspace } = importAccountsStore;
|
const {
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
setWorkspace,
|
||||||
|
migratingWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = importAccountsStore;
|
||||||
const { theme, organizationName } = settingsStore;
|
const { theme, organizationName } = settingsStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -75,5 +107,9 @@ export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
|||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
organizationName,
|
organizationName,
|
||||||
|
migratingWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
};
|
};
|
||||||
})(observer(NextcloudWorkspace));
|
})(observer(NextcloudWorkspace));
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||||
|
|
||||||
|
import { useLayoutEffect } from "react";
|
||||||
import { inject, observer } from "mobx-react";
|
import { inject, observer } from "mobx-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
@ -35,8 +36,17 @@ import StepLayout from "../sub-components/StepLayout";
|
|||||||
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
import { InjectedWorkspaceProps, WorkspaceProps, TFunciton } from "../types";
|
||||||
|
|
||||||
const OnlyofficeWorkspace = (props: WorkspaceProps) => {
|
const OnlyofficeWorkspace = (props: WorkspaceProps) => {
|
||||||
const { theme, filteredUsers, step, organizationName } =
|
const {
|
||||||
props as InjectedWorkspaceProps;
|
theme,
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
organizationName,
|
||||||
|
migratingWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = props as InjectedWorkspaceProps;
|
||||||
|
|
||||||
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
const { t, ready }: { t: TFunciton; ready: boolean } = useTranslation([
|
||||||
"Common, SMTPSettings, Settings",
|
"Common, SMTPSettings, Settings",
|
||||||
@ -48,6 +58,19 @@ const OnlyofficeWorkspace = (props: WorkspaceProps) => {
|
|||||||
organizationName,
|
organizationName,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
if (migratingWorkspace === "Workspace" && !isMigrationInit) {
|
||||||
|
if (migrationPhase === "setup") {
|
||||||
|
setStep(2);
|
||||||
|
} else if (migrationPhase === "migrating") {
|
||||||
|
setStep(5);
|
||||||
|
} else if (migrationPhase === "complete") {
|
||||||
|
setStep(6);
|
||||||
|
}
|
||||||
|
setIsMigrationInit(true);
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
if (!ready) return <SelectFileLoader />;
|
if (!ready) return <SelectFileLoader />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -65,7 +88,16 @@ const OnlyofficeWorkspace = (props: WorkspaceProps) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
||||||
const { filteredUsers, step, setStep, setWorkspace } = importAccountsStore;
|
const {
|
||||||
|
filteredUsers,
|
||||||
|
step,
|
||||||
|
setStep,
|
||||||
|
setWorkspace,
|
||||||
|
migrationPhase,
|
||||||
|
migratingWorkspace,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
|
} = importAccountsStore;
|
||||||
const { theme, organizationName } = settingsStore;
|
const { theme, organizationName } = settingsStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -75,5 +107,9 @@ export default inject<TStore>(({ settingsStore, importAccountsStore }) => {
|
|||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
organizationName,
|
organizationName,
|
||||||
|
migrationPhase,
|
||||||
|
migratingWorkspace,
|
||||||
|
isMigrationInit,
|
||||||
|
setIsMigrationInit,
|
||||||
};
|
};
|
||||||
})(observer(OnlyofficeWorkspace));
|
})(observer(OnlyofficeWorkspace));
|
||||||
|
@ -72,6 +72,8 @@ const ImportCompleteStep = (props: ImportCompleteStepProps) => {
|
|||||||
getMigrationStatus,
|
getMigrationStatus,
|
||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
} = props as InjectedImportCompleteStepProps;
|
} = props as InjectedImportCompleteStepProps;
|
||||||
|
|
||||||
const [isChecked, setIsChecked] = useState(false);
|
const [isChecked, setIsChecked] = useState(false);
|
||||||
@ -114,6 +116,8 @@ const ImportCompleteStep = (props: ImportCompleteStepProps) => {
|
|||||||
clearMigration();
|
clearMigration();
|
||||||
setStep(1);
|
setStep(1);
|
||||||
setWorkspace("");
|
setWorkspace("");
|
||||||
|
setMigratingWorkspace("");
|
||||||
|
setMigrationPhase("");
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -189,6 +193,8 @@ export default inject<TStore>(({ importAccountsStore }) => {
|
|||||||
getMigrationStatus,
|
getMigrationStatus,
|
||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
} = importAccountsStore;
|
} = importAccountsStore;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -199,5 +205,7 @@ export default inject<TStore>(({ importAccountsStore }) => {
|
|||||||
getMigrationStatus,
|
getMigrationStatus,
|
||||||
setStep,
|
setStep,
|
||||||
setWorkspace,
|
setWorkspace,
|
||||||
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
};
|
};
|
||||||
})(observer(ImportCompleteStep));
|
})(observer(ImportCompleteStep));
|
||||||
|
@ -54,6 +54,7 @@ const DataImport = (props: DataImportProps) => {
|
|||||||
setIsMigrationInit,
|
setIsMigrationInit,
|
||||||
setLoadingStatus,
|
setLoadingStatus,
|
||||||
setMigratingWorkspace,
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
} = props as InjectedDataImportProps;
|
} = props as InjectedDataImportProps;
|
||||||
|
|
||||||
const { t } = useTranslation(["Settings"]);
|
const { t } = useTranslation(["Settings"]);
|
||||||
@ -75,13 +76,29 @@ const DataImport = (props: DataImportProps) => {
|
|||||||
|
|
||||||
const { parseResult, isCompleted } = response;
|
const { parseResult, isCompleted } = response;
|
||||||
|
|
||||||
if (parseResult.operation === "parse" && isCompleted) {
|
if (parseResult.operation === "parse") {
|
||||||
setUsers(parseResult);
|
|
||||||
setWorkspace(parseResult.migratorName);
|
setWorkspace(parseResult.migratorName);
|
||||||
setMigratingWorkspace(parseResult.migratorName);
|
setMigratingWorkspace(parseResult.migratorName);
|
||||||
setFiles(parseResult.files);
|
setFiles(parseResult.files);
|
||||||
setIsMigrationInit(true);
|
|
||||||
setLoadingStatus("done");
|
if (isCompleted) {
|
||||||
|
setUsers(parseResult);
|
||||||
|
setMigrationPhase("setup");
|
||||||
|
setLoadingStatus("done");
|
||||||
|
} else {
|
||||||
|
setLoadingStatus("proceed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseResult.operation === "migration") {
|
||||||
|
setWorkspace(parseResult.migratorName);
|
||||||
|
setMigratingWorkspace(parseResult.migratorName);
|
||||||
|
|
||||||
|
if (isCompleted) {
|
||||||
|
setMigrationPhase("complete");
|
||||||
|
} else {
|
||||||
|
setMigrationPhase("migrating");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
getMigrationStatus,
|
getMigrationStatus,
|
||||||
@ -89,8 +106,8 @@ const DataImport = (props: DataImportProps) => {
|
|||||||
setWorkspace,
|
setWorkspace,
|
||||||
setMigratingWorkspace,
|
setMigratingWorkspace,
|
||||||
setFiles,
|
setFiles,
|
||||||
setIsMigrationInit,
|
|
||||||
setLoadingStatus,
|
setLoadingStatus,
|
||||||
|
setMigrationPhase,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -126,6 +143,7 @@ export default inject<TStore>(
|
|||||||
setIsMigrationInit,
|
setIsMigrationInit,
|
||||||
setLoadingStatus,
|
setLoadingStatus,
|
||||||
setMigratingWorkspace,
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
} = importAccountsStore;
|
} = importAccountsStore;
|
||||||
|
|
||||||
const { setDocumentTitle } = authStore;
|
const { setDocumentTitle } = authStore;
|
||||||
@ -147,6 +165,7 @@ export default inject<TStore>(
|
|||||||
setIsMigrationInit,
|
setIsMigrationInit,
|
||||||
setLoadingStatus,
|
setLoadingStatus,
|
||||||
setMigratingWorkspace,
|
setMigratingWorkspace,
|
||||||
|
setMigrationPhase,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
)(observer(DataImport));
|
)(observer(DataImport));
|
||||||
|
@ -89,6 +89,7 @@ export interface InjectedDataImportProps extends DataImportProps {
|
|||||||
setIsMigrationInit: TStore["importAccountsStore"]["setIsMigrationInit"];
|
setIsMigrationInit: TStore["importAccountsStore"]["setIsMigrationInit"];
|
||||||
setLoadingStatus: TStore["importAccountsStore"]["setLoadingStatus"];
|
setLoadingStatus: TStore["importAccountsStore"]["setLoadingStatus"];
|
||||||
setMigratingWorkspace: TStore["importAccountsStore"]["setMigratingWorkspace"];
|
setMigratingWorkspace: TStore["importAccountsStore"]["setMigratingWorkspace"];
|
||||||
|
setMigrationPhase: TStore["importAccountsStore"]["setMigrationPhase"];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WorkspaceProps {}
|
export interface WorkspaceProps {}
|
||||||
@ -97,7 +98,12 @@ export interface InjectedWorkspaceProps extends WorkspaceProps {
|
|||||||
theme: TStore["settingsStore"]["theme"];
|
theme: TStore["settingsStore"]["theme"];
|
||||||
filteredUsers: TStore["importAccountsStore"]["filteredUsers"];
|
filteredUsers: TStore["importAccountsStore"]["filteredUsers"];
|
||||||
step: TStore["importAccountsStore"]["step"];
|
step: TStore["importAccountsStore"]["step"];
|
||||||
|
setStep: TStore["importAccountsStore"]["setStep"];
|
||||||
|
migratingWorkspace: TStore["importAccountsStore"]["migratingWorkspace"];
|
||||||
|
migrationPhase: TStore["importAccountsStore"]["migrationPhase"];
|
||||||
organizationName: TStore["settingsStore"]["organizationName"];
|
organizationName: TStore["settingsStore"]["organizationName"];
|
||||||
|
isMigrationInit: TStore["importAccountsStore"]["isMigrationInit"];
|
||||||
|
setIsMigrationInit: TStore["importAccountsStore"]["setIsMigrationInit"];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LayoutProps {
|
export interface LayoutProps {
|
||||||
@ -461,4 +467,6 @@ export interface InjectedImportCompleteStepProps
|
|||||||
getMigrationStatus: TStore["importAccountsStore"]["getMigrationStatus"];
|
getMigrationStatus: TStore["importAccountsStore"]["getMigrationStatus"];
|
||||||
setStep: TStore["importAccountsStore"]["setStep"];
|
setStep: TStore["importAccountsStore"]["setStep"];
|
||||||
setWorkspace: TStore["importAccountsStore"]["setWorkspace"];
|
setWorkspace: TStore["importAccountsStore"]["setWorkspace"];
|
||||||
|
setMigratingWorkspace: TStore["importAccountsStore"]["setMigratingWorkspace"];
|
||||||
|
setMigrationPhase: TStore["importAccountsStore"]["setMigrationPhase"];
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,8 @@ type CheckedAccountTypes = "withEmail" | "withoutEmail" | "result";
|
|||||||
|
|
||||||
type LoadingState = "none" | "upload" | "proceed" | "done";
|
type LoadingState = "none" | "upload" | "proceed" | "done";
|
||||||
|
|
||||||
|
type TMigrationPhase = "" | "setup" | "migrating" | "complete";
|
||||||
|
|
||||||
class ImportAccountsStore {
|
class ImportAccountsStore {
|
||||||
services: TWorkspaceService[] = [];
|
services: TWorkspaceService[] = [];
|
||||||
|
|
||||||
@ -109,6 +111,8 @@ class ImportAccountsStore {
|
|||||||
importProjectFiles: true,
|
importProjectFiles: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
migrationPhase: TMigrationPhase = "";
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
makeAutoObservable(this);
|
makeAutoObservable(this);
|
||||||
}
|
}
|
||||||
@ -150,6 +154,10 @@ class ImportAccountsStore {
|
|||||||
this.step -= 1;
|
this.step -= 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setMigrationPhase = (phase: TMigrationPhase) => {
|
||||||
|
this.migrationPhase = phase;
|
||||||
|
};
|
||||||
|
|
||||||
setWorkspace = (workspace: TWorkspaceService | "") => {
|
setWorkspace = (workspace: TWorkspaceService | "") => {
|
||||||
this.workspace = workspace;
|
this.workspace = workspace;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user