diff --git a/packages/client/src/components/dialogs/ChangeStorageQuotaDialog/index.js b/packages/client/src/components/dialogs/ChangeStorageQuotaDialog/index.js index 4e4ea16ab4..8db8bc69d7 100644 --- a/packages/client/src/components/dialogs/ChangeStorageQuotaDialog/index.js +++ b/packages/client/src/components/dialogs/ChangeStorageQuotaDialog/index.js @@ -1,4 +1,3 @@ -import { inject, observer } from "mobx-react"; import { useTranslation } from "react-i18next"; import { useState, useEffect } from "react"; @@ -16,11 +15,11 @@ const ChangeStorageQuotaDialog = (props) => { initialSize, portalInfo, isVisible, - onSave, + updateFunction, onClose, isDisableQuota, - updateTenantCustomQuota, } = props; + const { t } = useTranslation("Common"); const [isLoading, setIsLoading] = useState(false); @@ -57,13 +56,15 @@ const ChangeStorageQuotaDialog = (props) => { Quota: isDisableQuota ? -1 : size, }); - updateTenantCustomQuota(storageQuota); + await updateFunction(storageQuota); + toastr.success(t("Common:StorageQuotaSet")); } catch (e) { toastr.error(e); } + setSize(""); - onSave && onSave(); + onClose && onClose(); setIsLoading(false); }; @@ -127,17 +128,4 @@ const ChangeStorageQuotaDialog = (props) => { ); }; -export default inject(({ auth, dialogsStore, storageManagement }) => { - const { changeQuotaDialogVisible, setChangeQuotaDialogVisible } = - dialogsStore; - const { portalInfo } = storageManagement; - const { currentQuotaStore } = auth; - const { updateTenantCustomQuota } = currentQuotaStore; - - return { - changeQuotaDialogVisible, - setChangeQuotaDialogVisible, - portalInfo, - updateTenantCustomQuota, - }; -})(observer(ChangeStorageQuotaDialog)); +export default ChangeStorageQuotaDialog; diff --git a/packages/client/src/pages/PortalSettings/categories/storage-management/StorageSpaceUsed.js b/packages/client/src/pages/PortalSettings/categories/storage-management/StorageSpaceUsed.js index 6d70cbb9ae..3f9b437c8a 100644 --- a/packages/client/src/pages/PortalSettings/categories/storage-management/StorageSpaceUsed.js +++ b/packages/client/src/pages/PortalSettings/categories/storage-management/StorageSpaceUsed.js @@ -25,6 +25,8 @@ const DiskSpaceUsedComponent = (props) => { maxTotalSizeByQuota, standalone, isTenantCustomQuotaSet, + portalInfo, + updateTenantCustomQuota, } = props; const { t } = useTranslation("Settings"); @@ -48,13 +50,13 @@ const DiskSpaceUsedComponent = (props) => { const getContextModel = () => { return [ { - key: "create", + key: "change-quota", label: t("Common:ChangeQuota"), icon: ChangQuotaReactSvgUrl, onClick: onChangeDialogClick, }, { - key: "template-info", + key: "disable-quota", label: t("Common:DisableQuota"), icon: DisableQuotaReactSvgUrl, onClick: onDisableDialogClick, @@ -65,9 +67,10 @@ const DiskSpaceUsedComponent = (props) => { const onClickContextMenu = (e) => { ref.current.show(e); }; - const onSave = () => { - setIsVisibleChangeQuotaDialog(false); + const updateFunction = (storage) => { + updateTenantCustomQuota(storage); }; + const onClose = () => { setIsVisibleChangeQuotaDialog(false); }; @@ -78,8 +81,9 @@ const DiskSpaceUsedComponent = (props) => { )} @@ -132,15 +136,16 @@ const DiskSpaceUsedComponent = (props) => { ); }; -export default inject(({ auth }) => { +export default inject(({ auth, storageManagement }) => { const { currentQuotaStore, settingsStore } = auth; const { isTenantCustomQuotaSet, usedTotalStorageSizeCount, maxTotalSizeByQuota: maxSizeByTariff, tenantCustomQuota, + updateTenantCustomQuota, } = currentQuotaStore; - + const { portalInfo } = storageManagement; const { standalone } = settingsStore; const maxTotalSizeByQuota = standalone ? tenantCustomQuota : maxSizeByTariff; @@ -150,5 +155,7 @@ export default inject(({ auth }) => { usedTotalStorageSizeCount, standalone, maxTotalSizeByQuota, + portalInfo, + updateTenantCustomQuota, }; })(observer(DiskSpaceUsedComponent)); diff --git a/packages/client/webpack.config.js b/packages/client/webpack.config.js index 1579361d74..24e2579466 100644 --- a/packages/client/webpack.config.js +++ b/packages/client/webpack.config.js @@ -320,7 +320,8 @@ module.exports = (env, argv) => { "./RestorePage": "./src/pages/PortalSettings/categories/data-management/backup/restore-backup", "./PaymentsPage": "./src/pages/PortalSettings/categories/payments", - "./ChangeQuotaDialog": "./src/components/dialogs/ChangeQuotaDialog", + "./ChangeStorageQuotaDialog": + "./src/components/dialogs/ChangeStorageQuotaDialog", }, shared: { ...deps, diff --git a/packages/management/src/categories/spaces/sub-components/RowView/RoomContent.tsx b/packages/management/src/categories/spaces/sub-components/RowView/RoomContent.tsx index 0ce2a9dc1a..5ffd8c27da 100644 --- a/packages/management/src/categories/spaces/sub-components/RowView/RoomContent.tsx +++ b/packages/management/src/categories/spaces/sub-components/RowView/RoomContent.tsx @@ -31,16 +31,17 @@ type TRoomContent = { export const RoomContent = ({ item, isCurrentPortal }: TRoomContent) => { const { t } = useTranslation(["Management", "Common", "Settings"]); - const { roomAdminCount, usersCount, storageSize, roomsCount, usedSize } = - item?.quotaUsage || { - roomAdminCount: null, - usersCount: null, - storageSize: null, - roomsCount: null, - usedSize: null, - }; + const { roomAdminCount, usersCount, roomsCount } = item?.quotaUsage || { + roomAdminCount: null, + usersCount: null, + roomsCount: null, + }; + const { quota, usedSize } = item || { + quota: null, + usedSize: null, + }; - const maxStorage = getConvertedSize(t, storageSize); + const maxStorage = quota >= 0 ? getConvertedSize(t, quota) : null; const usedStorage = getConvertedSize(t, usedSize); return ( diff --git a/packages/management/src/categories/spaces/sub-components/RowView/SpacesRoomRow.tsx b/packages/management/src/categories/spaces/sub-components/RowView/SpacesRoomRow.tsx index 740901fa08..dd39e0812e 100644 --- a/packages/management/src/categories/spaces/sub-components/RowView/SpacesRoomRow.tsx +++ b/packages/management/src/categories/spaces/sub-components/RowView/SpacesRoomRow.tsx @@ -8,7 +8,8 @@ import DeleteReactSvgUrl from "PUBLIC_DIR/images/delete.react.svg?url"; import ExternalLinkIcon from "PUBLIC_DIR/images/external.link.react.svg?url"; import DefaultLogoUrl from "PUBLIC_DIR/images/logo/leftmenu.svg?url"; import ChangQuotaReactSvgUrl from "PUBLIC_DIR/images/change.quota.react.svg?url"; -import ChangeQuotaDialog from "client/ChangeQuotaDialog"; +import DisableQuotaReactSvgUrl from "PUBLIC_DIR/images/disable.quota.react.svg?url"; +import ChangeStorageQuotaDialog from "client/ChangeStorageQuotaDialog"; import { useTranslation } from "react-i18next"; import { TPortals } from "SRC_DIR/types/spaces"; @@ -41,10 +42,10 @@ type TRow = { const SpacesRoomRow = ({ item }: TRow) => { const { spacesStore, authStore } = useStore(); const { setDeletePortalDialogVisible, setCurrentPortal } = spacesStore; - const { tenantAlias } = authStore.settingsStore; + const { tenantAlias, getAllPortals } = authStore.settingsStore; - const [isVisibleDialog, setIsVisibleDialog] = useState(); - const [size, setSize] = useState(); + const [isVisibleDialog, setIsVisibleDialog] = useState(false); + const [isDisableQuota, setIsDisableQuota] = useState(false); const onDelete = () => { setCurrentPortal(item); @@ -73,9 +74,21 @@ const SpacesRoomRow = ({ item }: TRow) => { }, { label: t("Common:ManageStorageQuota"), - key: "space_settings", + key: "change_quota", icon: ChangQuotaReactSvgUrl, - onClick: () => setIsVisibleDialog(true), + onClick: () => { + setIsVisibleDialog(true); + isDisableQuota && setIsDisableQuota(false); + }, + }, + { + key: "disable_quota", + label: t("Common:DisableQuota"), + icon: DisableQuotaReactSvgUrl, + onClick: () => { + setIsVisibleDialog(true); + setIsDisableQuota(true); + }, }, { key: "separator", @@ -89,27 +102,24 @@ const SpacesRoomRow = ({ item }: TRow) => { }, ]; - const onSaveClick = () => { - setIsVisibleDialog(false); + const updateFunction = async () => { + await getAllPortals(); }; const onCloseClick = () => { setIsVisibleDialog(false); }; - const onSetQuotaBytesSize = (bytes) => { - setSize(bytes); - }; - const isCurrentPortal = tenantAlias === item.portalName; return ( <> -