import React, {Fragment, useEffect, useState} from "react"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import "./application-loader.scss"; import {Alert} from "react-bootstrap"; interface ApplicationLoaderProps { initTasks: Promise[] } export const ApplicationLoader: React.FC = ({children, initTasks}) => { const [failed, setFailed] = useState(false); const [doneTasks, setDoneTasks] = useState(0); useEffect(() => { setDoneTasks(0); initTasks.map(task => task.then(() => setDoneTasks(prevDoneTasks => { return prevDoneTasks + 1; })) .catch((reason) => { setFailed(true); console.error(reason); }) ) }, [initTasks]); return ({ doneTasks < initTasks.length || initTasks.length === 0 ? (
{ failed ? An error occured while loading the application! : null }
) : children }
); }