/**
 * Datei-Upload – **Web**. Gegenstück: `upload.ts`, siehe dortiger Kopf.
 *
 * Der Picker liefert im Browser eine blob:- oder data:-URI. Das Web-SDK will
 * ein echtes `File`, also wird die URI einmal gelesen und umgepackt.
 */
// Bewusst `./appwrite.web` und nicht `./appwrite`: TypeScript löst die
// Plattform-Endung nicht auf und würde sonst die native Signatur prüfen
// (`{name,type,size,uri}` statt `File`). Metro lädt auf Web ohnehin dieselbe
// Datei, der explizite Pfad ändert am Ergebnis nichts – nur an der Prüfung.
import { ID, storage } from './appwrite.web';

export type Auswahl = {
  uri: string;
  name: string;
  mimeType: string;
  size: number;
};

export async function hochladen(
  bucketId: string,
  datei: Auswahl,
  permissions: string[],
): Promise<string> {
  const blob = await (await fetch(datei.uri)).blob();
  const file = new File([blob], datei.name, { type: datei.mimeType || blob.type });
  const f = await storage.createFile({
    bucketId,
    fileId: ID.unique(),
    file,
    permissions,
  });
  return f.$id;
}
