'use client'; import { useSession } from 'next-auth/react'; import { useCallback } from 'react'; /** * Hook som returnerar en fetch-funktion med Authorization-header automatiskt ifylld. * Används i klientkomponenter som gör anrop till endpoints som Caddy routar direkt * till NestJS (t.ex. /api/recipes*, /api/products*, /api/inventory*). * * Exempel: * const authFetch = useAuthFetch(); * const res = await authFetch('/api/recipes/1', { method: 'PATCH', body: JSON.stringify(data) }); */ export function useAuthFetch() { const sessionResult = useSession(); const accessToken = sessionResult?.data?.accessToken ?? ''; return useCallback( (url: string, init: RequestInit = {}): Promise => { const headers = new Headers(init.headers); if (accessToken) { headers.set('Authorization', `Bearer ${accessToken}`); } if (!headers.has('Content-Type') && init.body && typeof init.body === 'string') { headers.set('Content-Type', 'application/json'); } return fetch(url, { ...init, headers }); }, [accessToken], ); }