1import * as React from 'react';
2
3import { getInitialData } from '../functions/getInitialData';
4import { Splash } from './Splash';
5
6type LoadInitialDataProps = {
7  children: React.ReactElement<any>;
8  loader?: React.ReactElement<any>;
9};
10
11export function LoadInitialData({ children, loader = <Splash /> }: LoadInitialDataProps) {
12  const [isLoading, setIsLoading] = React.useState(true);
13  const [initialData, setInitialData] = React.useState({});
14
15  React.useEffect(() => {
16    getInitialData().then((data) => {
17      setInitialData(data);
18      setIsLoading(false);
19    });
20  }, []);
21
22  if (isLoading) {
23    return loader;
24  }
25
26  return React.cloneElement(children, initialData);
27}
28