Fix Bug 67422 - Settings: Data Import. When starting a migration, add an alert if user quota is enabled.
This commit is contained in:
parent
37cbfe9e6a
commit
42f1c02a0e
@ -258,6 +258,7 @@
|
||||
"Statistics": "Statistics",
|
||||
"StorageManagement": "Storage management",
|
||||
"StoragePeriod": "Storage period",
|
||||
"StorageQuotaWarningDescription": "Storage quota of {{quotaLimit}} is enabled for users of this {{productName}}. Limitations can occur during data import.",
|
||||
"StudioTimeLanguageSettings": "Language and Time Zone Settings",
|
||||
"Submit": "Submit",
|
||||
"SuccessfullySaveGreetingSettingsMessage": "Welcome Page settings have been successfully saved",
|
||||
@ -307,6 +308,7 @@
|
||||
"UseUpperCase": "Use capital letters",
|
||||
"WantToCancelDataImport": "Do you want to cancel data import?",
|
||||
"WantToCancelUpload": "Do you want to cancel the upload?",
|
||||
"WantToContinue": "Do you want to continue or change the user storage quota?",
|
||||
"WhiteLabel": "Logo settings",
|
||||
"WhiteLabelHelper": "Use images with a transparent background. (PNG, SVG, JPG)",
|
||||
"WhiteLabelSubtitle": "Enter your company name, upload the logo, and customize the styling to match your branding.",
|
||||
|
@ -0,0 +1,78 @@
|
||||
// (c) Copyright Ascensio System SIA 2009-2024
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// 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
|
||||
|
||||
import {
|
||||
ModalDialog,
|
||||
ModalDialogType,
|
||||
} from "@docspace/shared/components/modal-dialog";
|
||||
|
||||
import { convertBytes } from "@docspace/client/src/pages/PortalSettings/utils/convertBytes";
|
||||
import { Button, ButtonSize } from "@docspace/shared/components/button";
|
||||
import { Text } from "@docspace/shared/components/text";
|
||||
import { WarningQuotaDialogProps } from "./WarningQuotaDialog.types";
|
||||
|
||||
export const WarningQuotaDialog = ({
|
||||
t,
|
||||
visible,
|
||||
onClickRedirect,
|
||||
onCloseDialog,
|
||||
defaultQuota,
|
||||
}: WarningQuotaDialogProps) => {
|
||||
return (
|
||||
<ModalDialog
|
||||
autoMaxHeight
|
||||
visible={visible}
|
||||
onClose={onCloseDialog}
|
||||
displayType={ModalDialogType.modal}
|
||||
>
|
||||
<ModalDialog.Header>{t("Common:Warning")}</ModalDialog.Header>
|
||||
<ModalDialog.Body>
|
||||
<Text noSelect style={{ marginBottom: "16px" }}>
|
||||
{t("Settings:StorageQuotaWarningDescription", {
|
||||
quotaLimit: convertBytes(defaultQuota),
|
||||
productName: t("Common:ProductName"),
|
||||
})}
|
||||
</Text>
|
||||
<Text noSelect>{t("Settings:WantToContinue")}</Text>
|
||||
</ModalDialog.Body>
|
||||
<ModalDialog.Footer>
|
||||
<Button
|
||||
label={t("Common:ChangeQuota")}
|
||||
size={ButtonSize.normal}
|
||||
primary
|
||||
onClick={onClickRedirect}
|
||||
scale
|
||||
/>
|
||||
<Button
|
||||
label={t("Common:ContinueButton")}
|
||||
size={ButtonSize.normal}
|
||||
onClick={onCloseDialog}
|
||||
scale
|
||||
/>
|
||||
</ModalDialog.Footer>
|
||||
</ModalDialog>
|
||||
);
|
||||
};
|
@ -0,0 +1,35 @@
|
||||
// (c) Copyright Ascensio System SIA 2009-2024
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// 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
|
||||
|
||||
import { TTranslation } from "@docspace/shared/types";
|
||||
|
||||
export interface WarningQuotaDialogProps {
|
||||
t: TTranslation;
|
||||
visible: boolean;
|
||||
onCloseDialog: () => void;
|
||||
onClickRedirect: () => void;
|
||||
defaultQuota: number;
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
// (c) Copyright Ascensio System SIA 2009-2024
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// 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
|
||||
export { WarningQuotaDialog } from "./WarningQuotaDialog";
|
@ -25,11 +25,13 @@
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
import { useState, useRef, useEffect, useCallback } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { CancelUploadDialog } from "SRC_DIR/components/dialogs";
|
||||
import { isMobile, isTablet, mobile } from "@docspace/shared/utils/device";
|
||||
import styled from "styled-components";
|
||||
|
||||
import { WarningQuotaDialog } from "SRC_DIR/components/dialogs/WarningQuotaDialog";
|
||||
import { Text } from "@docspace/shared/components/text";
|
||||
import { Button, ButtonSize } from "@docspace/shared/components/button";
|
||||
import { FileInput } from "@docspace/shared/components/file-input";
|
||||
@ -154,14 +156,18 @@ const SelectFileStep = (props: SelectFileStepProps) => {
|
||||
migratingWorkspace,
|
||||
setMigratingWorkspace,
|
||||
uploadFiles,
|
||||
defaultUsersQuota,
|
||||
isDefaultUsersQuotaSet,
|
||||
warningQuotaDialogVisible,
|
||||
setWarningQuotaDialogVisible,
|
||||
} = props as InjectedSelectFileStepProps;
|
||||
|
||||
const [isSaveDisabled, setIsSaveDisabled] = useState(
|
||||
migratorName === migratingWorkspace,
|
||||
);
|
||||
const [progress, setProgress] = useState(0);
|
||||
const [defaultQuota, setDefaultQuota] = useState(0);
|
||||
const [isInfiniteProgress, setIsInfiniteProgress] = useState(true);
|
||||
|
||||
const [isNetworkError, setIsNetworkError] = useState(false);
|
||||
const [isFileError, setIsFileError] = useState(false);
|
||||
const [isBackupEmpty, setIsBackupEmpty] = useState(false);
|
||||
@ -173,6 +179,16 @@ const SelectFileStep = (props: SelectFileStepProps) => {
|
||||
|
||||
const [failTries, setFailTries] = useState(FAIL_TRIES);
|
||||
const uploadInterval = useRef<number>();
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
setWarningQuotaDialogVisible(isDefaultUsersQuotaSet);
|
||||
setDefaultQuota(defaultUsersQuota ?? 0);
|
||||
}, [isDefaultUsersQuotaSet, setWarningQuotaDialogVisible, defaultUsersQuota]);
|
||||
|
||||
const onClickRedirect = () => {
|
||||
navigate("/portal-settings/management/disk-space");
|
||||
};
|
||||
|
||||
const handleError = useCallback(
|
||||
(message?: string) => {
|
||||
@ -477,44 +493,66 @@ const SelectFileStep = (props: SelectFileStepProps) => {
|
||||
isSixthStep={false}
|
||||
/>
|
||||
)}
|
||||
|
||||
{warningQuotaDialogVisible && (
|
||||
<WarningQuotaDialog
|
||||
t={t}
|
||||
visible={warningQuotaDialogVisible}
|
||||
onCloseDialog={() => setWarningQuotaDialogVisible(false)}
|
||||
onClickRedirect={onClickRedirect}
|
||||
defaultQuota={defaultQuota}
|
||||
/>
|
||||
)}
|
||||
</Wrapper>
|
||||
);
|
||||
};
|
||||
|
||||
export default inject<TStore>(({ dialogsStore, importAccountsStore }) => {
|
||||
const {
|
||||
initMigrations,
|
||||
getMigrationStatus,
|
||||
setUsers,
|
||||
fileLoadingStatus,
|
||||
setLoadingStatus,
|
||||
cancelMigration,
|
||||
setWorkspace,
|
||||
incrementStep,
|
||||
files,
|
||||
setFiles,
|
||||
migratingWorkspace,
|
||||
setMigratingWorkspace,
|
||||
uploadFiles,
|
||||
} = importAccountsStore;
|
||||
const { cancelUploadDialogVisible, setCancelUploadDialogVisible } =
|
||||
dialogsStore;
|
||||
export default inject<TStore>(
|
||||
({ dialogsStore, importAccountsStore, currentQuotaStore }) => {
|
||||
const {
|
||||
initMigrations,
|
||||
getMigrationStatus,
|
||||
setUsers,
|
||||
fileLoadingStatus,
|
||||
setLoadingStatus,
|
||||
cancelMigration,
|
||||
setWorkspace,
|
||||
incrementStep,
|
||||
files,
|
||||
setFiles,
|
||||
migratingWorkspace,
|
||||
setMigratingWorkspace,
|
||||
uploadFiles,
|
||||
} = importAccountsStore;
|
||||
const {
|
||||
cancelUploadDialogVisible,
|
||||
setCancelUploadDialogVisible,
|
||||
warningQuotaDialogVisible,
|
||||
setWarningQuotaDialogVisible,
|
||||
} = dialogsStore;
|
||||
|
||||
return {
|
||||
initMigrations,
|
||||
getMigrationStatus,
|
||||
setUsers,
|
||||
fileLoadingStatus,
|
||||
setLoadingStatus,
|
||||
cancelMigration,
|
||||
cancelUploadDialogVisible,
|
||||
setCancelUploadDialogVisible,
|
||||
setWorkspace,
|
||||
incrementStep,
|
||||
files,
|
||||
setFiles,
|
||||
migratingWorkspace,
|
||||
setMigratingWorkspace,
|
||||
uploadFiles,
|
||||
};
|
||||
})(observer(SelectFileStep));
|
||||
const { isDefaultUsersQuotaSet, defaultUsersQuota } = currentQuotaStore;
|
||||
|
||||
return {
|
||||
initMigrations,
|
||||
getMigrationStatus,
|
||||
setUsers,
|
||||
fileLoadingStatus,
|
||||
setLoadingStatus,
|
||||
cancelMigration,
|
||||
cancelUploadDialogVisible,
|
||||
setCancelUploadDialogVisible,
|
||||
setWorkspace,
|
||||
incrementStep,
|
||||
files,
|
||||
setFiles,
|
||||
migratingWorkspace,
|
||||
setMigratingWorkspace,
|
||||
uploadFiles,
|
||||
defaultUsersQuota,
|
||||
isDefaultUsersQuotaSet,
|
||||
warningQuotaDialogVisible,
|
||||
setWarningQuotaDialogVisible,
|
||||
};
|
||||
},
|
||||
)(observer(SelectFileStep));
|
||||
|
@ -70,6 +70,10 @@ export interface InjectedSelectFileStepProps extends SelectFileStepProps {
|
||||
migratingWorkspace: TStore["importAccountsStore"]["migratingWorkspace"];
|
||||
setMigratingWorkspace: TStore["importAccountsStore"]["setMigratingWorkspace"];
|
||||
uploadFiles: TStore["importAccountsStore"]["uploadFiles"];
|
||||
defaultUsersQuota: TStore["currentQuotaStore"]["defaultUsersQuota"];
|
||||
isDefaultUsersQuotaSet: TStore["currentQuotaStore"]["isDefaultUsersQuotaSet"];
|
||||
warningQuotaDialogVisible: TStore["dialogsStore"]["warningQuotaDialogVisible"];
|
||||
setWarningQuotaDialogVisible: TStore["dialogsStore"]["setWarningQuotaDialogVisible"];
|
||||
}
|
||||
|
||||
export interface DataImportProps {}
|
||||
|
@ -0,0 +1,45 @@
|
||||
// (c) Copyright Ascensio System SIA 2009-2024
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// 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
|
||||
|
||||
export const convertBytes = (bytes: number) => {
|
||||
if (bytes < 1024) {
|
||||
return `${bytes} bytes`;
|
||||
}
|
||||
const kilobytes = bytes / 1024;
|
||||
if (kilobytes < 1024) {
|
||||
return `${Math.floor(kilobytes)} KB`;
|
||||
}
|
||||
const megabytes = kilobytes / 1024;
|
||||
if (megabytes < 1024) {
|
||||
return `${Math.floor(megabytes)} MB`;
|
||||
}
|
||||
const gigabytes = megabytes / 1024;
|
||||
if (gigabytes < 1024) {
|
||||
return `${Math.floor(gigabytes)} GB`;
|
||||
}
|
||||
const terabytes = gigabytes / 1024;
|
||||
return `${Math.floor(terabytes)} TB`;
|
||||
};
|
@ -128,6 +128,8 @@ class DialogsStore {
|
||||
file: null,
|
||||
};
|
||||
|
||||
warningQuotaDialogVisible = false;
|
||||
|
||||
constructor(
|
||||
authStore,
|
||||
treeFoldersStore,
|
||||
@ -549,6 +551,10 @@ class DialogsStore {
|
||||
file,
|
||||
};
|
||||
};
|
||||
|
||||
setWarningQuotaDialogVisible = (visible) => {
|
||||
this.warningQuotaDialogVisible = visible;
|
||||
};
|
||||
}
|
||||
|
||||
export default DialogsStore;
|
||||
|
Loading…
Reference in New Issue
Block a user