refactor(claude-desktop): trim duplication in proxy and switch flows

- services/proxy.rs: collapse 10 repeated `OpenCode | OpenClaw | Hermes |
  ClaudeDesktop` match arms into `_` fallthroughs.
- claude_desktop_config.rs: extract a `with_rollback` closure shared by
  apply_provider_to_paths and restore_official_at_paths.
- useProviderActions.ts: replace the triple-nested ternary picking the
  switch-success toast message with a flat let/if/else block.

Net -36 lines. No behavior change; cargo test and pnpm typecheck pass.
This commit is contained in:
Jason
2026-05-08 12:26:46 +08:00
parent 8b3ad9caf9
commit 83f4e1d0ad
3 changed files with 48 additions and 84 deletions
+15 -20
View File
@@ -227,26 +227,21 @@ export function useProviderActions(
// 若已弹过 proxyRequired 警告则不再弹 success
if (!proxyRequiredReason) {
// OpenCode/OpenClaw: show "added to config" message instead of "switched"
const isMultiProviderApp =
activeApp === "opencode" || activeApp === "openclaw";
const messageKey =
activeApp === "claude-desktop"
? provider.meta?.claudeDesktopMode === "proxy"
? "notifications.claudeDesktopProxyRestartRequired"
: "notifications.claudeDesktopRestartRequired"
: isMultiProviderApp
? "notifications.addToConfigSuccess"
: "notifications.switchSuccess";
const defaultMessage =
activeApp === "claude-desktop"
? provider.meta?.claudeDesktopMode === "proxy"
? "切换成功,请保持 CC Switch 运行,并重启 Claude Desktop 后生效"
: "切换成功,重启 Claude Desktop 后生效"
: isMultiProviderApp
? "已添加到配置"
: "切换成功!";
let messageKey = "notifications.switchSuccess";
let defaultMessage = "切换成功!";
if (activeApp === "claude-desktop") {
if (provider.meta?.claudeDesktopMode === "proxy") {
messageKey = "notifications.claudeDesktopProxyRestartRequired";
defaultMessage =
"切换成功,请保持 CC Switch 运行,并重启 Claude Desktop 后生效";
} else {
messageKey = "notifications.claudeDesktopRestartRequired";
defaultMessage = "切换成功,重启 Claude Desktop 后生效";
}
} else if (activeApp === "opencode" || activeApp === "openclaw") {
messageKey = "notifications.addToConfigSuccess";
defaultMessage = "已添加到配置";
}
toast.success(t(messageKey, { defaultValue: defaultMessage }), {
closeButton: true,
});