You've already forked iFlow-Settings-Editor-GUI
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a01fd3a641 | ||
|
|
5bbdc1b90d | ||
|
|
67ab48b399 |
78
main.js
78
main.js
@@ -112,10 +112,15 @@ ipcMain.handle('list-api-profiles', async () => {
|
||||
try {
|
||||
const settings = readSettings()
|
||||
if (!settings) {
|
||||
return { success: false, error: '配置文件不存在', profiles: [], currentProfile: '' }
|
||||
return { success: true, profiles: [{ name: 'default', isDefault: true }], currentProfile: 'default' }
|
||||
}
|
||||
|
||||
const profiles = settings.apiProfiles || {}
|
||||
// 确保至少有 default 配置
|
||||
if (Object.keys(profiles).length === 0) {
|
||||
profiles.default = {}
|
||||
}
|
||||
|
||||
const profileList = Object.keys(profiles).map(name => ({
|
||||
name,
|
||||
isDefault: name === 'default'
|
||||
@@ -127,7 +132,7 @@ ipcMain.handle('list-api-profiles', async () => {
|
||||
currentProfile: settings.currentApiProfile || 'default'
|
||||
}
|
||||
} catch (error) {
|
||||
return { success: false, error: error.message, profiles: [], currentProfile: '' }
|
||||
return { success: false, error: error.message, profiles: [{ name: 'default', isDefault: true }], currentProfile: 'default' }
|
||||
}
|
||||
})
|
||||
|
||||
@@ -255,40 +260,109 @@ ipcMain.handle('delete-api-profile', async (event, name) => {
|
||||
})
|
||||
|
||||
// 重命名 API 配置
|
||||
|
||||
ipcMain.handle('rename-api-profile', async (event, oldName, newName) => {
|
||||
|
||||
try {
|
||||
|
||||
const settings = readSettings()
|
||||
|
||||
if (!settings) {
|
||||
|
||||
return { success: false, error: '配置文件不存在' }
|
||||
|
||||
}
|
||||
|
||||
if (oldName === 'default') {
|
||||
|
||||
return { success: false, error: '不能重命名默认配置' }
|
||||
|
||||
}
|
||||
|
||||
const profiles = settings.apiProfiles || {}
|
||||
|
||||
if (!profiles[oldName]) {
|
||||
|
||||
return { success: false, error: `配置 "${oldName}" 不存在` }
|
||||
|
||||
}
|
||||
|
||||
if (profiles[newName]) {
|
||||
|
||||
return { success: false, error: `配置 "${newName}" 已存在` }
|
||||
|
||||
}
|
||||
|
||||
profiles[newName] = profiles[oldName]
|
||||
|
||||
delete profiles[oldName]
|
||||
|
||||
settings.apiProfiles = profiles
|
||||
|
||||
if (settings.currentApiProfile === oldName) {
|
||||
|
||||
settings.currentApiProfile = newName
|
||||
|
||||
}
|
||||
|
||||
writeSettings(settings)
|
||||
|
||||
return { success: true }
|
||||
|
||||
} catch (error) {
|
||||
|
||||
return { success: false, error: error.message }
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 复制 API 配置
|
||||
|
||||
ipcMain.handle('duplicate-api-profile', async (event, sourceName, newName) => {
|
||||
|
||||
try {
|
||||
|
||||
const settings = readSettings()
|
||||
|
||||
if (!settings) {
|
||||
|
||||
return { success: false, error: '配置文件不存在' }
|
||||
|
||||
}
|
||||
|
||||
const profiles = settings.apiProfiles || {}
|
||||
|
||||
if (!profiles[sourceName]) {
|
||||
|
||||
return { success: false, error: `配置 "${sourceName}" 不存在` }
|
||||
|
||||
}
|
||||
|
||||
if (profiles[newName]) {
|
||||
|
||||
return { success: false, error: `配置 "${newName}" 已存在` }
|
||||
|
||||
}
|
||||
|
||||
// 深拷贝配置
|
||||
|
||||
profiles[newName] = JSON.parse(JSON.stringify(profiles[sourceName]))
|
||||
|
||||
settings.apiProfiles = profiles
|
||||
|
||||
writeSettings(settings)
|
||||
|
||||
return { success: true }
|
||||
|
||||
} catch (error) {
|
||||
|
||||
return { success: false, error: error.message }
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
// IPC Handlers
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
{
|
||||
"name": "iflow-settings-editor",
|
||||
"version": "1.0.0",
|
||||
"description": "iFlow Settings Editor - Vue 3 + Electron",
|
||||
"description": "一个用于编辑 iFlow CLI 配置文件的桌面应用程序。",
|
||||
"main": "main.js",
|
||||
"author": "iFlow",
|
||||
"author": "上海潘哆呐科技有限公司",
|
||||
"repository": {
|
||||
"url": "https://git.pandorastudio.cn/product/iFlow-Settings-Editor-GUI.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -17,5 +17,6 @@ contextBridge.exposeInMainWorld('electronAPI', {
|
||||
switchApiProfile: (profileName) => ipcRenderer.invoke('switch-api-profile', profileName),
|
||||
createApiProfile: (name) => ipcRenderer.invoke('create-api-profile', name),
|
||||
deleteApiProfile: (name) => ipcRenderer.invoke('delete-api-profile', name),
|
||||
renameApiProfile: (oldName, newName) => ipcRenderer.invoke('rename-api-profile', oldName, newName)
|
||||
renameApiProfile: (oldName, newName) => ipcRenderer.invoke('rename-api-profile', oldName, newName),
|
||||
duplicateApiProfile: (sourceName, newName) => ipcRenderer.invoke('duplicate-api-profile', sourceName, newName)
|
||||
})
|
||||
1305
src/App.vue
1305
src/App.vue
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user