import React from 'react'; import Background from './components/widgets/Background'; import Clock from './components/widgets/Clock'; import Greeting from './components/widgets/Greeting'; import Quote from './components/widgets/Quote'; import Search from './components/widgets/Search'; import Maximise from './components/widgets/Maximise'; import Favourite from './components/widgets/Favourite'; import Navbar from './components/Navbar'; import SettingsFunctions from './modules/settingsFunctions'; import { ToastContainer } from 'react-toastify'; import Modal from 'react-modal'; import Merge from 'lodash.merge'; import RoomIcon from '@material-ui/icons/Room'; // Modals are lazy loaded as a user won't use them every time they open a tab const Settings = React.lazy(() => import('./components/modals/Settings')); const Update = React.lazy(() => import('./components/modals/Update')); const Marketplace = React.lazy(() => import('./components/modals/Marketplace')); const Addons = React.lazy(() => import('./components/modals/Addons')); const Welcome = React.lazy(() => import('./components/modals/Welcome')); const renderLoader = () =>
; export default class App extends React.PureComponent { constructor(props) { super(props); this.state = { settingsModal: false, updateModal: false, marketplaceModal: false, addonsModal: false, quickAccessmodal: false, welcomeModal: false }; } // Render all the components render() { if (!localStorage.getItem('firstRun')) SettingsFunctions.setDefaultSettings(); let modalClassList = 'Modal'; if (localStorage.getItem('darkTheme') === 'true') modalClassList = 'Modal dark'; let overlayClassList = 'Overlay'; if (localStorage.getItem('animations') === 'true') overlayClassList = 'Overlay modal-animation'; let language = require(`./translations/${localStorage.getItem('language')}.json`); const en = require('./translations/en.json'); language = Merge(en, language); const theme = localStorage.getItem('theme'); if (theme) { const style = document.createElement('link'); style.href = theme; style.rel = 'stylesheet'; document.head.appendChild(style); } return ({language.credit}
this.setState({ settingsModal: false })} isOpen={this.state.settingsModal} className={modalClassList} overlayClassName={overlayClassList} ariaHideApp={false}> this.setState({ settingsModal: false })} setDefaultSettings={() => SettingsFunctions.setDefaultSettings()} openMarketplace={() => this.setState({ marketplaceModal: true, settingsModal: false })} openAddons={() => this.setState({ settingsModal: false, addonsModal: true })} toastLanguage={language.toasts} /> this.setState({ updateModal: false })} isOpen={this.state.updateModal} className={modalClassList} overlayClassName={overlayClassList} ariaHideApp={false}> this.setState({ updateModal: false })} /> this.setState({ marketplaceModal: false })} isOpen={this.state.marketplaceModal} className={modalClassList} overlayClassName='Overlay' ariaHideApp={false}> this.setState({ marketplaceModal: false })} openSettings={() => this.setState({ marketplaceModal: false, settingsModal: true })} openAddons={() => this.setState({ marketplaceModal: false, addonsModal: true })} toastLanguage={language.toasts} /> this.setState({ addonsModal: false })} isOpen={this.state.addonsModal} className={modalClassList} overlayClassName='Overlay' ariaHideApp={false}> this.setState({ addonsModal: false })} openSettings={() => this.setState({ addonsModal: false, settingsModal: true })} openMarketplace={() => this.setState({ addonsModal: false, marketplaceModal: true })} toastLanguage={language.toasts} /> this.setState({ welcomeModal: false })} isOpen={this.state.welcomeModal} className={modalClassList} overlayClassName='Overlay' ariaHideApp={false}> this.setState({ welcomeModal: false })} />