|
| 1 | +import { NgModule } from '@angular/core' |
| 2 | +import { |
| 3 | + FirebaseNameOrConfigToken, |
| 4 | + FirebaseOptionsToken, |
| 5 | + AngularFireModule |
| 6 | +} from 'angularfire2' |
| 7 | +import { EnvironmentService } from '../environment' |
| 8 | +import { FIREBASE_USER_AUTH_TOKEN } from './common/server' |
| 9 | + |
| 10 | +export interface IFirebaseEnvConfig { |
| 11 | + readonly [key: string]: string | undefined |
| 12 | + readonly FIREBASE_API_KEY: string |
| 13 | + readonly FIREBASE_AUTH_DOMAIN: string |
| 14 | + readonly FIREBASE_DATABASE_URL: string |
| 15 | + readonly FIREBASE_PROJECT_ID: string |
| 16 | + readonly FIREBASE_STORAGE_BUCKET: string |
| 17 | + readonly FIREBASE_MESSAGING_SENDER_ID: string |
| 18 | +} |
| 19 | + |
| 20 | +export function firebaseEnvironmentFactory( |
| 21 | + es: EnvironmentService<IFirebaseEnvConfig> |
| 22 | +) { |
| 23 | + return { |
| 24 | + apiKey: es.config.FIREBASE_API_KEY, |
| 25 | + authDomain: es.config.FIREBASE_AUTH_DOMAIN, |
| 26 | + databaseURL: es.config.FIREBASE_DATABASE_URL, |
| 27 | + projectId: es.config.FIREBASE_PROJECT_ID, |
| 28 | + storageBucket: es.config.FIREBASE_STORAGE_BUCKET, |
| 29 | + messagingSenderId: es.config.FIREBASE_MESSAGING_SENDER_ID |
| 30 | + } |
| 31 | +} |
| 32 | + |
| 33 | +// tslint:disable-next-line:no-class |
| 34 | +@NgModule({ |
| 35 | + imports: [AngularFireModule], |
| 36 | + providers: [ |
| 37 | + { provide: FIREBASE_USER_AUTH_TOKEN, useValue: undefined }, |
| 38 | + { |
| 39 | + provide: FirebaseNameOrConfigToken, |
| 40 | + useValue: 'universal-webapp' |
| 41 | + }, |
| 42 | + { |
| 43 | + provide: FirebaseOptionsToken, |
| 44 | + useFactory: firebaseEnvironmentFactory, |
| 45 | + deps: [EnvironmentService] |
| 46 | + } |
| 47 | + ] |
| 48 | +}) |
| 49 | +export class FirebaseUniversalAppModule {} |
0 commit comments