From 361aa87838a55dc02303649a2ee2d6bd677bd045 Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Tue, 9 Dec 2025 11:08:53 +0800 Subject: [PATCH] refactor: update state management in UpdateDialogPopup and related components - Replaced the use of `useAppDispatch` and `setUpdateState` with `useAppUpdateState` for better state handling in `UpdateDialogPopup`. - Updated `UpdateAppButton` to reference the new state structure. - Changed import paths for `HelpTooltip` in `AgentModal` and `ModelSetting` to maintain consistency across components. - Refactored API key management in `ApiService` to utilize `cacheService` instead of `window.keyv` for improved performance and reliability. --- src/renderer/src/components/Popups/UpdateDialogPopup.tsx | 9 ++++----- src/renderer/src/components/Popups/agent/AgentModal.tsx | 2 +- .../src/pages/home/components/UpdateAppButton.tsx | 2 +- .../src/pages/settings/AgentSettings/ModelSetting.tsx | 2 +- src/renderer/src/services/ApiService.ts | 7 ++++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/renderer/src/components/Popups/UpdateDialogPopup.tsx b/src/renderer/src/components/Popups/UpdateDialogPopup.tsx index 593c882bf5..82685fcfd7 100644 --- a/src/renderer/src/components/Popups/UpdateDialogPopup.tsx +++ b/src/renderer/src/components/Popups/UpdateDialogPopup.tsx @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { TopView } from '@renderer/components/TopView' -import { handleSaveData, useAppDispatch } from '@renderer/store' -import { setUpdateState } from '@renderer/store/runtime' +import { useAppUpdateState } from '@renderer/hooks/useAppUpdate' +import { handleSaveData } from '@renderer/store' import { Button, Modal } from 'antd' import type { ReleaseNoteInfo, UpdateInfo } from 'builder-util-runtime' import { useEffect, useState } from 'react' @@ -23,8 +23,7 @@ const PopupContainer: React.FC = ({ releaseInfo, resolve }) => { const { t } = useTranslation() const [open, setOpen] = useState(true) const [isInstalling, setIsInstalling] = useState(false) - const dispatch = useAppDispatch() - + const { updateAppUpdateState } = useAppUpdateState() useEffect(() => { if (releaseInfo) { logger.info('Update dialog opened', { version: releaseInfo.version }) @@ -53,7 +52,7 @@ const PopupContainer: React.FC = ({ releaseInfo, resolve }) => { } const onIgnore = () => { - dispatch(setUpdateState({ ignore: true })) + updateAppUpdateState({ ignore: true }) setOpen(false) } diff --git a/src/renderer/src/components/Popups/agent/AgentModal.tsx b/src/renderer/src/components/Popups/agent/AgentModal.tsx index 0d3ce94731..d3e2884547 100644 --- a/src/renderer/src/components/Popups/agent/AgentModal.tsx +++ b/src/renderer/src/components/Popups/agent/AgentModal.tsx @@ -1,6 +1,6 @@ +import { HelpTooltip } from '@cherrystudio/ui' import { loggerService } from '@logger' import { ErrorBoundary } from '@renderer/components/ErrorBoundary' -import { HelpTooltip } from '@renderer/components/TooltipIcons' import { TopView } from '@renderer/components/TopView' import { permissionModeCards } from '@renderer/config/agent' import { useAgents } from '@renderer/hooks/agents/useAgents' diff --git a/src/renderer/src/pages/home/components/UpdateAppButton.tsx b/src/renderer/src/pages/home/components/UpdateAppButton.tsx index 2a31daf1f0..e211687c0e 100644 --- a/src/renderer/src/pages/home/components/UpdateAppButton.tsx +++ b/src/renderer/src/pages/home/components/UpdateAppButton.tsx @@ -20,7 +20,7 @@ const UpdateAppButton: FC = () => { return null } - if (update.ignore) { + if (appUpdateState.ignore) { return null } diff --git a/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx index ebe5b47003..6d1659817f 100644 --- a/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx @@ -1,4 +1,4 @@ -import { HelpTooltip } from '@renderer/components/TooltipIcons' +import { HelpTooltip } from '@cherrystudio/ui' import SelectAgentBaseModelButton from '@renderer/pages/home/components/SelectAgentBaseModelButton' import type { AgentBaseWithId, ApiModel, UpdateAgentFunctionUnion } from '@renderer/types' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index 8bb9ea52e0..14b84ae383 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -1,6 +1,7 @@ /** * 职责:提供原子化的、无状态的API调用函数 */ +import { cacheService } from '@data/CacheService' import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import type { AiSdkMiddlewareConfig } from '@renderer/aiCore/middleware/AiSdkMiddlewareBuilder' @@ -467,9 +468,9 @@ function getRotatedApiKey(provider: Provider): string { return keys[0] } - const lastUsedKey = window.keyv.get(keyName) + const lastUsedKey = cacheService.get(keyName) as string if (!lastUsedKey) { - window.keyv.set(keyName, keys[0]) + cacheService.set(keyName, keys[0]) return keys[0] } @@ -485,7 +486,7 @@ function getRotatedApiKey(provider: Provider): string { const nextIndex = (currentIndex + 1) % keys.length const nextKey = keys[nextIndex] - window.keyv.set(keyName, nextKey) + cacheService.set(keyName, nextKey) return nextKey }