({ children }: Props)
| 882 | } |
| 883 | |
| 884 | export default function Page({ children }: Props) { |
| 885 | const [defaultOpen, setDefaultOpen] = useState<boolean | undefined>( |
| 886 | undefined, |
| 887 | ); |
| 888 | const [isLoaded, setIsLoaded] = useState(false); |
| 889 | |
| 890 | useEffect(() => { |
| 891 | const cookieValue = document.cookie |
| 892 | .split("; ") |
| 893 | .find((row) => row.startsWith(`${SIDEBAR_COOKIE_NAME}=`)) |
| 894 | ?.split("=")[1]; |
| 895 | |
| 896 | setDefaultOpen(cookieValue === undefined ? true : cookieValue === "true"); |
| 897 | setIsLoaded(true); |
| 898 | }, []); |
| 899 | |
| 900 | const pathname = usePathname(); |
| 901 | const { data: auth } = api.user.get.useQuery(); |
| 902 | const { data: permissions } = api.user.getPermissions.useQuery(); |
| 903 | const { data: dokployVersion } = api.settings.getDokployVersion.useQuery(); |
| 904 | const { data: whitelabeling } = api.whitelabeling.get.useQuery(undefined, { |
| 905 | staleTime: 5 * 60 * 1000, |
| 906 | refetchOnWindowFocus: false, |
| 907 | }); |
| 908 | |
| 909 | const includesProjects = pathname?.includes("/dashboard/project"); |
| 910 | const { data: isCloud } = api.settings.isCloud.useQuery(); |
| 911 | |
| 912 | const { |
| 913 | home: filteredHome, |
| 914 | settings: filteredSettings, |
| 915 | help, |
| 916 | } = createMenuForAuthUser({ |
| 917 | auth, |
| 918 | permissions, |
| 919 | isCloud: !!isCloud, |
| 920 | whitelabeling, |
| 921 | }); |
| 922 | |
| 923 | const activeItem = findActiveNavItem( |
| 924 | [...filteredHome, ...filteredSettings], |
| 925 | pathname, |
| 926 | ); |
| 927 | |
| 928 | if (!isLoaded) { |
| 929 | return <div className="w-full h-screen bg-background" />; // Placeholder mientras se carga |
| 930 | } |
| 931 | |
| 932 | return ( |
| 933 | <SidebarProvider |
| 934 | defaultOpen={defaultOpen} |
| 935 | open={defaultOpen} |
| 936 | onOpenChange={(open) => { |
| 937 | setDefaultOpen(open); |
| 938 | |
| 939 | // biome-ignore lint/suspicious/noDocumentCookie: this sets the cookie to keep the sidebar state. |
| 940 | document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}`; |
| 941 | }} |
nothing calls this directly
no test coverage detected