import { ref, uploadBytes, getDownloadURL } from "firebase/storage";
import { getStorageBucket } from "@/lib/firebase";
import {
  MAX_IMAGE_BYTES,
  resolveImageExtension,
  sanitizeImageBaseName,
} from "@/lib/sanitize-image-name";

/** Admin panelinden görsel yükleme; Firebase Storage `gorseller/` (Node sunucu gerekmez). */
export async function uploadGorsellerImage(file: File): Promise<string> {
  if (file.size > MAX_IMAGE_BYTES) {
    throw new Error("Dosya çok büyük (en fazla 8 MB).");
  }

  const storage = getStorageBucket();
  if (!storage) {
    throw new Error("Firebase Storage yapılandırılmamış.");
  }

  const ext = resolveImageExtension(file);
  const base = sanitizeImageBaseName(file.name);
  const unique = `${Date.now()}-${base}${ext}`;
  const objectRef = ref(storage, `gorseller/${unique}`);

  await uploadBytes(objectRef, file, { contentType: file.type || undefined });
  return getDownloadURL(objectRef);
}
