Modifies push() to return ThenableReference

This commit is contained in:
Olli Varis 2018-03-09 09:37:15 +02:00
parent 44e005b58d
commit 47438a459c
1 changed files with 12 additions and 3 deletions

View File

@ -299,15 +299,15 @@ export default class Reference extends ReferenceBase {
* @param onComplete
* @returns {*}
*/
push(value: any, onComplete?: Function): Reference | Promise<void> {
push(value: any, onComplete?: Function): ThenableReference<void> {
if (value === null || value === undefined) {
return new Reference(
return new ThenableReference(
this._database,
`${this.path}/${generatePushID(this._database._serverTimeOffset)}`
);
}
const newRef = new Reference(
const newRef = new ThenableReference(
this._database,
`${this.path}/${generatePushID(this._database._serverTimeOffset)}`
);
@ -890,3 +890,12 @@ export default class Reference extends ReferenceBase {
return SyncTree.removeListenersForRegistrations(registrations);
}
}
// eslint-disable-next-line no-unused-vars
declare class ThenableReference<+R> extends Reference {
then<U>(
onFulfill?: (value: R) => Promise<U> | U,
onReject?: (error: any) => Promise<U> | U
): Promise<U>;
catch<U>(onReject?: (error: any) => Promise<U> | U): Promise<R | U>;
}