@@ -17,6 +17,7 @@ export interface FirebaseEnvData {
17
17
interface FirebaseEnvMetadata {
18
18
version : string ;
19
19
reserved ?: FirebaseEnvData ;
20
+ latest ?: FirebaseEnvData ;
20
21
}
21
22
22
23
export class AbstractEnv implements FirebaseEnv {
@@ -57,6 +58,7 @@ export class RuntimeConfigEnv extends AbstractEnv {
57
58
projectId : string ;
58
59
version : string ;
59
60
private _custom : FirebaseEnvData ;
61
+ private _customFromMeta : FirebaseEnvData ;
60
62
private _reserved : FirebaseEnvData ;
61
63
private _merged : FirebaseEnvData ;
62
64
private _watching : boolean ;
@@ -97,7 +99,7 @@ export class RuntimeConfigEnv extends AbstractEnv {
97
99
this . _meta = JSON . parse ( response . text ) ;
98
100
this . lastUpdated = response . updateTime ;
99
101
100
- console . log ( `Firebase: detected new environment version ${ this . version } , fetching ...` ) ;
102
+ console . log ( `Firebase: detected environment version ${ this . version } , activating ...` ) ;
101
103
this . fetch ( ) ;
102
104
} else if ( response . state === 'DELETED' ) {
103
105
this . _custom = { } ;
@@ -119,8 +121,10 @@ export class RuntimeConfigEnv extends AbstractEnv {
119
121
}
120
122
121
123
private fetch ( ) : PromiseLike < FirebaseEnv > {
122
- return this . fetchVar ( this . version ) . then ( ( data : FirebaseEnvData ) => {
123
- console . log ( 'Firebase: updated environment configuration, now using' , this . version ) ;
124
+ let fetched = Promise . resolve ( this . _customFromMeta || this . fetchVar ( this . version ) ) ;
125
+
126
+ return fetched . then ( ( data : FirebaseEnvData ) => {
127
+ console . log ( 'Firebase: activated environment configuration' , this . version ) ;
124
128
this . _merged = null ;
125
129
this . _custom = data || { } ;
126
130
this . _notifyReady ( ) ;
@@ -158,6 +162,10 @@ export class RuntimeConfigEnv extends AbstractEnv {
158
162
this . version = meta . version || 'v0' ;
159
163
this . _reserved = meta . reserved || { } ;
160
164
this . _merged = null ;
165
+
166
+ if ( meta . latest ) {
167
+ this . _customFromMeta = meta . latest ;
168
+ }
161
169
}
162
170
163
171
get data ( ) : FirebaseEnvData {
0 commit comments