重大改进:用原生 JSON 存储替换 electron-store
- 实现 SimpleStore 类,使用原生 fs 操作 JSON 文件 - 解决 "Cannot find module 'conf'" 的依赖问题 - 移除 electron-store 依赖,减少包体积 - 配置文件存储在 ~/.cc-switch/config.json - 数据格式透明,便于备份和调试 - 修复 TypeScript 类型问题 - 测试通过:构建、打包、运行正常
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import { app, BrowserWindow, ipcMain, dialog, shell } from 'electron'
|
||||
import path from 'path'
|
||||
import Store from 'electron-store'
|
||||
import { Provider, AppConfig } from '../shared/types'
|
||||
import { Provider } from '../shared/types'
|
||||
import { switchProvider, getClaudeCodeConfig } from './services'
|
||||
|
||||
const store = new Store<AppConfig>()
|
||||
import { store } from './store'
|
||||
|
||||
let mainWindow: BrowserWindow | null = null
|
||||
|
||||
@@ -51,33 +49,33 @@ app.on('window-all-closed', () => {
|
||||
|
||||
// IPC handlers
|
||||
ipcMain.handle('getProviders', () => {
|
||||
return store.get('providers', {})
|
||||
return store.get('providers', {} as Record<string, Provider>)
|
||||
})
|
||||
|
||||
ipcMain.handle('getCurrentProvider', () => {
|
||||
return store.get('current', '')
|
||||
})
|
||||
|
||||
ipcMain.handle('addProvider', (_, provider: Provider) => {
|
||||
const providers = store.get('providers', {})
|
||||
ipcMain.handle('addProvider', async (_, provider: Provider) => {
|
||||
const providers = store.get('providers', {} as Record<string, Provider>)
|
||||
providers[provider.id] = provider
|
||||
store.set('providers', providers)
|
||||
await store.set('providers', providers)
|
||||
return true
|
||||
})
|
||||
|
||||
ipcMain.handle('deleteProvider', (_, id: string) => {
|
||||
const providers = store.get('providers', {})
|
||||
ipcMain.handle('deleteProvider', async (_, id: string) => {
|
||||
const providers = store.get('providers', {} as Record<string, Provider>)
|
||||
delete providers[id]
|
||||
store.set('providers', providers)
|
||||
await store.set('providers', providers)
|
||||
return true
|
||||
})
|
||||
|
||||
ipcMain.handle('updateProvider', async (_, provider: Provider) => {
|
||||
const providers = store.get('providers', {})
|
||||
const providers = store.get('providers', {} as Record<string, Provider>)
|
||||
const currentProviderId = store.get('current', '')
|
||||
|
||||
providers[provider.id] = provider
|
||||
store.set('providers', providers)
|
||||
await store.set('providers', providers)
|
||||
|
||||
// 如果编辑的是当前激活的供应商,同时更新Claude Code配置
|
||||
if (provider.id === currentProviderId) {
|
||||
@@ -92,12 +90,12 @@ ipcMain.handle('updateProvider', async (_, provider: Provider) => {
|
||||
})
|
||||
|
||||
ipcMain.handle('switchProvider', async (_, providerId: string) => {
|
||||
const providers = store.get('providers', {})
|
||||
const providers = store.get('providers', {} as Record<string, Provider>)
|
||||
const provider = providers[providerId]
|
||||
if (provider) {
|
||||
const success = await switchProvider(provider)
|
||||
if (success) {
|
||||
store.set('current', providerId)
|
||||
await store.set('current', providerId)
|
||||
}
|
||||
return success
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user