piral-core
Version:
The core library for creating a Piral instance.
28 lines • 1.02 kB
JavaScript
import * as React from 'react';
import { startLoadingPilets } from 'piral-base';
import { useGlobalStateContext } from '../hooks';
import { none } from '../utils';
/**
* The Mediator component for interfacing with pilets loading.
*/
export const Mediator = ({ options }) => {
const { initialize, readState, emit } = useGlobalStateContext();
React.useEffect(() => {
const shouldLoad = readState((s) => s.app.loading);
if (shouldLoad) {
const { connect, disconnect } = startLoadingPilets(options);
emit('loading-pilets', { options });
const notifier = (error, pilets, loaded) => {
initialize(!loaded, error, pilets);
if (loaded) {
emit('loaded-pilets', { pilets, error });
}
};
connect(notifier);
return () => disconnect(notifier);
}
}, none);
// tslint:disable-next-line:no-null-keyword
return null;
};
//# sourceMappingURL=Mediator.js.map