import React from 'react'; import HomePage from './pages/HomePage/HomePage'; import RandomPage from './pages/RandomPage/RandomPage'; import GlobalInfos from './utils/GlobalInfos'; // include bootstraps css import 'bootstrap/dist/css/bootstrap.min.css'; import style from './App.module.css'; import SettingsPage from './pages/SettingsPage/SettingsPage'; import CategoryPage from './pages/CategoryPage/CategoryPage'; import {APINode, callAPI} from './utils/Api'; import {NoBackendConnectionPopup} from './elements/Popups/NoBackendConnectionPopup/NoBackendConnectionPopup'; import {BrowserRouter as Router, NavLink, Route, Switch} from 'react-router-dom'; import Player from './pages/Player/Player'; import ActorOverviewPage from './pages/ActorOverviewPage/ActorOverviewPage'; import ActorPage from './pages/ActorPage/ActorPage'; import {SettingsTypes} from './types/ApiTypes'; interface state { generalSettingsLoaded: boolean; passwordsupport: boolean; mediacentername: string; onapierror: boolean; } /** * The main App handles the main tabs and which content to show */ class App extends React.Component<{}, state> { constructor(props: {}) { super(props); this.state = { generalSettingsLoaded: false, passwordsupport: false, mediacentername: 'OpenMediaCenter', onapierror: false }; } initialAPICall(): void { // this is the first api call so if it fails we know there is no connection to backend callAPI(APINode.Settings, {action: 'loadInitialData'}, (result: SettingsTypes.initialApiCallData) => { // set theme GlobalInfos.enableDarkTheme(result.DarkMode); this.setState({ generalSettingsLoaded: true, passwordsupport: result.passwordEnabled, mediacentername: result.mediacenter_name, onapierror: false }); // set tab title to received mediacenter name document.title = result.mediacenter_name; }, error => { this.setState({onapierror: true}); }); } componentDidMount(): void { this.initialAPICall(); } render(): JSX.Element { const themeStyle = GlobalInfos.getThemeStyle(); // add the main theme to the page body document.body.className = themeStyle.backgroundcolor; return (
{this.state.mediacentername}
Home Random Video Categories Settings
{this.routing()}
{this.state.onapierror ? this.ApiError() : null}
); } routing(): JSX.Element { return ( ); } ApiError(): JSX.Element { // on api error show popup and retry and show again if failing.. return ( this.initialAPICall()}/>); } } export default App;