UNPKG

reactfire

Version:
103 lines (102 loc) 3.35 kB
import { useFirebaseApp, preloadRequest, usePreloadedRequest } from '..'; var SDK; (function (SDK) { SDK["ANALYTICS"] = "analytics"; SDK["AUTH"] = "auth"; SDK["DATABASE"] = "database"; SDK["FIRESTORE"] = "firestore"; SDK["FUNCTIONS"] = "functions"; SDK["MESSAGING"] = "messaging"; SDK["PERFORMANCE"] = "performance"; SDK["REMOTE_CONFIG"] = "remoteConfig"; SDK["STORAGE"] = "storage"; })(SDK || (SDK = {})); function fetchSDK(sdk, firebaseApp) { if (!firebaseApp) { throw new Error('Firebase app was not provided'); } var sdkPromise; if (firebaseApp[sdk]) { sdkPromise = Promise.resolve(firebaseApp[sdk]); } else { switch (sdk) { case SDK.FIRESTORE: sdkPromise = import('firebase/firestore'); break; case SDK.DATABASE: sdkPromise = import('firebase/database'); break; case SDK.AUTH: sdkPromise = import('firebase/auth'); break; case SDK.STORAGE: sdkPromise = import('firebase/storage'); break; case SDK.PERFORMANCE: sdkPromise = import('firebase/performance'); break; } sdkPromise = sdkPromise.then(function () { return firebaseApp[sdk]; }); } return sdkPromise; } function useSDK(sdk, firebaseApp) { firebaseApp = firebaseApp || useFirebaseApp(); var result = preloadRequest(function () { return fetchSDK(sdk, firebaseApp); }, "firebase-sdk-" + sdk); return usePreloadedRequest(result); } export function preloadAuth(firebaseApp) { return fetchSDK(SDK.AUTH, firebaseApp); } export function useAuth(firebaseApp) { return useSDK(SDK.AUTH, firebaseApp); } export function preloadAnalytics(firebaseApp) { return fetchSDK(SDK.ANALYTICS, firebaseApp); } export function useAnalytics(firebaseApp) { return useSDK(SDK.ANALYTICS, firebaseApp); } export function preloadDatabase(firebaseApp) { return fetchSDK(SDK.DATABASE, firebaseApp); } export function useDatabase(firebaseApp) { return useSDK(SDK.DATABASE, firebaseApp); } export function preloadFirestore(firebaseApp) { return fetchSDK(SDK.FIRESTORE, firebaseApp); } export function useFirestore(firebaseApp) { return useSDK(SDK.FIRESTORE, firebaseApp); } export function preloadFunctions(firebaseApp) { return fetchSDK(SDK.FUNCTIONS, firebaseApp); } export function useFunctions(firebaseApp) { return useSDK(SDK.FUNCTIONS, firebaseApp); } export function preloadMessaging(firebaseApp) { return fetchSDK(SDK.MESSAGING, firebaseApp); } export function useMessaging(firebaseApp) { return useSDK(SDK.MESSAGING, firebaseApp); } export function preloadPerformance(firebaseApp) { return fetchSDK(SDK.PERFORMANCE, firebaseApp); } export function usePerformance(firebaseApp) { return useSDK(SDK.PERFORMANCE, firebaseApp); } export function preloadRemoteConfig(firebaseApp) { return fetchSDK(SDK.REMOTE_CONFIG, firebaseApp); } export function useRemoteConfig(firebaseApp) { return useSDK(SDK.REMOTE_CONFIG, firebaseApp); } export function preloadStorage(firebaseApp) { return fetchSDK(SDK.STORAGE, firebaseApp); } export function useStorage(firebaseApp) { return useSDK(SDK.STORAGE, firebaseApp); }