chore: init bj_power monorepo (dashboard/mes/wms/wms_client/workstation), clear subproject git metadata and align naming to folder names
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
import React, {useEffect, useMemo} from 'react'
|
||||
import '@douyinfe/semi-ui/react19-adapter'
|
||||
import {LocaleProvider, Notification, Toast} from '@douyinfe/semi-ui'
|
||||
import {HashRouter} from 'react-router-dom'
|
||||
import {IntlProvider} from 'react-intl'
|
||||
import {localeConfig} from '@/locales'
|
||||
import zhCN from '@douyinfe/semi-ui/lib/es/locale/source/zh_CN'
|
||||
import enUS from '@douyinfe/semi-ui/lib/es/locale/source/en_US'
|
||||
import {Locale} from '@douyinfe/semi-ui/lib/es/locale/interface'
|
||||
import useGlobalStore from '@/stores'
|
||||
import useLocalStore from '@/stores/local'
|
||||
import RenderRouter from '@/router'
|
||||
import {NoticeReactProps} from '@douyinfe/semi-ui/lib/es/notification'
|
||||
import {ToastReactProps} from '@douyinfe/semi-ui/lib/es/toast'
|
||||
import sse from '@/sse'
|
||||
|
||||
const App = () => {
|
||||
const { isDark, locale } = useLocalStore(state => state)
|
||||
const { setConnected } = useGlobalStore(state => state)
|
||||
|
||||
const onNotify = (e: MessageEvent) => {
|
||||
const opts = {
|
||||
...JSON.parse(e.data)
|
||||
} as NoticeReactProps
|
||||
if (opts.duration === -1) {
|
||||
opts.duration = 0
|
||||
}
|
||||
Notification.addNotice(opts)
|
||||
}
|
||||
const onToast = (e: MessageEvent) => {
|
||||
const opts = {
|
||||
...JSON.parse(e.data)
|
||||
} as ToastReactProps
|
||||
Toast.create(opts)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (sse.readyState === EventSource.OPEN) {
|
||||
setConnected(true)
|
||||
}
|
||||
sse.onopen = () => {
|
||||
console.log('sse connected')
|
||||
setConnected(true)
|
||||
}
|
||||
sse.onmessage = e => {
|
||||
console.log('message: ', e)
|
||||
}
|
||||
sse.onerror = e => {
|
||||
console.log('sse error', e)
|
||||
setConnected(false)
|
||||
// sse.close()
|
||||
}
|
||||
sse.addEventListener('notify', onNotify)
|
||||
sse.addEventListener('toast', onToast)
|
||||
return () => {
|
||||
console.log('sse close')
|
||||
sse.onopen = null
|
||||
sse.onmessage = null
|
||||
sse.onerror = null
|
||||
sse.removeEventListener('notify', onNotify)
|
||||
sse.removeEventListener('toast', onToast)
|
||||
}
|
||||
}, [])
|
||||
|
||||
const getLocale = useMemo(() => {
|
||||
switch (locale) {
|
||||
case 'en-US':
|
||||
return enUS
|
||||
case 'zh-CN':
|
||||
return zhCN
|
||||
default:
|
||||
return {} as Locale
|
||||
}
|
||||
}, [locale])
|
||||
|
||||
useEffect(() => {
|
||||
if (isDark) {
|
||||
document.body.setAttribute('theme-mode', 'dark')
|
||||
} else {
|
||||
document.body.removeAttribute('theme-mode')
|
||||
}
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<LocaleProvider locale={getLocale}>
|
||||
<IntlProvider locale={locale} messages={localeConfig[locale]}>
|
||||
<HashRouter>
|
||||
<RenderRouter />
|
||||
</HashRouter>
|
||||
</IntlProvider>
|
||||
</LocaleProvider>
|
||||
)
|
||||
}
|
||||
export default App
|
||||
Reference in New Issue
Block a user