UNPKG

nativescript-plugin-firebase-ssi

Version:
196 lines (195 loc) 7.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var firebase = require("../../firebase"); var NextPushId_1 = require("./util/NextPushId"); var database; (function (database) { var Query = (function () { function Query(path) { this.path = path; } Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) { var _this = this; var onValueEvent = function (result) { if (result.error) { callback(result); } else { callback({ key: result.key, val: function () { return result.value; }, exists: function () { return !!result.value; } }); } }; firebase.addValueEventListener(onValueEvent, this.path).then(function (result) { if (!Query.registeredListeners.has(_this.path)) { Query.registeredListeners.set(_this.path, []); } Query.registeredListeners.set(_this.path, Query.registeredListeners.get(_this.path).concat(result.listeners)); }, function (error) { console.log("firebase.database().on error: " + error); }); if (!Query.registeredCallbacks.has(this.path)) { Query.registeredCallbacks.set(this.path, []); } Query.registeredCallbacks.get(this.path).push(callback); return null; }; Query.prototype.off = function (eventType, callback, context) { var _this = this; if (Query.registeredListeners.has(this.path)) { firebase.removeEventListeners(Query.registeredListeners.get(this.path), this.path).then(function (result) { return Query.registeredListeners.delete(_this.path); }, function (error) { return console.log("firebase.database().off error: " + error); }); } Query.registeredCallbacks.delete(this.path); return null; }; Query.prototype.once = function (eventType, successCallback, failureCallbackOrContext, context) { var _this = this; return new Promise(function (resolve, reject) { firebase.getValue(_this.path).then(function (result) { resolve({ key: result.key, val: function () { return result.value; }, exists: function () { return !!result.value; } }); }); }); }; Query.prototype.getOnValueEventHandler = function () { var _this = this; return function (result) { var callbacks = Query.registeredCallbacks.get(_this.path); callbacks && callbacks.map(function (callback) { callback({ key: result.key, val: function () { return result.value; }, exists: function () { return !!result.value; } }); }); }; }; Query.prototype.orderByChild = function (child) { firebase.query(this.getOnValueEventHandler(), this.path, { orderBy: { type: firebase.QueryOrderByType.CHILD, value: child } }); return this; }; Query.prototype.orderByKey = function () { firebase.query(this.getOnValueEventHandler(), this.path, { orderBy: { type: firebase.QueryOrderByType.KEY } }); return this; }; Query.prototype.orderByPriority = function () { firebase.query(this.getOnValueEventHandler(), this.path, { orderBy: { type: firebase.QueryOrderByType.PRIORITY } }); return this; }; Query.prototype.orderByValue = function () { firebase.query(this.getOnValueEventHandler(), this.path, { orderBy: { type: firebase.QueryOrderByType.VALUE } }); return this; }; Query.registeredListeners = new Map(); Query.registeredCallbacks = new Map(); return Query; }()); database.Query = Query; var Reference = (function (_super) { __extends(Reference, _super); function Reference() { return _super !== null && _super.apply(this, arguments) || this; } Reference.prototype.getKey = function () { if (!this.path) { return null; } else { return this.path.lastIndexOf("/") === -1 ? this.path : this.path.substring(this.path.lastIndexOf("/") + 1); } }; Object.defineProperty(Reference.prototype, "key", { get: function () { return this.getKey(); }, enumerable: true, configurable: true }); Reference.prototype.set = function (value, onComplete) { var _this = this; return new Promise(function (resolve, reject) { firebase.setValue(_this.path, value).then(function () { onComplete && onComplete(null); resolve(null); }).catch(function (err) { onComplete && onComplete(err); reject(err); }); }); }; Reference.prototype.child = function (path) { return new Reference(this.path ? this.path + "/" + path : path); }; Reference.prototype.push = function (value, onComplete) { var now = new Date().getTime(); var name = NextPushId_1.nextPushId(now); var thennablePushRef = this.child(name); var pushRef = this.child(name); var promise; if (value != null) { promise = thennablePushRef.set(value, onComplete).then(function () { return pushRef; }); } else { promise = Promise.resolve(pushRef); } thennablePushRef.then = promise.then.bind(promise); thennablePushRef.catch = promise.then.bind(promise, undefined); if (typeof onComplete === 'function') { promise.catch(function () { }); } return thennablePushRef; }; Reference.prototype.remove = function (onComplete) { var _this = this; return new Promise(function (resolve, reject) { firebase.remove(_this.path).then(function () { onComplete && onComplete(null); resolve(null); }).catch(function (err) { onComplete && onComplete(err); reject(err); }); }); }; Reference.prototype.onDisconnect = function () { return firebase.onDisconnect(this.path); }; Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) { return firebase.transaction(this.path, transactionUpdate, onComplete); }; return Reference; }(Query)); database.Reference = Reference; var Database = (function () { function Database() { } Database.prototype.ref = function (path) { return new Reference(path); }; return Database; }()); database.Database = Database; })(database = exports.database || (exports.database = {}));