Skip to content

Commit 8901617

Browse files
committed
feat(functions): Support region configuration via FunctionsRegionToken
1 parent cfb92e5 commit 8901617

File tree

4 files changed

+969
-8
lines changed

4 files changed

+969
-8
lines changed

src/core/firebase.app.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class FirebaseApp implements app.App {
3131
storage: (storageBucket?: string) => FirebaseStorage;
3232
delete: () => Promise<void>;
3333
firestore: () => FirebaseFirestore;
34-
functions: () => FirebaseFunctions;
34+
functions: (region?: string) => FirebaseFunctions;
3535
}
3636

3737
export function _firebaseAppFactory(options: FirebaseOptions, nameOrConfig?: string | FirebaseAppConfig) {

src/functions/functions.spec.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ReflectiveInjector, Provider } from '@angular/core';
22
import { TestBed, inject } from '@angular/core/testing';
33
import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseNameOrConfigToken } from '@angular/fire';
4-
import { AngularFireFunctions, AngularFireFunctionsModule } from '@angular/fire/functions';
4+
import { AngularFireFunctions, AngularFireFunctionsModule, FunctionsRegionToken } from '@angular/fire/functions';
55
import { COMMON_CONFIG } from './test-config';
66

77
describe('AngularFireFunctions', () => {
@@ -50,7 +50,8 @@ describe('AngularFireFunctions with different app', () => {
5050
],
5151
providers: [
5252
{ provide: FirebaseNameOrConfigToken, useValue: FIREBASE_APP_NAME_TOO },
53-
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG }
53+
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG },
54+
{ provide: FunctionsRegionToken, useValue: 'asia-northeast1' },
5455
]
5556
});
5657
inject([FirebaseApp, AngularFireFunctions], (app_: FirebaseApp, _fns: AngularFireFunctions) => {
@@ -70,6 +71,10 @@ describe('AngularFireFunctions with different app', () => {
7071
expect(afFns instanceof AngularFireFunctions).toEqual(true);
7172
});
7273

74+
it('should have the Firebase Functions instance', () => {
75+
expect(afFns.functions).toBeDefined();
76+
});
77+
7378
});
7479

7580
});

src/functions/functions.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core';
1+
import { Injectable, Inject, Optional, NgZone, PLATFORM_ID, InjectionToken } from '@angular/core';
22
import { Observable, from } from 'rxjs';
33
import { map } from 'rxjs/operators';
4-
54
import { FirebaseOptions, FirebaseAppConfig } from '@angular/fire';
6-
75
import { FirebaseFunctions, FirebaseOptionsToken, FirebaseNameOrConfigToken, _firebaseAppFactory, FirebaseZoneScheduler } from '@angular/fire';
86

7+
export const FunctionsRegionToken = new InjectionToken<string>('angularfire2.functions.region');
8+
99
@Injectable()
1010
export class AngularFireFunctions {
1111

@@ -20,13 +20,14 @@ export class AngularFireFunctions {
2020
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
2121
@Optional() @Inject(FirebaseNameOrConfigToken) nameOrConfig:string|FirebaseAppConfig|undefined,
2222
@Inject(PLATFORM_ID) platformId: Object,
23-
zone: NgZone
23+
zone: NgZone,
24+
@Optional() @Inject(FunctionsRegionToken) region:string|undefined
2425
) {
2526
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
2627

2728
this.functions = zone.runOutsideAngular(() => {
2829
const app = _firebaseAppFactory(options, nameOrConfig);
29-
return app.functions();
30+
return app.functions(region);
3031
});
3132

3233
}

0 commit comments

Comments
 (0)