mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 19:30:17 +08:00
* WIP * feat: integrate notification system using Electron's Notification API - Replaced the previous notification implementation with Electron's Notification API for better integration. - Updated notification types and structures to support new features. - Added translations for notification messages in multiple languages. - Cleaned up unused dependencies related to notifications. * refactor: remove unused node-notifier dependency from Electron config * clean: remove node-notifier from asarUnpack in Electron config * fix: update notification type in preload script to align with new structure * feat: Integrate NotificationService for user notifications across various components - Implemented NotificationService in useUpdateHandler to notify users of available updates. - Enhanced KnowledgeQueue to send success and error notifications during item processing. - Updated BackupService to notify users upon successful restoration and backup completion. - Added error notifications in message handling to improve user feedback on assistant responses. This update improves user experience by providing timely notifications for important actions and events. * feat: Refactor notification handling and integrate new notification settings - Moved SYSTEM_MODELS to a new file for better organization. - Enhanced notification handling across various components, including BackupService and KnowledgeQueue, to include a source attribute for better context. - Introduced notification settings in the GeneralSettings component, allowing users to toggle notifications for assistant messages, backups, and knowledge embedding. - Updated the Redux store to manage notification settings and added migration logic for the new settings structure. - Improved user feedback by ensuring notifications are sent based on user preferences. This update enhances the user experience by providing customizable notification options and clearer context for notifications. * feat: Add 'update' source to NotificationSource type for enhanced notification context * feat: Integrate electron-notification-state for improved notification handling - Added electron-notification-state package to manage Do Not Disturb settings. - Updated NotificationService to respect user DND preferences when sending notifications. - Adjusted notification settings in various components (BackupService, KnowledgeQueue, useUpdateHandler) to ensure notifications are sent based on user preferences. - Enhanced user feedback by allowing notifications to be silenced based on DND status. * feat: Add notification icon to Electron notifications * fix: import SYSTEM_MODELS in EditModelsPopup for improved model handling * feat(i18n): add knowledge base notifications in multiple languages - Added success and error messages for knowledge base operations in English, Japanese, Russian, Chinese (Simplified and Traditional). - Updated the KnowledgeQueue to utilize the new notification messages for better user feedback. * feat(notification): introduce NotificationProvider and integrate into App component - Added NotificationProvider to manage notifications within the application. - Updated App component to include NotificationProvider, enhancing user feedback through notifications. - Refactored NotificationQueue to support multiple listeners for notification handling.
61 lines
2.5 KiB
TypeScript
61 lines
2.5 KiB
TypeScript
import '@renderer/databases'
|
|
|
|
import store, { persistor } from '@renderer/store'
|
|
import { Provider } from 'react-redux'
|
|
import { HashRouter, Route, Routes } from 'react-router-dom'
|
|
import { PersistGate } from 'redux-persist/integration/react'
|
|
|
|
import Sidebar from './components/app/Sidebar'
|
|
import TopViewContainer from './components/TopView'
|
|
import AntdProvider from './context/AntdProvider'
|
|
import { CodeStyleProvider } from './context/CodeStyleProvider'
|
|
import { NotificationProvider } from './context/NotificationProvider'
|
|
import StyleSheetManager from './context/StyleSheetManager'
|
|
import { ThemeProvider } from './context/ThemeProvider'
|
|
import NavigationHandler from './handler/NavigationHandler'
|
|
import AgentsPage from './pages/agents/AgentsPage'
|
|
import AppsPage from './pages/apps/AppsPage'
|
|
import FilesPage from './pages/files/FilesPage'
|
|
import HomePage from './pages/home/HomePage'
|
|
import KnowledgePage from './pages/knowledge/KnowledgePage'
|
|
import PaintingsRoutePage from './pages/paintings/PaintingsRoutePage'
|
|
import SettingsPage from './pages/settings/SettingsPage'
|
|
import TranslatePage from './pages/translate/TranslatePage'
|
|
|
|
function App(): React.ReactElement {
|
|
return (
|
|
<Provider store={store}>
|
|
<StyleSheetManager>
|
|
<ThemeProvider>
|
|
<AntdProvider>
|
|
<NotificationProvider>
|
|
<CodeStyleProvider>
|
|
<PersistGate loading={null} persistor={persistor}>
|
|
<TopViewContainer>
|
|
<HashRouter>
|
|
<NavigationHandler />
|
|
<Sidebar />
|
|
<Routes>
|
|
<Route path="/" element={<HomePage />} />
|
|
<Route path="/agents" element={<AgentsPage />} />
|
|
<Route path="/paintings/*" element={<PaintingsRoutePage />} />
|
|
<Route path="/translate" element={<TranslatePage />} />
|
|
<Route path="/files" element={<FilesPage />} />
|
|
<Route path="/knowledge" element={<KnowledgePage />} />
|
|
<Route path="/apps" element={<AppsPage />} />
|
|
<Route path="/settings/*" element={<SettingsPage />} />
|
|
</Routes>
|
|
</HashRouter>
|
|
</TopViewContainer>
|
|
</PersistGate>
|
|
</CodeStyleProvider>
|
|
</NotificationProvider>
|
|
</AntdProvider>
|
|
</ThemeProvider>
|
|
</StyleSheetManager>
|
|
</Provider>
|
|
)
|
|
}
|
|
|
|
export default App
|