import { json, type ActionFunction } from '@remix-run/cloudflare'; import type { SupabaseProject } from '~/types/supabase'; export const action: ActionFunction = async ({ request }) => { if (request.method !== 'POST') { return json({ error: 'Method not allowed' }, { status: 405 }); } try { const { token } = (await request.json()) as any; const projectsResponse = await fetch('https://api.supabase.com/v1/projects', { headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, }); if (!projectsResponse.ok) { const errorText = await projectsResponse.text(); console.error('Projects fetch failed:', errorText); return json({ error: 'Failed to fetch projects' }, { status: 401 }); } const projects = (await projectsResponse.json()) as SupabaseProject[]; const uniqueProjectsMap = new Map(); for (const project of projects) { if (!uniqueProjectsMap.has(project.id)) { uniqueProjectsMap.set(project.id, project); } } const uniqueProjects = Array.from(uniqueProjectsMap.values()); uniqueProjects.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime()); return json({ user: { email: 'Connected', role: 'Admin' }, stats: { projects: uniqueProjects, totalProjects: uniqueProjects.length, }, }); } catch (error) { console.error('Supabase API error:', error); return json( { error: error instanceof Error ? error.message : 'Authentication failed', }, { status: 401 }, ); } };