Files
wgenerator/src/app/modules/songs/song/file/file.component.ts
2026-03-09 23:25:17 +01:00

26 lines
852 B
TypeScript

import {Component, EnvironmentInjector, Input, inject, runInInjectionContext} from '@angular/core';
import {File} from '../../services/file';
import {getDownloadURL, ref, Storage} from '@angular/fire/storage';
import {from, Observable} from 'rxjs';
import {AsyncPipe} from '@angular/common';
@Component({
selector: 'app-file',
templateUrl: './file.component.html',
styleUrls: ['./file.component.less'],
imports: [AsyncPipe],
})
export class FileComponent {
private storage = inject(Storage);
private environmentInjector = inject(EnvironmentInjector);
public url$: Observable<string> | null = null;
public name = '';
@Input()
public set file(file: File) {
this.url$ = from(runInInjectionContext(this.environmentInjector, () => getDownloadURL(ref(this.storage, file.path + '/' + file.name))));
this.name = file.name;
}
}