reactfire
Version:
Firebase library for React
29 lines (28 loc) • 1.19 kB
JavaScript
import * as React from 'react';
import { useFirebaseApp } from '..';
function getPerfFromContext() {
var firebaseApp = useFirebaseApp();
if (!firebaseApp) {
throw new Error('Firebase not found in context. Either pass it directly to a reactfire hook, or wrap your component in a FirebaseAppProvider');
}
var perfFunc = firebaseApp.performance;
if (!perfFunc || !perfFunc()) {
throw new Error("No perf object off of Firebase. Did you forget to import 'firebase/performance' in a component?");
}
return perfFunc();
}
export function SuspenseWithPerf(_a) {
var children = _a.children, traceId = _a.traceId, fallback = _a.fallback, firePerf = _a.firePerf;
firePerf = firePerf || getPerfFromContext();
var Fallback = function () {
React.useLayoutEffect(function () {
var trace = firePerf.trace(traceId);
trace.start();
return function () {
trace.stop();
};
}, [traceId]);
return React.createElement(React.Fragment, null, fallback);
};
return React.createElement(React.Suspense, { fallback: React.createElement(Fallback, null) }, children);
}