@@ -6,8 +6,9 @@ import { NativeModules, NativeEventEmitter } from 'react-native';
66import { Base } from './../base' ;
77import Snapshot from './snapshot.js' ;
88import Reference from './reference.js' ;
9- import { promisify , isFunction } from './../../utils' ;
9+ import { promisify } from './../../utils' ;
1010
11+ const FirestackModule = NativeModules . Firestack ;
1112const FirestackDatabase = NativeModules . FirestackDatabase ;
1213const FirestackDatabaseEvt = new NativeEventEmitter ( FirestackDatabase ) ;
1314
@@ -18,6 +19,7 @@ export default class Database extends Base {
1819 constructor ( firestack : Object , options : Object = { } ) {
1920 super ( firestack , options ) ;
2021 this . subscriptions = { } ;
22+ this . serverTimeOffset = FirestackModule . serverTimeOffset || 0 ;
2123 this . persistenceEnabled = false ;
2224 this . namespace = 'firestack:database' ;
2325
@@ -31,9 +33,20 @@ export default class Database extends Base {
3133 err => this . _handleDatabaseError ( err )
3234 ) ;
3335
36+ this . offsetRef = this . ref ( '.info/serverTimeOffset' ) ;
37+ this . offsetRef . on ( 'value' , ( snapshot ) => {
38+ this . serverTimeOffset = snapshot . val ( ) || this . serverTimeOffset ;
39+ } ) ;
40+
3441 this . log . debug ( 'Created new Database instance' , this . options ) ;
3542 }
3643
44+ get ServerValue ( ) {
45+ return {
46+ TIMESTAMP : this . _getServerTime ( ) ,
47+ } ;
48+ }
49+
3750 /**
3851 * Returns a new firestack reference instance
3952 * @param path
@@ -143,7 +156,9 @@ export default class Database extends Base {
143156 /**
144157 * INTERNALS
145158 */
146-
159+ _getServerTime ( ) {
160+ return new Date ( ) . getTime ( ) + this . serverTimeOffset ;
161+ }
147162
148163 /**
149164 *
0 commit comments