import { InjectorInstance } from '../app.module';
import { Type } from '@angular/core';
import {Router} from "@angular/router";
import { BmFile } from './component/bm-file/bm-file.model';
import { Observable, of } from 'rxjs';

export class Utils {

    static isEmpty(obj: any): boolean {
        return Object.keys(obj)?.length === 0;
    }

    static inject = <T>(service: Type<T>): T => InjectorInstance.get<T>(service);

    static getRouteUrlWithoutParams(router: Router): string | null {
         if (!router?.url) {
            return null;
        }
        return router.url.split('?')[0];
    }

    static readAsDataUrl(file: File): Observable<BmFile | null> {
         if (!file) return of(null);

         return new Observable(observer => {
            const reader = new FileReader();
            reader.readAsDataURL(file);

            reader.onload = () => {
                observer.next({
                    name: file.name,
                    contentType: file.type,
                    content: (reader.result as string).split(',')[1],
                });

                observer.complete();
                };

            reader.onerror = () => {
                observer.error(null);
                observer.complete();
                };
            });
    }
}
