diff --git a/app/(auth)/signin/page.tsx b/app/(auth)/signin/page.tsx index 2659ca6..fb65111 100644 --- a/app/(auth)/signin/page.tsx +++ b/app/(auth)/signin/page.tsx @@ -2,7 +2,7 @@ import { Metadata } from "next" import { redirect } from "next/navigation" import { UserAuthForm } from "@/components/modules/auth/UserAuthForm" import { getCurrentSession } from "@/lib/session" -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs" +import { createClient } from "@/lib/supabase/server" import { cookies } from "next/headers" import { Heading3 } from "@/components/ui/typography" import { siteConfig } from "@/config/site" @@ -12,13 +12,12 @@ export const metadata: Metadata = { description: "Sigin to your account", } +export const runtime = "edge" export const dynamic = 'force-dynamic' export default async function LoginPage() { const cookieStore = cookies() - const supabase = createServerComponentClient({ - cookies: () => cookieStore, - }) + const supabase = createClient(cookieStore) const session = await getCurrentSession(supabase) if (session) { diff --git a/app/(auth)/signup/page.tsx b/app/(auth)/signup/page.tsx index 56f66e9..0428aa5 100644 --- a/app/(auth)/signup/page.tsx +++ b/app/(auth)/signup/page.tsx @@ -1,12 +1,13 @@ import { Metadata } from "next" import { redirect } from "next/navigation" import { UserSignupForm } from "@/components/modules/auth/UserSignupForm" -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs" +import { createClient } from "@/lib/supabase/server" import { getCurrentSession } from "@/lib/session" import { cookies } from "next/headers" import { Heading3 } from "@/components/ui/typography" import { siteConfig } from "@/config/site" +export const runtime = "edge" export const metadata: Metadata = { title: "Signup", description: "Signup a new account", @@ -16,9 +17,7 @@ export const dynamic = 'force-dynamic' export default async function LoginPage() { const cookieStore = cookies() - const supabase = createServerComponentClient({ - cookies: () => cookieStore, - }) + const supabase = createClient(cookieStore) const session = await getCurrentSession(supabase) if (session) { diff --git a/app/api/auth/callback/route.ts b/app/api/auth/callback/route.ts index b0bda1b..9927c7a 100644 --- a/app/api/auth/callback/route.ts +++ b/app/api/auth/callback/route.ts @@ -1,17 +1,20 @@ -import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs' +import { NextResponse } from 'next/server' import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' +import { createClient } from '@/lib/supabase/server' -export const dynamic = 'force-dynamic' - -export async function GET(req: NextRequest) { - const supabase = createRouteHandlerClient({ cookies }) - const { searchParams } = new URL(req.url) - const code = searchParams.get('code') +export async function GET(request: Request) { + // The `/auth/callback` route is required for the server-side auth flow implemented + // by the Auth Helpers package. It exchanges an auth code for the user's session. + // https://supabase.com/docs/guides/auth/auth-helpers/nextjs#managing-sign-in-with-code-exchange + const requestUrl = new URL(request.url) + const code = requestUrl.searchParams.get('code') if (code) { + const cookieStore = cookies() + const supabase = createClient(cookieStore) await supabase.auth.exchangeCodeForSession(code) } - return NextResponse.redirect(new URL('/apps/chat', req.url)) -} \ No newline at end of file + // URL to redirect to after sign in process completes + return NextResponse.redirect(requestUrl.origin) +} diff --git a/app/api/auth/logout/route.ts b/app/api/auth/logout/route.ts index e82e013..d7347dc 100644 --- a/app/api/auth/logout/route.ts +++ b/app/api/auth/logout/route.ts @@ -1,11 +1,12 @@ -import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs' +import { createClient } from '@/lib/supabase/server' import { cookies } from 'next/headers' import { type NextRequest, NextResponse } from 'next/server' export const dynamic = 'force-dynamic' export async function POST(req: NextRequest) { - const supabase = createRouteHandlerClient({ cookies }) + const cookieStore = cookies() + const supabase = createClient(cookieStore) // Check if we have a session const { diff --git a/app/api/chat/route.ts b/app/api/chat/route.ts index c87fc45..abb25ae 100644 --- a/app/api/chat/route.ts +++ b/app/api/chat/route.ts @@ -1,13 +1,13 @@ -import { RequestCookies } from "@edge-runtime/cookies"; import OpenAI from 'openai' import { OpenAIStream, StreamingTextResponse } from 'ai' -import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs'; import { pick } from 'lodash'; import { AxiomRequest, withAxiom } from 'next-axiom'; import { getCurrentSession } from '@/lib/session'; import { createNewMessage, deleteMessagesFrom, getMessageById } from '@/lib/db/message'; import { createNewChat } from '@/lib/db/chats'; import { getAppBySlug } from '@/lib/db/apps'; +import { createClient } from "@/lib/supabase/server"; +import { cookies } from "next/headers"; import { env } from '@/env.mjs'; @@ -25,8 +25,8 @@ export const POST = withAxiom(async (req: AxiomRequest) => { route: 'api/chat', }); - const cookies = new RequestCookies(req.headers) as any; - const supabase = createRouteHandlerClient({ cookies: () => cookies }) + const cookieStore = cookies() + const supabase = createClient(cookieStore) const params = await req.json() const { messages, diff --git a/app/apps/chat/[id]/page.tsx b/app/apps/chat/[id]/page.tsx index 9c2f06a..07d904a 100644 --- a/app/apps/chat/[id]/page.tsx +++ b/app/apps/chat/[id]/page.tsx @@ -2,7 +2,7 @@ import React from "react" import { cookies } from "next/headers" import { Metadata } from "next" import { ChatPanel } from "@/components/modules/apps/chat/ChatPanel" -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs" +import { createClient } from "@/lib/supabase/server" import { getChatById, getChats } from "@/lib/db/chats" import { getAppBySlug } from "@/lib/db/apps" import { getCurrentSession } from "@/lib/session" @@ -10,6 +10,9 @@ import { Message } from "ai" import { getMessages } from "@/lib/db/message" import { ChatParams } from "@/components/modules/apps/chat/types" +export const runtime = "edge" +export const preferredRegion = "home" + export const metadata: Metadata = { title: "Chat", description: "Chat with your AI assistant to generate new ideas and get inspired.", @@ -18,7 +21,8 @@ export const metadata: Metadata = { export default async function ChatPage({ params }: { params: { id: string } }) { const chatId = params.id - const supabase = createServerComponentClient({ cookies }) + const cookieStore = cookies() + const supabase = createClient(cookieStore) const session = await getCurrentSession(supabase) const currentApp = await getAppBySlug(supabase, '/apps/chat') diff --git a/app/apps/chat/page.tsx b/app/apps/chat/page.tsx index 1c633d5..ea3afab 100644 --- a/app/apps/chat/page.tsx +++ b/app/apps/chat/page.tsx @@ -1,7 +1,7 @@ import React from "react" import { Metadata } from "next" import { ChatPanel } from "@/components/modules/apps/chat/ChatPanel" -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs" +import { createClient } from "@/lib/supabase/server" import { cookies } from "next/headers" import { getAppBySlug } from "@/lib/db/apps" import { getCurrentSession } from "@/lib/session" @@ -16,9 +16,7 @@ export default async function NewChatPage() { const chatId = uuidv4() const cookieStore = cookies() - const supabase = createServerComponentClient({ - cookies: () => cookieStore, - }) + const supabase = createClient(cookieStore) const session = await getCurrentSession(supabase) const currentApp = await getAppBySlug(supabase, '/apps/chat') diff --git a/app/apps/layout.tsx b/app/apps/layout.tsx index f4eb874..5480044 100644 --- a/app/apps/layout.tsx +++ b/app/apps/layout.tsx @@ -2,7 +2,7 @@ import { ChatHistory } from "@/components/modules/apps/chat/ChatHistory" import { getAppBySlug } from "@/lib/db/apps" import { getChats } from "@/lib/db/chats" import { getCurrentSession } from "@/lib/session" -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs" +import { createClient } from "@/lib/supabase/server" import { cookies } from "next/headers" import { MainLayout } from '@/components/ui/common/MainLayout' @@ -11,7 +11,8 @@ interface AppLayoutProps { } export default async function AppLayout({ children }: AppLayoutProps) { - const supabase = createServerComponentClient({ cookies }) + const cookieStore = cookies() + const supabase = createClient(cookieStore) const session = await getCurrentSession(supabase) const currentApp = await getAppBySlug(supabase, '/apps/chat') diff --git a/app/apps/page.tsx b/app/apps/page.tsx index 25e8681..c3ccb58 100644 --- a/app/apps/page.tsx +++ b/app/apps/page.tsx @@ -1,7 +1,6 @@ import { Heading1 } from "@/components/ui/typography" export const runtime = "edge" -export const preferredRegion = "home" export default function Apps() { return ( diff --git a/app/page.tsx b/app/page.tsx index d3b4417..3542cbe 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -14,6 +14,8 @@ export const metadata: Metadata = { description: siteConfig.description, } +export const runtime = "edge" + export default async function Home() { return ( diff --git a/app/profile/page.tsx b/app/profile/page.tsx index 6e586a7..c182c2c 100644 --- a/app/profile/page.tsx +++ b/app/profile/page.tsx @@ -3,13 +3,16 @@ import { ProfileForm } from "@/components/modules/profile/ProfileForm"; import { ProfileFormValues } from "@/components/modules/profile/type"; import { getCurrentProfile } from "@/lib/db/profile"; import { getCurrentSession } from "@/lib/session"; -import { createServerComponentClient } from "@supabase/auth-helpers-nextjs"; +import { createClient } from "@/lib/supabase/server"; import { cookies } from "next/headers"; export const dynamic = 'force-dynamic' +export const runtime = "edge" + export default async function Profile() { - const supabase = createServerComponentClient({ cookies }) + const cookieStore = cookies() + const supabase = createClient(cookieStore) const profile = await getCurrentProfile(supabase) const session = await getCurrentSession(supabase) diff --git a/components/modules/apps/app-side-bar/AppSideBar.tsx b/components/modules/apps/app-side-bar/AppSideBar.tsx index d972774..00c4f3c 100644 --- a/components/modules/apps/app-side-bar/AppSideBar.tsx +++ b/components/modules/apps/app-side-bar/AppSideBar.tsx @@ -1,11 +1,12 @@ import React from 'react' import { cookies } from 'next/headers'; -import { createServerComponentClient } from '@supabase/auth-helpers-nextjs'; +import { createClient } from '@/lib/supabase/server'; import { getApps } from '@/lib/db/apps'; import { AppSideBarList } from './AppSideBarList'; export const AppSideBar = async () => { - const supabase = await createServerComponentClient({ cookies }) + const cookieStore = cookies() + const supabase = await createClient(cookieStore) const apps = await getApps(supabase) return (