Web: Client: Data import: fixed blinking

This commit is contained in:
Vladimir Khvan 2024-02-27 16:45:32 +05:00
parent 25f56df43b
commit 9979e71115
6 changed files with 163 additions and 87 deletions

View File

@ -100,34 +100,8 @@ const SelectFileStep = ({
)
return;
if (res.parseResult.migratorName !== "GoogleWorkspace") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
navigate(
`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`,
);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setStep(6);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setStep(2);
return;
}
setProgress(res.progress);
setIsFileError(false);
setShowReminder(true);
setIsFileLoading(true);
uploadInterval.current = setInterval(async () => {
const res = await getMigrationStatus();

View File

@ -5,6 +5,7 @@ import { getStepTitle, getGoogleStepDescription } from "../../../utils";
import { tablet, isMobile } from "@docspace/shared/utils/device";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
import styled, { css } from "styled-components";
import { useNavigate } from "react-router-dom";
import StepContent from "./Stepper";
import BreakpointWarning from "SRC_DIR/components/BreakpointWarning";
@ -70,9 +71,13 @@ const GoogleWorkspace = ({
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
}) => {
const [showReminder, setShowReminder] = useState(false);
const [currentStep, setCurrentStep] = useState(1);
const [shouldRender, setShouldRender] = useState(false);
const navigate = useNavigate();
const onNextStep = () => {
if (currentStep !== 6) {
@ -124,11 +129,51 @@ const GoogleWorkspace = ({
currentDeviceType,
});
useEffect(() => clearCheckedAccounts, []);
useEffect(() => {
getMigrationStatus().then((res) => {
if (
!res ||
res.parseResult.successedUsers + res.parseResult.failedUsers > 0
) {
setShouldRender(true);
return;
}
if (res.parseResult.migratorName !== "GoogleWorkspace") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
setShouldRender(true);
navigate(
`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`,
);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setCurrentStep(6);
setShouldRender(true);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setCurrentStep(2);
}
setShouldRender(true);
});
return clearCheckedAccounts;
}, []);
if (isMobile())
return <BreakpointWarning sectionName={t("Settings:DataImport")} />;
if (!shouldRender) return;
return (
<GoogleWrapper>
<Text className="workspace-subtitle">
@ -159,9 +204,17 @@ const GoogleWorkspace = ({
};
export default inject(({ setup, settingsStore, importAccountsStore }) => {
const { clearCheckedAccounts } = importAccountsStore;
const { clearCheckedAccounts, getMigrationStatus, setUsers } =
importAccountsStore;
const { viewAs, setViewAs } = setup;
const { currentDeviceType } = settingsStore;
return { clearCheckedAccounts, viewAs, setViewAs, currentDeviceType };
return {
clearCheckedAccounts,
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
};
})(withTranslation(["Common, Settings"])(observer(GoogleWorkspace)));

View File

@ -180,35 +180,9 @@ const SelectFileStep = ({
res.parseResult.successedUsers + res.parseResult.failedUsers > 0
)
return;
if (res.parseResult.migratorName !== "Nextcloud") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
navigate(
`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`,
);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setStep(6);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setStep(2);
return;
}
setProgress(res.progress);
setIsFileError(false);
setIsSaveDisabled(true);
setIsFileLoading(true);
uploadInterval.current = setInterval(async () => {
const res = await getMigrationStatus();

View File

@ -4,6 +4,7 @@ import { withTranslation } from "react-i18next";
import { isMobile } from "@docspace/shared/utils/device";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
import styled from "styled-components";
import { useNavigate } from "react-router-dom";
import { Text } from "@docspace/shared/components/text";
import BreakpointWarning from "SRC_DIR/components/BreakpointWarning";
@ -32,9 +33,13 @@ const NextcloudWorkspace = (props) => {
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
} = props;
const [currentStep, setCurrentStep] = useState(1);
const [shouldRender, setShouldRender] = useState(false);
const StepsData = getStepsData(t, currentStep, setCurrentStep);
const navigate = useNavigate();
useViewEffect({
view: viewAs,
@ -42,12 +47,50 @@ const NextcloudWorkspace = (props) => {
currentDeviceType,
});
useEffect(() => clearCheckedAccounts, []);
useEffect(() => {
getMigrationStatus().then((res) => {
if (
!res ||
res.parseResult.successedUsers + res.parseResult.failedUsers > 0
) {
setShouldRender(true);
return;
}
if (res.parseResult.migratorName !== "Nextcloud") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
setShouldRender(true);
navigate(
`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`,
);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setCurrentStep(6);
setShouldRender(true);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setCurrentStep(2);
setShouldRender(true);
}
});
return clearCheckedAccounts;
}, []);
if (isMobile())
return <BreakpointWarning sectionName={t("Settings:DataImport")} />;
if (!tReady) return;
if (!tReady || !shouldRender) return;
return (
<>
@ -77,7 +120,8 @@ const NextcloudWorkspace = (props) => {
};
export default inject(({ setup, settingsStore, importAccountsStore }) => {
const { clearCheckedAccounts } = importAccountsStore;
const { clearCheckedAccounts, getMigrationStatus, setUsers } =
importAccountsStore;
const { initSettings, viewAs, setViewAs } = setup;
const { currentDeviceType } = settingsStore;
@ -88,6 +132,8 @@ export default inject(({ setup, settingsStore, importAccountsStore }) => {
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
};
})(
withTranslation(["Common, SMTPSettings, Settings"])(

View File

@ -99,32 +99,8 @@ const SelectFileStep = ({
)
return;
if (res.parseResult.migratorName !== "Workspace") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
navigate(`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setStep(5);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setStep(2);
return;
}
setProgress(res.progress);
setIsFileError(false);
setShowReminder(true);
setIsFileLoading(true);
uploadInterval.current = setInterval(async () => {
const res = await getMigrationStatus();

View File

@ -5,6 +5,7 @@ import { getStepTitle, getWorkspaceStepDescription } from "../../../utils";
import { tablet, isMobile } from "@docspace/shared/utils/device";
import useViewEffect from "SRC_DIR/Hooks/useViewEffect";
import styled, { css } from "styled-components";
import { useNavigate } from "react-router-dom";
import StepContent from "./Stepper";
import BreakpointWarning from "SRC_DIR/components/BreakpointWarning";
@ -69,9 +70,13 @@ const OnlyofficeWorkspace = ({
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
}) => {
const [showReminder, setShowReminder] = useState(false);
const [currentStep, setCurrentStep] = useState(1);
const [shouldRender, setShouldRender] = useState(false);
const navigate = useNavigate();
const onNextStep = () => {
if (currentStep !== 6) {
@ -123,12 +128,52 @@ const OnlyofficeWorkspace = ({
currentDeviceType,
});
useEffect(() => clearCheckedAccounts, []);
useEffect(() => {
getMigrationStatus().then((res) => {
if (
!res ||
res.parseResult.successedUsers + res.parseResult.failedUsers > 0
) {
setShouldRender(true);
return;
}
if (res.parseResult.migratorName !== "Workspace") {
const workspacesEnum = {
GoogleWorkspace: "google",
Nextcloud: "nextcloud",
Workspace: "onlyoffice",
};
const migratorName = res.parseResult.migratorName;
setShouldRender(true);
navigate(
`/portal-settings/data-import/migration/${workspacesEnum[migratorName]}?service=${migratorName}`,
);
}
if (!res.isCompleted && res.parseResult.users.length > 0) {
setCurrentStep(5);
setShouldRender(true);
return;
}
if (res.isCompleted) {
setUsers(res.parseResult);
setCurrentStep(2);
}
setShouldRender(true);
});
return clearCheckedAccounts;
}, []);
if (isMobile()) {
return <BreakpointWarning sectionName={t("Settings:DataImport")} />;
}
if (!shouldRender) return;
return (
<WorkspaceWrapper>
<Text className="workspace-subtitle">
@ -151,7 +196,7 @@ const OnlyofficeWorkspace = ({
onPrevStep={onPrevStep}
showReminder={showReminder}
setShowReminder={setShowReminder}
setStep={setCurrentStep}
setCurrentStep={setCurrentStep}
/>
</div>
</WorkspaceWrapper>
@ -159,9 +204,17 @@ const OnlyofficeWorkspace = ({
};
export default inject(({ setup, settingsStore, importAccountsStore }) => {
const { clearCheckedAccounts } = importAccountsStore;
const { clearCheckedAccounts, getMigrationStatus, setUsers } =
importAccountsStore;
const { viewAs, setViewAs } = setup;
const { currentDeviceType } = settingsStore;
return { clearCheckedAccounts, viewAs, setViewAs, currentDeviceType };
return {
clearCheckedAccounts,
viewAs,
setViewAs,
currentDeviceType,
getMigrationStatus,
setUsers,
};
})(withTranslation(["Common, Settings"])(observer(OnlyofficeWorkspace)));