import { supabase } from './supabase';

// Sube una imagen (producto/logo/portada) a Cloudflare R2 vía la Pages Function
// /api/subir-imagen, que valida al negocio con el JWT y la guarda bajo la carpeta
// del propio restaurante; se sirve por img.gustitoxpress.app (R2 no cobra egress).
// Ya NO pasa por Supabase Storage. El 3er parámetro se conserva por compatibilidad
// con los llamadores, pero el servidor deriva el restaurante del perfil de quien sube.
export async function subirImagen(file: File, carpeta: string, _restauranteId?: string): Promise<string> {
  const { data } = await supabase.auth.getSession();
  const token = data.session?.access_token;
  if (!token) throw new Error('Necesitas iniciar sesión para subir imágenes');
  const form = new FormData();
  form.append('file', file);
  form.append('tipo', carpeta);
  const res = await fetch('/api/subir-imagen', {
    method: 'POST',
    headers: { Authorization: `Bearer ${token}` },
    body: form,
  });
  const j = (await res.json().catch(() => ({}))) as { url?: string; error?: string };
  if (!res.ok || !j.url) throw new Error(j.error || 'No se pudo subir la imagen');
  return j.url;
}

// Sube el comprobante de un pago (mostrador/delivery) al bucket privado
// "comprobantes"; el dueño lo abre luego con una URL firmada. Mismo patrón que
// usa el cliente desde su celular (apps/cliente/src/lib/storage.ts).
export async function subirComprobante(file: File, pedidoId: string): Promise<string> {
  const ext = (file.name.split('.').pop() || 'jpg').toLowerCase();
  const ruta = `${pedidoId}/${crypto.randomUUID()}.${ext}`;
  const { error } = await supabase.storage
    .from('comprobantes')
    .upload(ruta, file, { upsert: false, contentType: file.type || 'image/jpeg' });
  if (error) throw error;
  return ruta;
}
