Untitled
unknown
plain_text
4 years ago
2.8 kB
8
Indexable
/* eslint-disable no-undef */
import React, { useEffect, useState, useCallback } from "react";
import { Toast, Page } from "@teer/ui";
import { useI18n } from "@cc/i18n";
import { useScope } from "@teer/utils";
import { useParams } from "react-router-dom";
import { removeParamsFromURLString, removeRequiredAndOptionalParamsFromURLString } from "@cc/util/cvUtil";
import CustomizationHomeTile from "../components/CustomizationHomeTile";
// Parent landing
const CustomNavPage = () => {
const scope = useScope();
const { nav } = useParams();
const [pageTitle, setPageTitle] = useState();
const [navChildren, setNavChildren] = useState();
const [error, setError] = useState();
const { t } = useI18n([
"subscriptions",
"messagesJs"
]);
const acTitle = t("label.adminConsole");
const redirectToDefaultPage = useCallback(() => {
let { defaultPath } = cv.nav;
if (defaultPath) {
defaultPath = removeParamsFromURLString("_cid", defaultPath);
defaultPath = removeParamsFromURLString("_cn", defaultPath);
}
if (!defaultPath.includes("subscriptions") && !defaultPath.includes("/reportDetails")) {
defaultPath = removeRequiredAndOptionalParamsFromURLString(defaultPath);
}
window.location.hash = (defaultPath && !cv.isAdmin && !cv.isMspUser) ? "/uservms" : "/dashboard/commcell";
}, []);
// eslint-disable-next-line max-statements
useEffect(() => {
const routesForNav = scope?.cvNavigationFactory?.getRouteForState(nav) || window.getRouteForState || [];
if (!routesForNav) {
setError(true);
Toast({
type: "error",
position: "top-right",
text: t("warn.accessDeniedToPage")
});
redirectToDefaultPage();
return;
}
if (!routesForNav?.children?.length) {
setError(true);
Toast({
type: "error",
position: "top-right",
text: t("warn.noAppsToShow")
});
redirectToDefaultPage();
return;
}
const newPageTitle = routesForNav.cvTitle || routesForNav.pageTitle || acTitle;
window.document.title = newPageTitle;
setPageTitle(newPageTitle);
const formattedNavChildren = routesForNav?.children?.map((child) => {
return {
description: child?.description,
title: child?.cvTitle,
url: child?.url?.split("?")[0],
svg: child?.svg // If a child isn't migrated to react then we won't have the icon available
};
});
setNavChildren(formattedNavChildren);
}, []);
return (
<Page id="Custom_Nav" title={pageTitle || t("label.nav.masterCustomization")}>
{!error && <CustomizationHomeTile landingTiles={navChildren || []} /> }
</Page>
);
};
export default CustomNavPage;
Editor is loading...