go-chi-oapi-codegen-todolist/frontend/app/todos/layout.tsx
2025-04-20 17:20:17 +07:00

41 lines
949 B
TypeScript

"use client";
import { useEffect } from "react";
import { useRouter } from "next/navigation";
import { useAuthStore } from "@/store/auth-store";
import { Navbar } from "@/components/navbar";
export default function TodosLayout({
children,
}: {
children: React.ReactNode;
}) {
const { isAuthenticated, hydrated } = useAuthStore();
const router = useRouter();
useEffect(() => {
if (hydrated && !isAuthenticated) {
router.push("/login");
}
}, [hydrated, isAuthenticated, router]);
if (!hydrated) {
return (
<div className="flex items-center justify-center w-full h-full">
<div className="animate-spin rounded-full h-5 w-5 border-b-2 border-blue-500" />
</div>
);
}
if (!isAuthenticated) {
return null;
}
return (
<div className="flex min-h-screen flex-col items-start mx-auto">
<Navbar />
<main className="flex-1 w-full py-2">{children}</main>
</div>
);
}