import { faExclamationTriangle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import React, { FunctionComponent, useCallback, useEffect, useState, } from "react"; import { Alert, Button, Container, Row } from "react-bootstrap"; import { Redirect } from "react-router-dom"; import { bootstrap as ReduxBootstrap } from "../@redux/actions"; import { useReduxAction, useReduxStore } from "../@redux/hooks/base"; import { useNotification } from "../@redux/hooks/site"; import { LoadingIndicator, ModalProvider } from "../components"; import Sidebar from "../Sidebar"; import { Reload, useHasUpdateInject } from "../utilites"; import Header from "./Header"; import NotificationContainer from "./notifications"; import Router from "./Router"; // Sidebar Toggle export const SidebarToggleContext = React.createContext<() => void>(() => {}); interface Props {} const App: FunctionComponent = () => { const bootstrap = useReduxAction(ReduxBootstrap); const { initialized, auth } = useReduxStore((s) => s.site); const notify = useNotification("has-update", 10); // Has any update? const hasUpdate = useHasUpdateInject(); useEffect(() => { if (initialized) { if (hasUpdate) { notify({ type: "info", message: "A new version of Bazarr is ready, restart is required", // TODO: Restart action }); } } }, [initialized, hasUpdate, notify]); useEffect(() => { bootstrap(); }, [bootstrap]); const [sidebar, setSidebar] = useState(false); const toggleSidebar = useCallback(() => setSidebar(!sidebar), [sidebar]); if (!auth) { return ; } if (typeof initialized === "boolean" && initialized === false) { return ( Please wait ); } else if (typeof initialized === "string") { return {initialized}; } return (
); }; const InitializationErrorView: FunctionComponent<{ children: string; }> = ({ children }) => { return (
{children}
); }; export default App;