import React from 'react'; import { Router, Route } from 'react-router-dom'; import { history } from '@/_helpers'; import { authenticationService, tooljetService } from '@/_services'; import { PrivateRoute } from '@/_components'; import { HomePage } from '@/HomePage'; import { LoginPage } from '@/LoginPage'; import { SignupPage } from '@/SignupPage'; import { InvitationPage } from '@/InvitationPage'; import { Authorize } from '@/Oauth2'; import { Editor, Viewer } from '@/Editor'; import '@/_styles/theme.scss'; import 'emoji-mart/css/emoji-mart.css'; import { ToastContainer } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; import { ManageGroupPermissions } from '@/ManageGroupPermissions'; import { ManageOrgUsers } from '@/ManageOrgUsers'; import { ManageGroupPermissionResources } from '@/ManageGroupPermissionResources'; import { SettingsPage } from '../SettingsPage/SettingsPage'; import { OnboardingModal } from '@/Onboarding/OnboardingModal'; import { ForgotPassword } from '@/ForgotPassword'; import { ResetPassword } from '@/ResetPassword'; import { lt } from 'semver'; import { Toaster } from 'react-hot-toast'; class App extends React.Component { constructor(props) { super(props); this.state = { currentUser: null, fetchedMetadata: false, onboarded: true, darkMode: localStorage.getItem('darkMode') === 'true', }; } componentDidMount() { authenticationService.currentUser.subscribe((x) => { this.setState({ currentUser: x }); }); } logout = () => { authenticationService.logout(); history.push('/login'); }; switchDarkMode = (newMode) => { this.setState({ darkMode: newMode }); localStorage.setItem('darkMode', newMode); }; render() { const { currentUser, fetchedMetadata, updateAvailable, onboarded, darkMode } = this.state; if (currentUser && fetchedMetadata === false) { tooljetService.fetchMetaData().then((data) => { this.setState({ fetchedMetadata: true, onboarded: data.onboarded }); if (lt(data.installed_version, data.latest_version) && data.version_ignored === false) { this.setState({ updateAvailable: true }); } }); } return ( <>
{updateAvailable && (

Update available

A new version of ToolJet has been released.

Read release notes & update { tooljetService.skipVersion(); this.setState({ updateAvailable: false }); }} className="btn" > Skip this version
)} {!onboarded && }
); } } export { App };