import {
AppstoreOutlined,
BgColorsOutlined,
CalendarOutlined,
ClusterOutlined,
EditOutlined,
FileImageOutlined,
MessageOutlined,
QuestionCircleOutlined,
ScissorOutlined,
SettingOutlined,
ShopOutlined,
TeamOutlined,
UserOutlined,
} from "@ant-design/icons";
import { Divider, Menu } from "antd";
import { useEffect, useState } from "react";
import { useLocation, useNavigate } from "react-router-dom";
import { BreakpointLgWidth, Constants } from "../../utils";
import { useTranslation } from "react-i18next";
import { useSideBarContext } from "../../Contexts/SideBarContext";
import { useAppContext } from "../../Contexts/AppContext";
import { useStoresContext } from "../../Contexts/StoresContext";
export function SideMenuContent({
setIsSideMenuCollapsed,
contentFirstRender,
}) {
const sideBarContext = useSideBarContext();
const storesContext = useStoresContext();
const location = useLocation();
const [selectedKeys, setSelectedKeys] = useState("/");
const { t } = useTranslation();
//const lastSubscribedTopic = useRef("");
const navigate = useNavigate();
const getFirstMenuItems = () => {
let items = [
{
label: t("sideMenu.overview"),
icon: ,
key: Constants.ROUTE_PATHS.OVERVIEW,
},
];
// website
let groupWebsite = {
label: t("sideMenu.website.title"),
icon: ,
children: [],
key: "/website",
};
groupWebsite.children.push({
label: t("sideMenu.website.colorPalette"),
icon: ,
key: Constants.ROUTE_PATHS.WEBSITE_COLOR_PALETTE,
});
groupWebsite.children.push({
label: t("sideMenu.website.banner"),
icon: ,
key: Constants.ROUTE_PATHS.WEBSITE_BANNER,
});
groupWebsite.children.push({
label: t("sideMenu.website.socials"),
icon: ,
key: Constants.ROUTE_PATHS.WEBSITE_SOCIALS,
});
items.push(groupWebsite);
// stores
let stores = {
label:
storesContext.stores.length > 1
? t("sideMenu.store.titlePlural")
: t("sideMenu.store.titleSingular"),
children: [],
type: "group",
};
storesContext.stores.forEach((store) => {
let groupStore = {
label: store.name,
icon: ,
children: [],
};
if (sideBarContext.permissions.includes("settings")) {
groupStore.children.push({
label: t("sideMenu.store.settings"),
icon: ,
key: `${Constants.ROUTE_PATHS.STORE.SETTINGS}/${store.store_id}`,
});
}
if (sideBarContext.permissions.includes("employees")) {
groupStore.children.push({
label: t("sideMenu.store.employees"),
icon: ,
key: `${Constants.ROUTE_PATHS.STORE.EMPLOYEES}/${store.store_id}`,
});
}
if (sideBarContext.permissions.includes("services")) {
groupStore.children.push({
label: t("sideMenu.store.services"),
icon: ,
key: `${Constants.ROUTE_PATHS.STORE.SERVICES}/${store.store_id}`,
});
}
if (sideBarContext.permissions.includes("calendar")) {
groupStore.children.push({
label: t("sideMenu.store.calendar"),
icon: ,
key: `${Constants.ROUTE_PATHS.STORE.CALENDAR}/${store.store_id}`,
});
}
stores.children.push(groupStore);
});
items.push(stores);
return items;
};
const getSecondMenuItems = () => {
let items = [];
items.push(
{
label: t("sideMenu.support"),
icon: ,
key: Constants.ROUTE_PATHS.SUPPORT,
},
{
label: t("sideMenu.feedback"),
icon: ,
key: Constants.ROUTE_PATHS.FEEDBACK,
},
{
label: sideBarContext.username,
icon: ,
key: Constants.ROUTE_PATHS.USER_PROFILE,
}
);
return items;
};
useEffect(() => {
const pathname = location.pathname;
setSelectedKeys(pathname);
//lastSubscribedTopic.current = pathname;
/*
const subscribeTopicMessage = () =>
webSocketContext.SendSocketMessage(
SentMessagesCommands.SubscribeToTopic,
{
topic: pathname,
browserTabSession: BrowserTabSession,
}
);
subscribeTopicMessage();
const handleSubscribeTopicMessage = () => subscribeTopicMessage();
document.addEventListener(
wsConnectionCustomEventName,
handleSubscribeTopicMessage
); */
// auto close sideMenu on mobile
// this will prevent to auto close sideMenu on first render as the useEffects will be called after the first render
if (contentFirstRender.current) {
contentFirstRender.current = false;
//return;
} else if (
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
) ||
document.body.clientWidth < BreakpointLgWidth
) {
setIsSideMenuCollapsed(true);
}
/*
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleSubscribeTopicMessage
); */
}, [location.pathname]);
return (
);
}