6
6
*
7
7
* See License file for more information.
8
8
*/
9
- import * as admin from 'firebase-admin' ;
10
- import * as functions from 'firebase-functions/v2' ;
11
- import { CallableRequest } from 'firebase-functions/v2/https' ;
9
+ // import * as admin from 'firebase-admin';
10
+ import { getRemoteConfig } from 'firebase-admin/remote-config' ;
11
+ import { logger } from 'firebase-functions/v2' ;
12
+ import { CallableRequest , onCall } from 'firebase-functions/v2/https' ;
13
+ import { getAdminApp } from '.' ;
12
14
13
- admin . initializeApp ( ) ;
14
- const remoteConfig = admin . remoteConfig ( ) ;
15
-
16
- export const testFunctionRemoteConfigUpdateV2 = functions . https . onCall (
17
- (
15
+ export const testFunctionRemoteConfigUpdateV2 = onCall (
16
+ {
17
+ maxInstances : 1 ,
18
+ concurrency : 1 ,
19
+ } ,
20
+ async (
18
21
req : CallableRequest < {
19
22
operations : {
20
23
delete : string [ ] | undefined ;
@@ -23,61 +26,55 @@ export const testFunctionRemoteConfigUpdateV2 = functions.https.onCall(
23
26
} ;
24
27
} > ,
25
28
) => {
26
- console . log ( Date . now ( ) , req ) ;
29
+ let template = await getRemoteConfig ( getAdminApp ( ) ) . getTemplate ( ) ;
30
+ logger . info ( 'received template version: ' + JSON . stringify ( template . version ) ) ;
31
+ // logger.info('received template: ' + JSON.stringify(template, null, 2));
32
+
33
+ if ( req . data !== undefined && req . data . operations !== undefined ) {
34
+ modifyTemplate ( req . data , template ) ;
35
+ }
27
36
28
- return new Promise ( function ( resolve , reject ) {
29
- remoteConfig
30
- . getTemplate ( )
31
- . then ( ( template : any ) => {
32
- console . log ( 'received template version: ' + JSON . stringify ( template . version ) ) ;
33
- // console.log('received template: ' + JSON.stringify(template, null, 2));
37
+ // validate the template
38
+ template = await getRemoteConfig ( getAdminApp ( ) ) . validateTemplate ( template ) ;
39
+ logger . info ( 'template is valid after updates.' ) ;
40
+ template = await getRemoteConfig ( getAdminApp ( ) ) . publishTemplate ( template ) ;
41
+ logger . info ( 'template published, new version: ' + JSON . stringify ( template . version ) ) ;
34
42
35
- if ( req . data ?. operations [ 'delete' ] !== undefined ) {
36
- const deletions = req . data ?. operations [ 'delete' ] ;
37
- deletions . forEach ( ( deletion : string ) => {
38
- console . log ( 'deleting key: ' + deletion ) ;
39
- if ( template . parameters ?. deletion !== undefined ) {
40
- delete template . parameters . deletion ;
41
- }
42
- } ) ;
43
- }
43
+ return { templateVersion : template . version ?. versionNumber } ;
44
+ } ,
45
+ ) ;
44
46
45
- if ( req . data ?. operations [ 'add' ] !== undefined ) {
46
- const adds = req . data ?. operations [ 'add' ] ;
47
- adds . forEach ( ( add : { name : string ; value : any } ) => {
48
- console . log ( 'adding key: ' + JSON . stringify ( add ) ) ;
49
- template . parameters [ add . name ] = {
50
- description : 'realtime test parameter' ,
51
- defaultValue : {
52
- value : add . value ,
53
- } ,
54
- } ;
55
- } ) ;
56
- }
47
+ function modifyTemplate ( data : any , template : any ) {
48
+ if ( data . operations [ 'delete' ] !== undefined ) {
49
+ const deletions = data . operations [ 'delete' ] ;
50
+ deletions . forEach ( ( deletion : string ) => {
51
+ logger . info ( 'deleting key: ' + deletion ) ;
52
+ if ( template . parameters [ deletion ] !== undefined ) {
53
+ delete template . parameters [ deletion ] ;
54
+ }
55
+ } ) ;
56
+ }
57
57
58
- if ( req . data ?. operations [ 'update' ] !== undefined ) {
59
- const updates = req . data ?. operations [ 'update' ] ;
60
- updates . forEach ( ( update : { name : string ; value : any } ) => {
61
- console . log ( 'updating key: ' + JSON . stringify ( update ) ) ;
62
- if ( template . parameters [ update . name ] !== undefined ) {
63
- template . parameters [ update . name ] . defaultValue = update . value ;
64
- }
65
- } ) ;
66
- }
58
+ if ( data . operations [ 'add' ] !== undefined ) {
59
+ const adds = data . operations [ 'add' ] ;
60
+ adds . forEach ( ( add : { name : string ; value : any } ) => {
61
+ logger . info ( 'adding key: ' + JSON . stringify ( add ) ) ;
62
+ template . parameters [ add . name ] = {
63
+ description : 'realtime test parameter' ,
64
+ defaultValue : {
65
+ value : add . value ,
66
+ } ,
67
+ } ;
68
+ } ) ;
69
+ }
67
70
68
- // validate the template
69
- remoteConfig . validateTemplate ( template ) . then ( template => {
70
- console . log ( 'template is valid after updates.' ) ;
71
- remoteConfig . publishTemplate ( template ) . then ( template => {
72
- console . log ( 'template published, new version: ' + JSON . stringify ( template . version ) ) ;
73
- resolve ( { templateVersion : template . version ?. versionNumber } ) ;
74
- } ) ;
75
- } ) ;
76
- } )
77
- . catch ( ( err : string ) => {
78
- console . error ( 'remoteConfig.getTemplate failure: ' + err ) ;
79
- reject ( { status : 'failure' , message : err } ) ;
80
- } ) ;
71
+ if ( data . operations [ 'update' ] !== undefined ) {
72
+ const updates = data . operations [ 'update' ] ;
73
+ updates . forEach ( ( update : { name : string ; value : any } ) => {
74
+ logger . info ( 'updating key: ' + JSON . stringify ( update ) ) ;
75
+ if ( template . parameters [ update . name ] !== undefined ) {
76
+ template . parameters [ update . name ] . defaultValue = update . value ;
77
+ }
81
78
} ) ;
82
- } ,
83
- ) ;
79
+ }
80
+ }
0 commit comments