refactor: reorganize imports and enhance admin category filtering in AppSidebar 🔨

This commit is contained in:
2025-07-01 07:52:33 +05:00
parent 40b9cf8a2e
commit 1549b209b3
2 changed files with 40 additions and 39 deletions

View File

@ -1,21 +1,19 @@
import { DeviceCartDrawer } from "@/components/device-cart"; import { redirect } from "next/navigation";
import { Wallet } from "@/components/wallet"; import { getServerSession } from "next-auth";
import { NuqsAdapter } from 'nuqs/adapters/next/app' import { NuqsAdapter } from 'nuqs/adapters/next/app'
import { ModeToggle } from "@/components/theme-toggle";
import { AppSidebar } from "@/components/ui/app-sidebar";
import { getProfile } from "@/actions/payment"; import { getProfile } from "@/actions/payment";
import { authOptions } from "@/app/auth"; import { authOptions } from "@/app/auth";
import { DeviceCartDrawer } from "@/components/device-cart";
import { ModeToggle } from "@/components/theme-toggle";
import { AppSidebar } from "@/components/ui/app-sidebar";
import { Separator } from "@/components/ui/separator"; import { Separator } from "@/components/ui/separator";
import { import {
SidebarInset, SidebarInset,
SidebarProvider, SidebarProvider,
SidebarTrigger, SidebarTrigger,
} from "@/components/ui/sidebar"; } from "@/components/ui/sidebar";
import { Wallet } from "@/components/wallet";
import { tryCatch } from "@/utils/tryCatch"; import { tryCatch } from "@/utils/tryCatch";
import { getServerSession } from "next-auth";
import { redirect } from "next/navigation";
import { WelcomeBanner } from "../welcome-banner"; import { WelcomeBanner } from "../welcome-banner";
import { AccountPopover } from "./account-popver"; import { AccountPopover } from "./account-popver";

View File

@ -9,7 +9,8 @@ import {
UsersRound, UsersRound,
Wallet2Icon, Wallet2Icon,
} from "lucide-react"; } from "lucide-react";
import Link from "next/link";
import { getServerSession } from "next-auth";
import { authOptions } from "@/app/auth"; import { authOptions } from "@/app/auth";
import { import {
Collapsible, Collapsible,
@ -28,8 +29,6 @@ import {
SidebarMenuItem, SidebarMenuItem,
SidebarRail, SidebarRail,
} from "@/components/ui/sidebar"; } from "@/components/ui/sidebar";
import { getServerSession } from "next-auth";
import Link from "next/link";
type Permission = { type Permission = {
id: number; id: number;
@ -128,7 +127,16 @@ export async function AppSidebar({
const session = await getServerSession(authOptions); const session = await getServerSession(authOptions);
const filteredCategories = categories.map((category) => { let CATEGORIES: Categories;
if (session?.user?.is_admin) {
CATEGORIES = categories;
} else {
// Filter out ADMIN CONTROL category for non-admin users
const nonAdminCategories = categories.filter(
(category) => category.id !== "ADMIN CONTROL"
);
const filteredCategories = nonAdminCategories.map((category) => {
const filteredChildren = category.children.filter((child) => { const filteredChildren = category.children.filter((child) => {
const permIdentifier = child.perm_identifier; const permIdentifier = child.perm_identifier;
return session?.user?.user_permissions?.some((permission: Permission) => { return session?.user?.user_permissions?.some((permission: Permission) => {
@ -140,15 +148,10 @@ export async function AppSidebar({
return { ...category, children: filteredChildren }; return { ...category, children: filteredChildren };
}); });
const filteredCategoriesWithChildren = filteredCategories.filter(
CATEGORIES = filteredCategories.filter(
(category) => category.children.length > 0, (category) => category.children.length > 0,
); );
let CATEGORIES: Categories;
if (session?.user?.is_superuser) {
CATEGORIES = categories;
} else {
CATEGORIES = filteredCategoriesWithChildren;
} }
return ( return (