ngx-firebase-cms
Version:
Angular Content Management System using Google Firebase (Authentication, Storage & Firestore)
164 lines • 11.5 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";
var FileService = /** @class */ (function () {
function FileService(auth, storage, afs, message) {
var _this = this;
this.auth = auth;
this.storage = storage;
this.afs = afs;
this.message = message;
this.beforeUpload = (/**
* @param {?} file
* @return {?}
*/
function (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 {?}
*/
function (item) {
/** @type {?} */
var timestamp = new Date().valueOf();
/** @type {?} */
var filePath = "/media/" + timestamp + ".jpeg";
/** @type {?} */
var file = item['file'];
/** @type {?} */
var task = _this.storage.upload(filePath, file)
.then((/**
* @param {?} res
* @return {?}
*/
function (res) {
return _this.storage.ref(filePath).getDownloadURL().toPromise();
}))
.then((/**
* @param {?} url
* @return {?}
*/
function (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 {?}
*/
function (url) {
_this.message.success("Successfully upload an image");
}))
.catch((/**
* @param {?} err
* @return {?}
*/
function (err) {
_this.message.error(err);
}));
return of().subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
if (event['percent'] != 100) {
item.onProgress(event, item.file);
}
else {
item.onSuccess(event['body'], item.file, event);
}
}), (/**
* @param {?} err
* @return {?}
*/
function (err) {
item.onError(err, item.file);
}));
});
}
/**
* @private
* @param {?} post
* @return {?}
*/
FileService.prototype.save = /**
* @private
* @param {?} post
* @return {?}
*/
function (post) {
return this.afs.collection("posts").add(post);
};
FileService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
FileService.ctorParameters = function () { return [
{ 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" });
return FileService;
}());
export { FileService };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWZpcmViYXNlLWNtcy8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlL2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWlCLGdCQUFnQixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sS0FBSyxRQUFRLE1BQU0sY0FBYyxDQUFBOzs7Ozs7QUFFeEM7SUFLRSxxQkFDVSxJQUFpQixFQUNqQixPQUEyQixFQUMzQixHQUFxQixFQUNyQixPQUF5QjtRQUpuQyxpQkFLSztRQUpLLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFPNUIsaUJBQVk7Ozs7UUFBRyxVQUFDLElBQWdCO1lBQ3JDLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFlBQVksRUFBRTtnQkFDL0IsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtnQkFDOUMsT0FBTyxLQUFLLENBQUE7YUFDYjtpQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBQyxJQUFJLEdBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDckMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtnQkFDeEQsT0FBTyxLQUFLLENBQUE7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQTthQUNaO1FBQ0gsQ0FBQyxFQUFBO1FBRU0sbUJBQWM7Ozs7UUFBRyxVQUFDLElBQW1COztnQkFDdEMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFOztnQkFDaEMsUUFBUSxHQUFHLFlBQVUsU0FBUyxVQUFPOztnQkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7O2dCQUNqQixJQUFJLEdBQUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztpQkFDL0MsSUFBSTs7OztZQUFDLFVBQUEsR0FBRztnQkFDUCxPQUFPLEtBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFBO1lBQ2hFLENBQUMsRUFBQztpQkFDRCxJQUFJOzs7O1lBQUMsVUFBQSxHQUFHO2dCQUNQLE9BQU8sS0FBSSxDQUFDLElBQUksQ0FBQztvQkFDZixLQUFLLEVBQUUsZ0JBQWdCO29CQUN2QixNQUFNLEVBQUUsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRTtvQkFDNUQsSUFBSSxFQUFFLE9BQU87aUJBQ2QsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxFQUFDO2lCQUNELElBQUk7Ozs7WUFBQyxVQUFBLEdBQUc7Z0JBQ1AsS0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQTtZQUN0RCxDQUFDLEVBQUM7aUJBQ0QsS0FBSzs7OztZQUFDLFVBQUEsR0FBRztnQkFDUixLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN6QixDQUFDLEVBQUM7WUFDRixPQUFPLEVBQUUsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEtBQW9CO2dCQUN6QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDakQ7WUFDSCxDQUFDOzs7O1lBQUUsVUFBQyxHQUFHO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixDQUFDLEVBQUMsQ0FBQTtRQUNKLENBQUMsRUFBQTtJQW5ERyxDQUFDOzs7Ozs7SUFFRywwQkFBSTs7Ozs7SUFBWixVQUFhLElBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsQ0FBQzs7Z0JBZEYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFQUSxXQUFXO2dCQUhYLGtCQUFrQjtnQkFDbEIsZ0JBQWdCO2dCQUZELGdCQUFnQjs7O3NCQUR4QztDQXdFQyxBQTlERCxJQThEQztTQTNEWSxXQUFXOzs7SUFhdEIsbUNBVUM7O0lBRUQscUNBaUNDOzs7OztJQXZEQywyQkFBeUI7Ozs7O0lBQ3pCLDhCQUFtQzs7Ozs7SUFDbkMsMEJBQTZCOzs7OztJQUM3Qiw4QkFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGxvYWRYSFJBcmdzLCBOek1lc3NhZ2VTZXJ2aWNlLCBVcGxvYWRGaWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZVN0b3JhZ2UgfSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVzdG9yZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7IFBvc3QgfSBmcm9tICcuLi9pbnRlcmZhY2UvcG9zdCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9hcHAnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZTogQW5ndWxhckZpcmVTdG9yYWdlLFxuICAgIHByaXZhdGUgYWZzOiBBbmd1bGFyRmlyZXN0b3JlLFxuICAgIHByaXZhdGUgbWVzc2FnZTogTnpNZXNzYWdlU2VydmljZVxuICApIHsgfVxuXG4gIHByaXZhdGUgc2F2ZShwb3N0OiBQb3N0KSB7XG4gICAgcmV0dXJuIHRoaXMuYWZzLmNvbGxlY3Rpb24oXCJwb3N0c1wiKS5hZGQocG9zdClcbiAgfVxuXG4gIHB1YmxpYyBiZWZvcmVVcGxvYWQgPSAoZmlsZTogVXBsb2FkRmlsZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmKGZpbGVbJ3R5cGUnXSAhPSBcImltYWdlL2pwZWdcIikge1xuICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKFwiRmlsZSB0eXBlIHNob3VsZCBiZSBKUEVHXCIpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKGZpbGVbJ3NpemUnXS8xMDI0LzEwMjQgPiAxKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoXCJGaWxlIHNpemUgc2hvdWxkIGJlIGxlc3MgdGhhbiAxIE1iXCIpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWFzc1VwbG9hZEZpbGUgPSAoaXRlbTogVXBsb2FkWEhSQXJncykgPT4ge1xuICAgIGxldCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnZhbHVlT2YoKVxuICAgIGxldCBmaWxlUGF0aCA9IGAvbWVkaWEvJHt0aW1lc3RhbXB9LmpwZWdgXG4gICAgbGV0IGZpbGUgPSBpdGVtWydmaWxlJ11cbiAgICBjb25zdCB0YXNrID0gdGhpcy5zdG9yYWdlLnVwbG9hZChmaWxlUGF0aCwgZmlsZSlcbiAgICAudGhlbihyZXMgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5yZWYoZmlsZVBhdGgpLmdldERvd25sb2FkVVJMKCkudG9Qcm9taXNlKClcbiAgICB9KVxuICAgIC50aGVuKHVybCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zYXZlKHtcbiAgICAgICAgdGl0bGU6IFwiVW50aXRsZWQgTWVkaWFcIixcbiAgICAgICAgYXV0aG9yOiB0aGlzLmF1dGgudWlkLFxuICAgICAgICBtaW1lOiBmaWxlLnR5cGUsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBjcmVhdGVkVGltZTogZmlyZWJhc2UuZmlyZXN0b3JlLkZpZWxkVmFsdWUuc2VydmVyVGltZXN0YW1wKCksXG4gICAgICAgIHR5cGU6IFwibWVkaWFcIlxuICAgICAgfSlcbiAgICB9KVxuICAgIC50aGVuKHVybCA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcyhgU3VjY2Vzc2Z1bGx5IHVwbG9hZCBhbiBpbWFnZWApXG4gICAgfSlcbiAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZS5lcnJvcihlcnIpXG4gICAgfSlcbiAgICByZXR1cm4gb2YoKS5zdWJzY3JpYmUoKGV2ZW50OiBIdHRwRXZlbnQ8e30+KSA9PiB7XG4gICAgICBpZiAoZXZlbnRbJ3BlcmNlbnQnXSAhPSAxMDApIHtcbiAgICAgICAgaXRlbS5vblByb2dyZXNzKGV2ZW50LCBpdGVtLmZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbS5vblN1Y2Nlc3MoZXZlbnRbJ2JvZHknXSwgaXRlbS5maWxlLCBldmVudCk7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgaXRlbS5vbkVycm9yKGVyciwgaXRlbS5maWxlKTtcbiAgICB9KVxuICB9XG59XG4iXX0=