ngx-firebase-cms
Version:
Angular Content Management System using Google Firebase (Authentication, Storage & Firestore)
162 lines • 11.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { NzMessageService } from 'ng-zorro-antd';
import { AngularFireStorage } from '@angular/fire/storage';
import { AngularFirestore } from '@angular/fire/firestore';
import { AuthService } from './auth.service';
import { of } from 'rxjs';
import * as firebase from 'firebase/app';
import * as i0 from "@angular/core";
import * as i1 from "./auth.service";
import * as i2 from "@angular/fire/storage";
import * as i3 from "@angular/fire/firestore";
import * as i4 from "ng-zorro-antd";
export class FileService {
/**
* @param {?} auth
* @param {?} storage
* @param {?} afs
* @param {?} message
*/
constructor(auth, storage, afs, message) {
this.auth = auth;
this.storage = storage;
this.afs = afs;
this.message = message;
this.beforeUpload = (/**
* @param {?} file
* @return {?}
*/
(file) => {
if (file['type'] != "image/jpeg") {
this.message.error("File type should be JPEG");
return false;
}
else if (file['size'] / 1024 / 1024 > 1) {
this.message.error("File size should be less than 1 Mb");
return false;
}
else {
return true;
}
});
this.massUploadFile = (/**
* @param {?} item
* @return {?}
*/
(item) => {
/** @type {?} */
let timestamp = new Date().valueOf();
/** @type {?} */
let filePath = `/media/${timestamp}.jpeg`;
/** @type {?} */
let file = item['file'];
/** @type {?} */
const task = this.storage.upload(filePath, file)
.then((/**
* @param {?} res
* @return {?}
*/
res => {
return this.storage.ref(filePath).getDownloadURL().toPromise();
}))
.then((/**
* @param {?} url
* @return {?}
*/
url => {
return this.save({
title: "Untitled Media",
author: this.auth.uid,
mime: file.type,
url: url,
createdTime: firebase.firestore.FieldValue.serverTimestamp(),
type: "media"
});
}))
.then((/**
* @param {?} url
* @return {?}
*/
url => {
this.message.success(`Successfully upload an image`);
}))
.catch((/**
* @param {?} err
* @return {?}
*/
err => {
this.message.error(err);
}));
return of().subscribe((/**
* @param {?} event
* @return {?}
*/
(event) => {
if (event['percent'] != 100) {
item.onProgress(event, item.file);
}
else {
item.onSuccess(event['body'], item.file, event);
}
}), (/**
* @param {?} err
* @return {?}
*/
(err) => {
item.onError(err, item.file);
}));
});
}
/**
* @private
* @param {?} post
* @return {?}
*/
save(post) {
return this.afs.collection("posts").add(post);
}
}
FileService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
FileService.ctorParameters = () => [
{ type: AuthService },
{ type: AngularFireStorage },
{ type: AngularFirestore },
{ type: NzMessageService }
];
/** @nocollapse */ FileService.ngInjectableDef = i0.defineInjectable({ factory: function FileService_Factory() { return new FileService(i0.inject(i1.AuthService), i0.inject(i2.AngularFireStorage), i0.inject(i3.AngularFirestore), i0.inject(i4.NzMessageService)); }, token: FileService, providedIn: "root" });
if (false) {
/** @type {?} */
FileService.prototype.beforeUpload;
/** @type {?} */
FileService.prototype.massUploadFile;
/**
* @type {?}
* @private
*/
FileService.prototype.auth;
/**
* @type {?}
* @private
*/
FileService.prototype.storage;
/**
* @type {?}
* @private
*/
FileService.prototype.afs;
/**
* @type {?}
* @private
*/
FileService.prototype.message;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZpcmViYXNlLWNtcy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlL2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWlCLGdCQUFnQixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sS0FBSyxRQUFRLE1BQU0sY0FBYyxDQUFBOzs7Ozs7QUFLeEMsTUFBTSxPQUFPLFdBQVc7Ozs7Ozs7SUFFdEIsWUFDVSxJQUFpQixFQUNqQixPQUEyQixFQUMzQixHQUFxQixFQUNyQixPQUF5QjtRQUh6QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBTzVCLGlCQUFZOzs7O1FBQUcsQ0FBQyxJQUFnQixFQUFXLEVBQUU7WUFDbEQsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksWUFBWSxFQUFFO2dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUM5QyxPQUFPLEtBQUssQ0FBQTthQUNiO2lCQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFDLElBQUksR0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO2dCQUN4RCxPQUFPLEtBQUssQ0FBQTthQUNiO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFBO2FBQ1o7UUFDSCxDQUFDLEVBQUE7UUFFTSxtQkFBYzs7OztRQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFOztnQkFDMUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFOztnQkFDaEMsUUFBUSxHQUFHLFVBQVUsU0FBUyxPQUFPOztnQkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7O2tCQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztpQkFDL0MsSUFBSTs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUE7WUFDaEUsQ0FBQyxFQUFDO2lCQUNELElBQUk7Ozs7WUFBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2YsS0FBSyxFQUFFLGdCQUFnQjtvQkFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLEdBQUcsRUFBRSxHQUFHO29CQUNSLFdBQVcsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7b0JBQzVELElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUMsQ0FBQTtZQUNKLENBQUMsRUFBQztpQkFDRCxJQUFJOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQTtZQUN0RCxDQUFDLEVBQUM7aUJBQ0QsS0FBSzs7OztZQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3pCLENBQUMsRUFBQztZQUNGLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUzs7OztZQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDakQ7WUFDSCxDQUFDOzs7O1lBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxFQUFDLENBQUE7UUFDSixDQUFDLEVBQUE7SUFuREcsQ0FBQzs7Ozs7O0lBRUcsSUFBSSxDQUFDLElBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsQ0FBQzs7O1lBZEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBUFEsV0FBVztZQUhYLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFGRCxnQkFBZ0I7Ozs7O0lBeUJ0QyxtQ0FVQzs7SUFFRCxxQ0FpQ0M7Ozs7O0lBdkRDLDJCQUF5Qjs7Ozs7SUFDekIsOEJBQW1DOzs7OztJQUNuQywwQkFBNkI7Ozs7O0lBQzdCLDhCQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZFhIUkFyZ3MsIE56TWVzc2FnZVNlcnZpY2UsIFVwbG9hZEZpbGUgfSBmcm9tICduZy16b3Jyby1hbnRkJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlU3RvcmFnZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvc3RvcmFnZSc7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHsgUG9zdCB9IGZyb20gJy4uL2ludGVyZmFjZS9wb3N0JztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2FwcCdcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBBbmd1bGFyRmlyZVN0b3JhZ2UsXG4gICAgcHJpdmF0ZSBhZnM6IEFuZ3VsYXJGaXJlc3RvcmUsXG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBOek1lc3NhZ2VTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHJpdmF0ZSBzYXZlKHBvc3Q6IFBvc3QpIHtcbiAgICByZXR1cm4gdGhpcy5hZnMuY29sbGVjdGlvbihcInBvc3RzXCIpLmFkZChwb3N0KVxuICB9XG5cbiAgcHVibGljIGJlZm9yZVVwbG9hZCA9IChmaWxlOiBVcGxvYWRGaWxlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYoZmlsZVsndHlwZSddICE9IFwiaW1hZ2UvanBlZ1wiKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoXCJGaWxlIHR5cGUgc2hvdWxkIGJlIEpQRUdcIilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSBpZiAoZmlsZVsnc2l6ZSddLzEwMjQvMTAyNCA+IDEpIHtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihcIkZpbGUgc2l6ZSBzaG91bGQgYmUgbGVzcyB0aGFuIDEgTWJcIilcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtYXNzVXBsb2FkRmlsZSA9IChpdGVtOiBVcGxvYWRYSFJBcmdzKSA9PiB7XG4gICAgbGV0IHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkudmFsdWVPZigpXG4gICAgbGV0IGZpbGVQYXRoID0gYC9tZWRpYS8ke3RpbWVzdGFtcH0uanBlZ2BcbiAgICBsZXQgZmlsZSA9IGl0ZW1bJ2ZpbGUnXVxuICAgIGNvbnN0IHRhc2sgPSB0aGlzLnN0b3JhZ2UudXBsb2FkKGZpbGVQYXRoLCBmaWxlKVxuICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnJlZihmaWxlUGF0aCkuZ2V0RG93bmxvYWRVUkwoKS50b1Byb21pc2UoKVxuICAgIH0pXG4gICAgLnRoZW4odXJsID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNhdmUoe1xuICAgICAgICB0aXRsZTogXCJVbnRpdGxlZCBNZWRpYVwiLFxuICAgICAgICBhdXRob3I6IHRoaXMuYXV0aC51aWQsXG4gICAgICAgIG1pbWU6IGZpbGUudHlwZSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGNyZWF0ZWRUaW1lOiBmaXJlYmFzZS5maXJlc3RvcmUuRmllbGRWYWx1ZS5zZXJ2ZXJUaW1lc3RhbXAoKSxcbiAgICAgICAgdHlwZTogXCJtZWRpYVwiXG4gICAgICB9KVxuICAgIH0pXG4gICAgLnRoZW4odXJsID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKGBTdWNjZXNzZnVsbHkgdXBsb2FkIGFuIGltYWdlYClcbiAgICB9KVxuICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKGVycilcbiAgICB9KVxuICAgIHJldHVybiBvZigpLnN1YnNjcmliZSgoZXZlbnQ6IEh0dHBFdmVudDx7fT4pID0+IHtcbiAgICAgIGlmIChldmVudFsncGVyY2VudCddICE9IDEwMCkge1xuICAgICAgICBpdGVtLm9uUHJvZ3Jlc3MoZXZlbnQsIGl0ZW0uZmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLm9uU3VjY2VzcyhldmVudFsnYm9keSddLCBpdGVtLmZpbGUsIGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBpdGVtLm9uRXJyb3IoZXJyLCBpdGVtLmZpbGUpO1xuICAgIH0pXG4gIH1cbn1cbiJdfQ==