refactor: Move fullscreen notification logic to a separate hook

This commit is contained in:
kangfenmao 2025-02-25 13:32:15 +08:00
parent 26dd931f70
commit 06b2ca9149
3 changed files with 28 additions and 20 deletions

View File

@ -1,8 +1,6 @@
import '@renderer/databases'
import store, { persistor } from '@renderer/store'
import { useEffect } from 'react'
import { useTranslation } from 'react-i18next'
import { Provider } from 'react-redux'
import { HashRouter, Route, Routes } from 'react-router-dom'
import { PersistGate } from 'redux-persist/integration/react'
@ -23,24 +21,6 @@ import SettingsPage from './pages/settings/SettingsPage'
import TranslatePage from './pages/translate/TranslatePage'
function App(): JSX.Element {
const { t } = useTranslation()
useEffect(() => {
const cleanup = window.electron.ipcRenderer.on('fullscreen-status-changed', (_, isFullscreen) => {
if (isFullscreen) {
window.message.info({
content: t('common.fullscreen'),
duration: 3,
key: 'fullscreen-notification'
})
}
})
return () => {
cleanup()
}
}, [t])
return (
<Provider store={store}>
<ThemeProvider>

View File

@ -9,6 +9,7 @@ import { useLiveQuery } from 'dexie-react-hooks'
import { useEffect } from 'react'
import { useDefaultModel } from './useAssistant'
import useFullScreenNotice from './useFullScreenNotice'
import { useRuntime } from './useRuntime'
import { useSettings } from './useSettings'
import useUpdateHandler from './useUpdateHandler'
@ -22,6 +23,8 @@ export function useAppInit() {
useUpdateHandler()
useFullScreenNotice()
useEffect(() => {
avatar?.value && dispatch(setAvatar(avatar.value))
}, [avatar, dispatch])

View File

@ -0,0 +1,25 @@
import { isWindows } from '@renderer/config/constant'
import { useEffect } from 'react'
import { useTranslation } from 'react-i18next'
export function useFullScreenNotice() {
const { t } = useTranslation()
useEffect(() => {
const cleanup = window.electron.ipcRenderer.on('fullscreen-status-changed', (_, isFullscreen) => {
if (isWindows && isFullscreen) {
window.message.info({
content: t('common.fullscreen'),
duration: 3,
key: 'fullscreen-notification'
})
}
})
return () => {
cleanup()
}
}, [t])
}
export default useFullScreenNotice