import { trpcJsonBodyHttpClientOptions } from '@sammo-ts/common/http/trpcTransport';
import { createTRPCProxyClient, httpBatchLink, httpLink } from '@trpc/client';
import type { AppRouter } from '@sammo-ts/gateway-api';

const getSessionToken = (): string | null => {
    if (typeof window === 'undefined') {
        return null;
    }
    return window.localStorage.getItem('sammo-session-token');
};

export const trpc = createTRPCProxyClient<AppRouter>({
    links: [
        httpBatchLink({
            url: import.meta.env.VITE_GATEWAY_API_URL ?? '/api/trpc',
            ...trpcJsonBodyHttpClientOptions,
            headers() {
                const token = getSessionToken();
                return token ? { 'x-session-token': token } : {};
            },
        }),
    ],
});

export const directTrpc = createTRPCProxyClient<AppRouter>({
    links: [
        httpLink({
            url: import.meta.env.VITE_GATEWAY_API_URL ?? '/api/trpc',
            ...trpcJsonBodyHttpClientOptions,
            headers() {
                const token = getSessionToken();
                return token ? { 'x-session-token': token } : {};
            },
        }),
    ],
});
