import React, { useState } from 'react' import { Admin, resolveBrowserLocale, Resource } from 'react-admin' import dataProvider from './dataProvider' import authProvider from './authProvider' import polyglotI18nProvider from 'ra-i18n-polyglot' import messages from './i18n' import { DarkTheme, Layout, Login } from './layout' import user from './user' import song from './song' import album from './album' import artist from './artist' import { createMuiTheme } from '@material-ui/core/styles' import { Player, playQueueReducer } from './player' const theme = createMuiTheme(DarkTheme) const i18nProvider = polyglotI18nProvider( (locale) => (messages[locale] ? messages[locale] : messages.en), resolveBrowserLocale() ) const App = () => ( {(permissions) => [ , , , permissions === 'admin' ? : null, ]} ) // TODO: This is a complicated way to force a first check for initial setup. A better way would be to send this info // set in the `window` object in the index.html const AppWrapper = () => { const [checked, setChecked] = useState(false) if (!checked) { dataProvider .getOne('keepalive', { id: new Date().getTime() }) .then(() => setChecked(true)) .catch((err) => { authProvider .checkError(err) .then(() => { setChecked(true) }) .catch(() => { setChecked(true) }) }) return null } return } export default AppWrapper