[js][database] once now supports passing context - as per the web sdk
This commit is contained in:
parent
fb6251a6fd
commit
425dfbcc43
|
@ -172,7 +172,11 @@ export default class Reference extends ReferenceBase {
|
||||||
* @param onComplete
|
* @param onComplete
|
||||||
* @param applyLocally
|
* @param applyLocally
|
||||||
*/
|
*/
|
||||||
transaction(transactionUpdate: Function, onComplete: (error: ?Error, committed: boolean, snapshot: ?Snapshot) => *, applyLocally: boolean = false) {
|
transaction(
|
||||||
|
transactionUpdate: Function,
|
||||||
|
onComplete: (error: ?Error, committed: boolean, snapshot: ?Snapshot) => *,
|
||||||
|
applyLocally: boolean = false,
|
||||||
|
) {
|
||||||
if (!isFunction(transactionUpdate)) {
|
if (!isFunction(transactionUpdate)) {
|
||||||
return Promise.reject(
|
return Promise.reject(
|
||||||
new Error('Missing transactionUpdate function argument.'),
|
new Error('Missing transactionUpdate function argument.'),
|
||||||
|
@ -190,6 +194,7 @@ export default class Reference extends ReferenceBase {
|
||||||
return resolve({ committed, snapshot: new Snapshot(this, snapshotData) });
|
return resolve({ committed, snapshot: new Snapshot(this, snapshotData) });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// start the transaction natively
|
||||||
this._database._transactionHandler.add(this, transactionUpdate, onCompleteWrapper, applyLocally);
|
this._database._transactionHandler.add(this, transactionUpdate, onCompleteWrapper, applyLocally);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -199,19 +204,30 @@ export default class Reference extends ReferenceBase {
|
||||||
*
|
*
|
||||||
* @param eventName
|
* @param eventName
|
||||||
* @param successCallback
|
* @param successCallback
|
||||||
* @param failureCallback
|
* @param cancelOrContext
|
||||||
* TODO @param context
|
* @param context
|
||||||
* @returns {Promise.<any>}
|
* @returns {Promise.<any>}
|
||||||
*/
|
*/
|
||||||
once(eventName: string = 'value', successCallback: (snapshot: Object) => void, failureCallback: (error: FirebaseError) => void) {
|
once(
|
||||||
|
eventName: string = 'value',
|
||||||
|
successCallback: (snapshot: Object) => void,
|
||||||
|
cancelOrContext: (error: FirebaseError) => void,
|
||||||
|
context?: Object,
|
||||||
|
) {
|
||||||
return this._database._native.once(this._refId, this.path, this._query.getModifiers(), eventName)
|
return this._database._native.once(this._refId, this.path, this._query.getModifiers(), eventName)
|
||||||
.then(({ snapshot }) => new Snapshot(this, snapshot))
|
.then(({ snapshot }) => {
|
||||||
.then((snapshot) => {
|
const _snapshot = new Snapshot(this, snapshot);
|
||||||
if (isFunction(successCallback)) successCallback(snapshot);
|
|
||||||
return snapshot;
|
if (isFunction(successCallback)) {
|
||||||
|
if (isObject(cancelOrContext)) successCallback.bind(cancelOrContext)(_snapshot);
|
||||||
|
if (context && isObject(context)) successCallback.bind(context)(_snapshot);
|
||||||
|
successCallback(_snapshot);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _snapshot;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (isFunction(failureCallback)) return failureCallback(error);
|
if (isFunction(cancelOrContext)) return cancelOrContext(error);
|
||||||
return error;
|
return error;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue