/* 
  author: Yagnik Poshiya
  organization: Webbrains Technologies Private Limited
*/

import { cookies } from 'next/headers';
import { createServerClient, type CookieOptions } from '@supabase/ssr';

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL!;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY!;

export async function getSupabaseServerClient() {
    const cookieStore = await cookies();

    return createServerClient(
        supabaseUrl,
        supabaseAnonKey,
        {
            cookies: {
                get(name: string) {
                    return cookieStore.get(name)?.value;
                },
                set(name: string, value: string, options: CookieOptions) {
                    try {
                        cookieStore.set({ name, value, ...options });
                    } catch {
                        // Cookie writes are only allowed in Route Handlers / Server Actions.
                        // When this client is used during Server Component rendering, Supabase may
                        // still attempt to refresh the session and persist cookies; we safely no-op.
                    }
                },
                remove(name: string, options: CookieOptions) {
                    try {
                        cookieStore.set({ name, value: '', ...options, maxAge: 0 });
                    } catch {
                        // See note in set()
                    }
                },
            },
        },
    );
}
