66 *
77 * See License file for more information.
88 */
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 '.' ;
1214
13- admin . initializeApp ( ) ;
14- const remoteConfig = admin . remoteConfig ( ) ;
15-
16- export const testFunctionRemoteConfigUpdateV2 = functions . https . onCall (
17- (
15+ export const testFunctionRemoteConfigUpdateV2 = onCall (
16+ async (
1817 req : CallableRequest < {
1918 operations : {
2019 delete : string [ ] | undefined ;
@@ -23,61 +22,55 @@ export const testFunctionRemoteConfigUpdateV2 = functions.https.onCall(
2322 } ;
2423 } > ,
2524 ) => {
26- console . log ( Date . now ( ) , req ) ;
25+ let template = await getRemoteConfig ( getAdminApp ( ) ) . getTemplate ( ) ;
26+ logger . info ( 'received template version: ' + JSON . stringify ( template . version ) ) ;
27+ // logger.info('received template: ' + JSON.stringify(template, null, 2));
2728
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));
29+ if ( req . data !== undefined && req . data . operations !== undefined ) {
30+ modifyTemplate ( req . data , template ) ;
31+ }
3432
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- }
33+ // validate the template
34+ template = await getRemoteConfig ( getAdminApp ( ) ) . validateTemplate ( template ) ;
35+ logger . info ( 'template is valid after updates.' ) ;
36+ template = await getRemoteConfig ( getAdminApp ( ) ) . publishTemplate ( template ) ;
37+ logger . info ( 'template published, new version: ' + JSON . stringify ( template . version ) ) ;
4438
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- }
39+ return { templateVersion : template . version ?. versionNumber } ;
40+ } ,
41+ ) ;
5742
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- }
43+ function modifyTemplate ( data : any , template : any ) {
44+ if ( data . operations [ 'delete' ] !== undefined ) {
45+ const deletions = data . operations [ 'delete' ] ;
46+ deletions . forEach ( ( deletion : string ) => {
47+ logger . info ( 'deleting key: ' + deletion ) ;
48+ if ( template . parameters ?. deletion !== undefined ) {
49+ delete template . parameters . deletion ;
50+ }
51+ } ) ;
52+ }
6753
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- } ) ;
54+ if ( data . operations [ 'add' ] !== undefined ) {
55+ const adds = data . operations [ 'add' ] ;
56+ adds . forEach ( ( add : { name : string ; value : any } ) => {
57+ logger . info ( 'adding key: ' + JSON . stringify ( add ) ) ;
58+ template . parameters [ add . name ] = {
59+ description : 'realtime test parameter' ,
60+ defaultValue : {
61+ value : add . value ,
62+ } ,
63+ } ;
8164 } ) ;
82- } ,
83- ) ;
65+ }
66+
67+ if ( data . operations [ 'update' ] !== undefined ) {
68+ const updates = data . operations [ 'update' ] ;
69+ updates . forEach ( ( update : { name : string ; value : any } ) => {
70+ logger . info ( 'updating key: ' + JSON . stringify ( update ) ) ;
71+ if ( template . parameters [ update . name ] !== undefined ) {
72+ template . parameters [ update . name ] . defaultValue = update . value ;
73+ }
74+ } ) ;
75+ }
76+ }
0 commit comments