Advertisement
Guest User

upload.service

a guest
Mar 20th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. import { Injectable } from '@angular/core';
  2. import {
  3. AngularFireDatabase, AngularFireList, AngularFireAction, DatabaseSnapshot,} from 'angularfire2/database';
  4. import { Observable } from 'rxjs/Observable';
  5. import * as firebase from 'firebase';
  6. import { Upload } from './upload';
  7. import {AngularFireAuth} from "angularfire2/auth";
  8. import {AuthService} from "../../../core/auth.service";
  9.  
  10.  
  11. @Injectable()
  12. export class UploadService {
  13. uploadRef: AngularFireList<any>;
  14. constructor(private db: AngularFireDatabase,
  15. public firebaseAuth: AngularFireAuth,
  16. public auth: AuthService,) {
  17.  
  18. this.uploadRef = this.db.list<any>('uploads');
  19. }
  20.  
  21. get getListUploads(): Observable<AngularFireAction<DatabaseSnapshot>[]> {
  22. return this.uploadRef.snapshotChanges().map(changes => {
  23. return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
  24. });
  25. }
  26.  
  27. set pushUpload(upload: Upload) {
  28. const storageRef = firebase.storage().ref();
  29.  
  30. const uploadTask = storageRef.child(`uploads/${upload.file.name}`).put(upload.file);
  31.  
  32. uploadTask.on('state_changed',
  33. (snapshot: firebase.storage.UploadTaskSnapshot) => {
  34. upload.progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
  35. }, (error) => {
  36. console.log(error)
  37. }, () => {
  38. upload.url = uploadTask.snapshot.downloadURL
  39. upload.name = upload.file.name
  40. this.saveFileData(upload);
  41. }
  42. );
  43. }
  44.  
  45.  
  46. // HELPERS
  47.  
  48. private saveFileData(upload: Upload): void {
  49. this.firebaseAuth.authState.subscribe(auth => {
  50. this.db.list(`uploads/`).push(upload);
  51. })
  52. }
  53.  
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement