angularfire2-offline
Version:
Cache angularfire2 data for offline use.
104 lines (103 loc) • 3.79 kB
TypeScript
import * as firebase from 'firebase/app';
import { ReplaySubject } from 'rxjs';
import { LocalUpdateService } from '../offline-storage/local-update-service';
export declare class AfoObjectObservable<T> extends ReplaySubject<T> {
private ref;
private localUpdateService;
/**
* The Firebase path used for the related FirebaseObjectObservable
*/
path: string;
/**
* An array used to store write operations that require an initial value to be set
* in {@link value} before being applied
*/
que: any[];
/**
* Number of times updated
*/
updated: number;
/**
* The current value of the {@link AfoObjectObservable}
*/
value: any;
/**
* The value preceding the current value.
*/
private previousValue;
/**
* Creates the {@link AfoObjectObservable}
* @param ref a reference to the related FirebaseObjectObservable
* @param localUpdateService the service consumed by {@link OfflineWrite}
*/
constructor(ref: any, localUpdateService: LocalUpdateService);
/**
* Emulates an offline write assuming the remote data has not changed
* @param method AngularFire2 write method to emulate
* @param value new value to write
*/
emulate(method: any, value?: any): void;
/**
* - Gets the path of the reference
* - Subscribes to the observable so that emulation is applied after there is an initial value
*/
init(): void;
/**
* Wraps the AngularFire2 FirebaseObjectObservable [remove](https://goo.gl/xHDx1c) method
*
* - Emulates a remove locally
* - Calls the AngularFire2 remove method
* - Saves the write locally in case the browser is refreshed before the AngularFire2 promise
* completes
*/
remove(): firebase.Promise<void>;
/**
* Wraps the AngularFire2 FirebaseObjectObservable [set](https://goo.gl/78u3XB) method
*
* - Emulates a set locally
* - Calls the AngularFire2 set method
* - Saves the write locally in case the browser is refreshed before the AngularFire2 promise
* completes
* @param value the new value to set for the related Firebase reference
*/
set(value: any): firebase.Promise<void>;
/**
* Wraps the AngularFire2 FirebaseObjectObservable
* [update](https://goo.gl/o2181q) method
*
* - Emulates a update locally
* - Calls the AngularFire2 update method (this will not reflect locally if there is no initial
* value)
* - Saves the write locally in case the browser is refreshed before the AngularFire2 promise
* completes
* @param update the update object required by AngularFire2
*/
update(value: Object): any;
/**
* Only calls next if the new value is unique
*/
uniqueNext(newValue: any): void;
/**
* Convenience method to save an offline write
*
* @param promise
* [the promise](https://goo.gl/ncNG19)
* returned by calling an AngularFire2 method
* @param type the AngularFire2 method being called
* @param args an optional array of arguments used to call an AngularFire2 method taking the form of [newValue, options]
*/
private offlineWrite(promise, type, args);
/**
* Calculates the result of a given emulation without updating subscribers of this Observable
*
* - this allows for the processing of many emulations before notifying subscribers
* @param method the AngularFire2 method being emulated
* @param value the new value to be used by the given method
*/
private processEmulation(method, value);
/**
* Sends the the current {@link value} to all subscribers
*/
private updateSubscribers();
private comparableValue(initialValue);
}