reactfire
Version:
Firebase library for React
103 lines (102 loc) • 3.35 kB
JavaScript
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);
}