import { Injectable } from '@angular/core'; import { FileUpload } from '../../models/file-upload'; import { Observable } from 'rxjs'; import { AngularFireDatabase, AngularFireList } from '@angular/fire/database'; import { AngularFireStorage } from '@angular/fire/storage'; import {delay, finalize, timeout} from 'rxjs/operators'; import {ArticlesService} from '../article-service/articles.service'; import {Article} from '../../models/models'; import {createUrlResolverWithoutPackagePrefix} from '@angular/compiler'; @Injectable({ providedIn: 'root' }) export class FileUploadService { private basePath = '/imagess'; currentUrl: string; constructor(private db: AngularFireDatabase, private storage: AngularFireStorage, private articleService: ArticlesService) { } pushFileToStorage(fileUpload: FileUpload): Observable { const filePath = `${this.basePath}/${fileUpload.file.name}`; const storageRef = this.storage.ref(filePath); const uploadTask = this.storage.upload(filePath, fileUpload.file); delay(500); uploadTask.snapshotChanges().pipe( finalize(() => { storageRef.getDownloadURL().subscribe(downloadURL => { fileUpload.url = downloadURL; this.saveFileData(fileUpload); }); })).subscribe(); return uploadTask.percentageChanges(); } saveFileData(fileUpload: FileUpload): void { // console.log(fileUpload); this.db.list(this.basePath).push(fileUpload); this.articleService.updateArticlePhotoUrlByID(fileUpload.articleId, fileUpload.url); // this.test(fileUpload); console.log("called"); } test(fileUpload: FileUpload) { this.articleService.updateArticlePhotoUrlByID(fileUpload.articleId, fileUpload.url); console.log(fileUpload); } getFiles(numberItems: number): AngularFireList { return this.db.list(this.basePath); } // deleteFile(fileUpload: FileUpload): void { // this.deleteFileDatabase(fileUpload.key) // .then(() => { // this.deleteFileStorage(fileUpload.name); // }) // .catch(error => console.log(error)); // } // private deleteFileDatabase(key: string): Promise { // return this.db.list(this.basePath).remove(key); // } // private deleteFileStorage(name: string): void { // const storageRef = this.storage.ref(this.basePath); // storageRef.child(name).delete(); // } }