navidrome/ui/src/App.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

import React from 'react'
2020-02-07 15:40:52 +01:00
import { Admin, Resource, resolveBrowserLocale } from 'react-admin'
2020-01-20 15:54:29 +01:00
import dataProvider from './dataProvider'
import authProvider from './authProvider'
2020-02-07 15:40:52 +01:00
import polyglotI18nProvider from 'ra-i18n-polyglot'
import messages from './i18n'
import { DarkTheme, Layout, Login } from './layout'
2020-01-20 02:40:18 +01:00
import user from './user'
import song from './song'
import album from './album'
import artist from './artist'
2020-01-24 00:12:26 +01:00
import { createMuiTheme } from '@material-ui/core/styles'
import { Player, playQueueReducer } from './player'
2020-01-24 00:12:26 +01:00
2020-01-24 04:51:52 +01:00
const theme = createMuiTheme(DarkTheme)
2020-02-07 15:40:52 +01:00
const i18nProvider = polyglotI18nProvider(
(locale) => (messages[locale] ? messages[locale] : messages.en),
resolveBrowserLocale()
)
const App = () => (
<>
<div>
<Admin
theme={theme}
customReducers={{ queue: playQueueReducer }}
dataProvider={dataProvider}
authProvider={authProvider}
2020-02-07 15:40:52 +01:00
i18nProvider={i18nProvider}
layout={Layout}
loginPage={Login}
>
{(permissions) => [
<Resource
name="artist"
{...artist}
options={{ subMenu: 'library' }}
/>,
<Resource name="album" {...album} options={{ subMenu: 'library' }} />,
<Resource name="song" {...song} options={{ subMenu: 'library' }} />,
permissions === 'admin' ? <Resource name="user" {...user} /> : null,
<Player />
]}
</Admin>
</div>
</>
)
export default App