UNPKG

ngx-firebase-cms

Version:

Angular Content Management System using Google Firebase (Authentication, Storage & Firestore)

162 lines 11.3 kB
/** * @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==