11import * as firebase from 'firebase/app' ;
22import * as React from 'react' ;
33
4- export * from './sdk' ;
5-
64type FirebaseAppContextValue = firebase . app . App ;
75
86// INVESTIGATE I don't like magic strings, can we have export this in js-sdk?
@@ -18,11 +16,15 @@ type Props = {
1816 appName ?: string ;
1917} ;
2018
19+ // The version number is substituted in as part of the build process
20+ // See after.build.js for the substitution script
21+ const version = '::__reactfireversion__::' ;
22+
2123const shallowEq = ( a : Object , b : Object ) =>
2224 a == b ||
2325 [ ...Object . keys ( a ) , ...Object . keys ( b ) ] . every ( key => a [ key ] == b [ key ] ) ;
2426
25- export function FirebaseAppProvider ( props : Props & { [ key : string ] : unknown } ) {
27+ function FirebaseAppProvider ( props : Props & { [ key : string ] : unknown } ) {
2628 const { firebaseConfig, appName } = props ;
2729 const firebaseApp : firebase . app . App =
2830 props . firebaseApp ||
@@ -38,14 +40,17 @@ export function FirebaseAppProvider(props: Props & { [key: string]: unknown }) {
3840 'default' } firebase app instance, give this new instance a different appName.`;
3941 }
4042 } else {
43+ const reactVersion = React . version || 'unknown' ;
44+ firebase . registerVersion ( 'react' , reactVersion ) ;
45+ firebase . registerVersion ( 'reactfire' , version ) ;
4146 return firebase . initializeApp ( firebaseConfig , appName ) ;
4247 }
4348 } , [ firebaseConfig , appName ] ) ;
4449
4550 return < FirebaseAppContext . Provider value = { firebaseApp } { ...props } /> ;
4651}
4752
48- export function useFirebaseApp ( ) {
53+ function useFirebaseApp ( ) {
4954 const firebaseApp = React . useContext ( FirebaseAppContext ) ;
5055 if ( ! firebaseApp ) {
5156 throw new Error (
@@ -55,3 +60,11 @@ export function useFirebaseApp() {
5560
5661 return firebaseApp ;
5762}
63+
64+
65+ export * from './sdk' ;
66+ export {
67+ FirebaseAppProvider ,
68+ useFirebaseApp ,
69+ version ,
70+ } ;
0 commit comments