diff --git a/apps/web/app/(dash)/actions.ts b/apps/web/app/(dash)/actions.ts new file mode 100644 index 00000000..70c2a567 --- /dev/null +++ b/apps/web/app/(dash)/actions.ts @@ -0,0 +1,48 @@ +"use server"; + +import { cookies, headers } from "next/headers"; +import { db } from "../helpers/server/db"; +import { sessions, users, space } from "../helpers/server/db/schema"; +import { eq } from "drizzle-orm"; +import { redirect } from "next/navigation"; + +export async function ensureAuth() { + const token = + cookies().get("next-auth.session-token")?.value ?? + cookies().get("__Secure-authjs.session-token")?.value ?? + cookies().get("authjs.session-token")?.value ?? + headers().get("Authorization")?.replace("Bearer ", ""); + + if (!token) { + return undefined; + } + + const sessionData = await db + .select() + .from(sessions) + .innerJoin(users, eq(users.id, sessions.userId)) + .where(eq(sessions.sessionToken, token)); + + if (!sessionData || sessionData.length < 0) { + return undefined; + } + + return { + user: sessionData[0]!.user, + session: sessionData[0]!, + }; +} + +export async function getSpaces() { + const data = await ensureAuth(); + if (!data) { + redirect("/signin"); + } + + const sp = await db + .select() + .from(space) + .where(eq(space.user, data.user.email)); + + return sp; +} diff --git a/apps/web/app/(dash)/chat/chatWindow.tsx b/apps/web/app/(dash)/chat/chatWindow.tsx index 8361bbf8..43c337ee 100644 --- a/apps/web/app/(dash)/chat/chatWindow.tsx +++ b/apps/web/app/(dash)/chat/chatWindow.tsx @@ -7,7 +7,7 @@ import { cn } from "@repo/ui/lib/utils"; import { motion } from "framer-motion"; import { useRouter } from "next/navigation"; -function ChatWindow({ q, spaces }: { q: string; spaces: number[] }) { +function ChatWindow({ q }: { q: string }) { const [layout, setLayout] = useState<"chat" | "initial">("initial"); const router = useRouter(); @@ -31,11 +31,7 @@ function ChatWindow({ q, spaces }: { q: string; spaces: number[] }) { className="max-w-3xl flex mx-auto w-full flex-col" >
- +
) : ( diff --git a/apps/web/app/(dash)/chat/page.tsx b/apps/web/app/(dash)/chat/page.tsx index 4ad4d468..9e28fda7 100644 --- a/apps/web/app/(dash)/chat/page.tsx +++ b/apps/web/app/(dash)/chat/page.tsx @@ -1,5 +1,5 @@ -import { chatSearchParamsCache } from "../../helpers/lib/searchParams"; import ChatWindow from "./chatWindow"; +import { chatSearchParamsCache } from "../../helpers/lib/searchParams"; function Page({ searchParams, @@ -8,7 +8,9 @@ function Page({ }) { const { firstTime, q, spaces } = chatSearchParamsCache.parse(searchParams); - return ; + console.log(spaces); + + return ; } export default Page; diff --git a/apps/web/app/(dash)/header.tsx b/apps/web/app/(dash)/header.tsx index bcbe9691..104c63bc 100644 --- a/apps/web/app/(dash)/header.tsx +++ b/apps/web/app/(dash)/header.tsx @@ -3,6 +3,7 @@ import Image from "next/image"; import Link from "next/link"; import Logo from "../../public/logo.svg"; import { AddIcon, ChatIcon } from "@repo/ui/icons"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@repo/ui/shadcn/tabs"; function Header() { return ( @@ -16,11 +17,32 @@ function Header() { /> -
- -
+ +
+ + +
+ + Account + Password + +
+
+ +
+ + Make changes to your account here. + + + Change your password here. + +
+