| 28 | type FirebaseSdks = Analytics | AppCheck | Auth | Database | Firestore | FirebasePerformance | FirebaseStorage | Functions | RemoteConfig; |
| 29 | |
| 30 | function getSdkProvider<Sdk extends FirebaseSdks>(SdkContext: React.Context<Sdk | undefined>) { |
| 31 | return function SdkProvider(props: React.PropsWithChildren<{ sdk: Sdk }>) { |
| 32 | if (!props.sdk) throw new Error('no sdk provided'); |
| 33 | |
| 34 | const contextualAppName = useFirebaseApp().name; |
| 35 | const sdkAppName = props?.sdk?.app?.name; |
| 36 | if (sdkAppName !== contextualAppName) throw new Error('sdk was initialized with a different firebase app'); |
| 37 | |
| 38 | return <SdkContext.Provider value={props.sdk} {...props} />; |
| 39 | }; |
| 40 | } |
| 41 | |
| 42 | function useSdk<Sdk extends FirebaseSdks>(SdkContext: React.Context<Sdk | undefined>): Sdk { |
| 43 | const sdk = React.useContext(SdkContext); |