import { Injectable } from '@angular/core';
import { MediaObjectService } from '@app/core/api/v1';
import { Observable, catchError, map, of } from 'rxjs';

@Injectable({
    providedIn: 'root'
})
export class ImageUploadService {

    constructor(private mediaObjectService: MediaObjectService) { }

    /**
     * Lädt ein neues Bild hoch
     * @param file Die hochzuladende Datei
     * @returns Observable mit der ID des hochgeladenen Bildes
     */
    uploadImage(file: File): Observable<string | null | undefined> {
        return this.mediaObjectService.mediaObjectsPost(file).pipe(
            map(mediaObject => mediaObject.id),
            catchError(error => {
                console.error('Fehler beim Hochladen der Datei:', error);
                return of(null);
            })
        );
    }

    /**
     * Löscht ein vorhandenes Bild
     * @param id Die ID des zu löschenden Bildes (kann string oder number sein)
     * @returns Observable, das true zurückgibt, wenn das Löschen erfolgreich war
     */
    deleteImage(id: string | number): Observable<boolean> {
        return this.mediaObjectService.mediaObjectsIdDelete(id.toString()).pipe(
            map(() => true),
            catchError(error => {
                console.error('Fehler beim Löschen des Bildes:', error);
                return of(false);
            })
        );
    }
}