@@ -20,6 +20,13 @@ Object.defineProperty(fb, 'database', {
2020const NSOnDisconnect = lazy ( ( ) => org . nativescript . firebase . database . FirebaseDatabase . OnDisconnect ) ;
2121const NSDatabaseReference = lazy ( ( ) => org . nativescript . firebase . database . FirebaseDatabase . DatabaseReference ) ;
2222
23+ function serializeItems ( data , wrapPrimitives = false ) {
24+ if ( data instanceof ServerValue ) {
25+ return data . native ;
26+ }
27+ return serialize ( data , wrapPrimitives ) ;
28+ }
29+
2330export class OnDisconnect implements IOnDisconnect {
2431 #native: com . google . firebase . database . OnDisconnect ;
2532 static fromNative ( disconnect : com . google . firebase . database . OnDisconnect ) {
@@ -79,7 +86,7 @@ export class OnDisconnect implements IOnDisconnect {
7986 return new Promise ( ( resolve , reject ) => {
8087 NSOnDisconnect ( ) . set (
8188 this . native ,
82- serialize ( value , true ) ,
89+ serializeItems ( value , true ) ,
8390 new org . nativescript . firebase . database . FirebaseDatabase . Callback < java . lang . Void > ( {
8491 onError ( error ) {
8592 const err = FirebaseError . fromNative ( error ) ;
@@ -98,7 +105,7 @@ export class OnDisconnect implements IOnDisconnect {
98105 return new Promise ( ( resolve , reject ) => {
99106 NSOnDisconnect ( ) . setWithPriority (
100107 this . native ,
101- serialize ( value , true ) ,
108+ serializeItems ( value , true ) ,
102109 priority as any ,
103110 new org . nativescript . firebase . database . FirebaseDatabase . Callback < java . lang . Void > ( {
104111 onError ( error ) {
@@ -443,7 +450,7 @@ export class Reference extends Query implements IReference {
443450 return new Promise ( ( resolve , reject ) => {
444451 NSDatabaseReference ( ) . set (
445452 this . native ,
446- serialize ( value , true ) ,
453+ serializeItems ( value , true ) ,
447454 new org . nativescript . firebase . database . FirebaseDatabase . Callback ( {
448455 onSuccess ( param0 ) {
449456 onComplete ?.( null ) ;
@@ -481,7 +488,7 @@ export class Reference extends Query implements IReference {
481488 return new Promise ( ( resolve , reject ) => {
482489 NSDatabaseReference ( ) . setWithPriority (
483490 this . native ,
484- serialize ( newVal , true ) ,
491+ serializeItems ( newVal , true ) ,
485492 newPriority as any ,
486493 new org . nativescript . firebase . database . FirebaseDatabase . Callback ( {
487494 onSuccess ( param0 ) {
@@ -506,7 +513,7 @@ export class Reference extends Query implements IReference {
506513 doTransaction ( data : any ) : any {
507514 const newData = transactionUpdate ( deserialize ( data ) ) ;
508515 // TODO improve
509- return serialize ( newData , true ) ;
516+ return serializeItems ( newData , true ) ;
510517 } ,
511518 onComplete ( error : com . google . firebase . database . DatabaseError , commited : boolean , snapshot : com . google . firebase . database . DataSnapshot ) : void {
512519 const ss = DataSnapshot . fromNative ( snapshot ) ;
@@ -530,7 +537,7 @@ export class Reference extends Query implements IReference {
530537 return new Promise ( ( resolve , reject ) => {
531538 NSDatabaseReference ( ) . update (
532539 this . native ,
533- serialize ( values , true ) ,
540+ serializeItems ( values , true ) ,
534541 new org . nativescript . firebase . database . FirebaseDatabase . Callback ( {
535542 onSuccess ( param0 ) {
536543 onComplete ?.( null ) ;
@@ -631,21 +638,19 @@ export class Database implements IDatabase {
631638 if ( app ?. native ) {
632639 this . #native = com . google . firebase . database . FirebaseDatabase . getInstance ( app . native ) ;
633640 } else {
634- if ( defaultDatabase ) {
641+ if ( defaultDatabase ) {
635642 return defaultDatabase ;
636643 }
637644 defaultDatabase = this ;
638645 this . #native = com . google . firebase . database . FirebaseDatabase . getInstance ( ) ;
639646 }
640647 }
641648
649+ useEmulator ( host : string , port : number ) {
650+ this . native . useEmulator ( host === 'localhost' ? '10.0.2.2' : host , port ) ;
651+ }
642652
643- useEmulator ( host : string , port : number ) {
644- this . native . useEmulator ( host === 'localhost' ? '10.0.2.2' : host , port ) ;
645- }
646-
647-
648- #persistenceCacheSizeBytes = 10 * 1024 * 1024 ;
653+ #persistenceCacheSizeBytes = 10 * 1024 * 1024 ;
649654 get persistenceCacheSizeBytes ( ) : number {
650655 return this . #persistenceCacheSizeBytes;
651656 }
0 commit comments