split tasks and user
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
hamid zarghami
2026-07-21 12:29:11 +03:30
parent 09adc8bdd0
commit 6b5ac30f32
5 changed files with 71 additions and 23 deletions
+2 -1
View File
@@ -3,6 +3,7 @@ export const SideBarItemHasSubMenu = [
"customers",
"representatives",
"users",
"taskmanager",
"content",
"financial",
"support",
@@ -44,7 +45,7 @@ export const getSubMenuNameFromPath = (pathname: string): string => {
}
if (pathname.startsWith("/workspace") || pathname.startsWith("/project") || pathname.startsWith("/taskmanager")) {
return "users";
return "taskmanager";
}
const segment = pathname.split("/")[1] ?? "";
+1 -1
View File
@@ -159,7 +159,7 @@ export const CONTENT_PERMISSION_RESOURCES = ["blogs", "learnings", "advertisemen
export const FINANCIAL_PERMISSION_RESOURCES = ["payments", "invoices", "transactions", "discounts", "bank_accounts"] as const;
export const SUPPORT_PERMISSION_RESOURCES = ["support_plan", "tickets"] as const;
export const TASK_MANAGER_PERMISSION_RESOURCES = ["workspace", "project", "task", "task_phase"] as const;
export const USERS_SIDEBAR_PERMISSION_RESOURCES = ["admins", ...TASK_MANAGER_PERMISSION_RESOURCES] as const;
export const USERS_SIDEBAR_PERMISSION_RESOURCES = ["admins"] as const;
export const PRODUCT_PERMISSION_RESOURCES = ["dmenu", "dkala", "dpage", "dmail"] as const;
type PermissionEntry = { name: string };
+23 -5
View File
@@ -9,6 +9,7 @@ import {
Profile,
Profile2User,
Setting2,
TickSquare,
UserOctagon,
UserTick,
} from "iconsax-react";
@@ -40,6 +41,7 @@ import ProductsSubMenu from "./components/ProductsSubMenu";
import ResellerSubMenu from "./components/ResellerSubMenu";
import ServicesSubMenu from "./components/ServicesSubMenu";
import SupportSubMenu from "./components/SupportSubMenu";
import TaskManagerSubMenu from "./components/TaskManagerSubMenu";
import UsersSubMenu from "./components/UsersSubMenu";
import SideBarItem from "./SideBarItem";
import { useSharedStore } from "./store/sharedStore";
@@ -57,6 +59,7 @@ const SideBar: FC = () => {
const permissions = adminPermissions?.data?.permissions;
const hasProductPermission = hasAnyPermission(permissions, PRODUCT_PERMISSION_RESOURCES);
const hasTaskManagerPermission = hasAnyPermission(permissions, TASK_MANAGER_PERMISSION_RESOURCES);
const productsDefaultLink = (() => {
const permissionNames = permissions?.map((p: { name: string }) => p.name) ?? [];
@@ -67,11 +70,7 @@ const SideBar: FC = () => {
return Pages.dashboard;
})();
const usersDefaultLink = (() => {
if (hasPermission(permissions, "admins")) return Pages.users.list;
if (hasAnyPermission(permissions, TASK_MANAGER_PERMISSION_RESOURCES)) return Pages.taskmanager.workspaceList;
return Pages.users.list;
})();
const usersDefaultLink = Pages.users.list;
useEffect(() => {
const groupName = getSubMenuNameFromPath(location.pathname);
@@ -210,6 +209,23 @@ const SideBar: FC = () => {
activeNames={USERS_SIDEBAR_PERMISSION_RESOURCES}
/>
{hasTaskManagerPermission && (
<SideBarItem
icon={
<TickSquare
variant={isGroupActive("taskmanager") ? "Bold" : "Outline"}
color={isGroupActive("taskmanager") ? "black" : "#8C90A3"}
size={iconSizeSideBar}
/>
}
title={t("sidebar.taskmanager")}
isActive={isGroupActive("taskmanager")}
link={Pages.taskmanager.workspaceList}
name="taskmanager"
activeNames={TASK_MANAGER_PERMISSION_RESOURCES}
/>
)}
<SideBarItem
icon={
<DocumentLike
@@ -336,6 +352,8 @@ const SideBar: FC = () => {
<ResellerSubMenu />
) : subMenuName === "users" ? (
<UsersSubMenu />
) : subMenuName === "taskmanager" ? (
<TaskManagerSubMenu />
) : subMenuName === "content" ? (
<ContentSubMenu />
) : subMenuName === "financial" ? (
@@ -0,0 +1,45 @@
import { TickSquare } from "iconsax-react";
import { FC } from "react";
import { useTranslation } from "react-i18next";
import { useLocation } from "react-router-dom";
import { Pages } from "../../config/Pages";
import { TASK_MANAGER_PERMISSION_RESOURCES } from "../../helpers/permissions";
import SubMenuItem from "./SubMenuItem";
const TaskManagerSubMenu: FC = () => {
const location = useLocation();
const { t } = useTranslation("global");
const isTaskManagerActive =
location.pathname.startsWith(Pages.taskmanager.workspace) ||
location.pathname === Pages.taskmanager.workspaceList ||
location.pathname.startsWith(Pages.taskmanager.updateWorkspace) ||
location.pathname === Pages.taskmanager.createWorkspace ||
location.pathname === Pages.taskmanager.createProject ||
location.pathname.startsWith(Pages.taskmanager.updateProject) ||
location.pathname.startsWith(Pages.taskmanager.projectList);
return (
<div className="py-12">
<div className="flex gap-3 items-center border-b pb-10 px-6">
<TickSquare
size={24}
color="#000"
variant="Bold"
/>
<div className="text-xs">{t("sidebar.taskmanager")}</div>
</div>
<div className="flex flex-col mt-10 gap-4">
<SubMenuItem
title={t("submenu.taskmanager_workspace_list")}
isActive={isTaskManagerActive}
link={Pages.taskmanager.workspaceList}
activeNames={TASK_MANAGER_PERMISSION_RESOURCES}
/>
</div>
</div>
);
};
export default TaskManagerSubMenu;
-16
View File
@@ -3,7 +3,6 @@ import { FC } from "react";
import { useTranslation } from "react-i18next";
import { useLocation } from "react-router-dom";
import { Pages } from "../../config/Pages";
import { TASK_MANAGER_PERMISSION_RESOURCES } from "../../helpers/permissions";
import SubMenuItem from "./SubMenuItem";
const UsersSubMenu: FC = () => {
@@ -12,15 +11,6 @@ const UsersSubMenu: FC = () => {
const isActive = (name: string) => location.pathname.includes(name);
const isTaskManagerActive =
location.pathname.startsWith(Pages.taskmanager.workspace) ||
location.pathname === Pages.taskmanager.workspaceList ||
location.pathname.startsWith(Pages.taskmanager.updateWorkspace) ||
location.pathname === Pages.taskmanager.createWorkspace ||
location.pathname === Pages.taskmanager.createProject ||
location.pathname.startsWith(Pages.taskmanager.updateProject) ||
location.pathname.startsWith(Pages.taskmanager.projectList);
return (
<div className="py-12">
<div className="flex gap-3 items-center border-b pb-10 px-6">
@@ -51,12 +41,6 @@ const UsersSubMenu: FC = () => {
link={Pages.users.groupList}
activeName="admins"
/>
<SubMenuItem
title={t("sidebar.taskmanager")}
isActive={isTaskManagerActive}
link={Pages.taskmanager.workspaceList}
activeNames={TASK_MANAGER_PERMISSION_RESOURCES}
/>
</div>
</div>
);