-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
/
Copy pathApp.tsx
68 lines (62 loc) · 2.49 KB
/
App.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import React from 'react'
import CssBaseline from '@mui/material/CssBaseline'
import { ThemeProvider } from '@mui/material/styles'
import { Box, Grid } from '@mui/material'
import SettingDialog from './pages/SettingDialog'
import ChatConfigWindow from './pages/ChatConfigWindow'
import CleanWidnow from './pages/CleanWindow'
import AboutWindow from './pages/AboutWindow'
import useAppTheme from './hooks/useAppTheme'
import CopilotWindow from './pages/CopilotWindow'
import { useI18nEffect } from './hooks/useI18nEffect'
import Toasts from './components/Toasts'
import RemoteDialogWindow from './pages/RemoteDialogWindow'
import { useSystemLanguageWhenInit } from './hooks/useDefaultSystemLanguage'
import MainPane from './MainPane'
import { useAtom, useAtomValue } from 'jotai'
import * as atoms from './stores/atoms'
import Sidebar from './Sidebar'
import * as premiumActions from './stores/premiumActions'
import { useLoadSessions } from './hooks/useLoadSessions'
function Main() {
const spellCheck = useAtomValue(atoms.spellCheckAtom)
const [openSettingWindow, setOpenSettingWindow] = useAtom(atoms.openSettingDialogAtom)
const [openAboutWindow, setOpenAboutWindow] = React.useState(false)
const [openCopilotWindow, setOpenCopilotWindow] = React.useState(false)
return (
<Box className="box-border App" spellCheck={spellCheck}>
<Grid container className="h-full">
<Sidebar
openCopilotWindow={() => setOpenCopilotWindow(true)}
openAboutWindow={() => setOpenAboutWindow(true)}
setOpenSettingWindow={setOpenSettingWindow}
/>
<MainPane />
</Grid>
<SettingDialog
open={!!openSettingWindow}
targetTab={openSettingWindow || undefined}
close={() => setOpenSettingWindow(null)}
/>
<AboutWindow open={openAboutWindow} close={() => setOpenAboutWindow(false)} />
<ChatConfigWindow />
<CleanWidnow />
<CopilotWindow open={openCopilotWindow} close={() => setOpenCopilotWindow(false)} />
<RemoteDialogWindow />
<Toasts />
</Box>
)
}
export default function App() {
useLoadSessions()
useI18nEffect()
premiumActions.useAutoValidate()
useSystemLanguageWhenInit()
const theme = useAppTheme()
return (
<ThemeProvider theme={theme}>
<CssBaseline />
<Main />
</ThemeProvider>
)
}