fix(migrate): add error handling to migration functions and ensure state integrity during updates

This commit is contained in:
kangfenmao 2025-03-29 15:25:50 +08:00
parent 3bb294e698
commit 9976ad9ed0

View File

@ -455,6 +455,7 @@ const migrateConfig = {
return state return state
}, },
'54': (state: RootState) => { '54': (state: RootState) => {
try {
if (state.shortcuts) { if (state.shortcuts) {
state.shortcuts.shortcuts.push({ state.shortcuts.shortcuts.push({
key: 'search_message', key: 'search_message',
@ -469,8 +470,12 @@ const migrateConfig = {
disabled: [] disabled: []
} }
return state return state
} catch (error) {
return state
}
}, },
'55': (state: RootState) => { '55': (state: RootState) => {
try {
if (!state.settings.sidebarIcons) { if (!state.settings.sidebarIcons) {
state.settings.sidebarIcons = { state.settings.sidebarIcons = {
visible: DEFAULT_SIDEBAR_ICONS, visible: DEFAULT_SIDEBAR_ICONS,
@ -478,8 +483,12 @@ const migrateConfig = {
} }
} }
return state return state
} catch (error) {
return state
}
}, },
'57': (state: RootState) => { '57': (state: RootState) => {
try {
if (state.shortcuts) { if (state.shortcuts) {
state.shortcuts.shortcuts.push({ state.shortcuts.shortcuts.push({
key: 'mini_window', key: 'mini_window',
@ -500,8 +509,12 @@ const migrateConfig = {
state.settings.clickTrayToShowQuickAssistant = true state.settings.clickTrayToShowQuickAssistant = true
return state return state
} catch (error) {
return state
}
}, },
'58': (state: RootState) => { '58': (state: RootState) => {
try {
if (state.shortcuts) { if (state.shortcuts) {
state.shortcuts.shortcuts.push( state.shortcuts.shortcuts.push(
{ {
@ -521,8 +534,12 @@ const migrateConfig = {
) )
} }
return state return state
} catch (error) {
return state
}
}, },
'59': (state: RootState) => { '59': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const flowith = DEFAULT_MIN_APPS.find((app) => app.id === 'flowith') const flowith = DEFAULT_MIN_APPS.find((app) => app.id === 'flowith')
if (flowith) { if (flowith) {
@ -530,20 +547,32 @@ const migrateConfig = {
} }
} }
return state return state
} catch (error) {
return state
}
}, },
'60': (state: RootState) => { '60': (state: RootState) => {
try {
state.settings.multiModelMessageStyle = 'fold' state.settings.multiModelMessageStyle = 'fold'
return state return state
} catch (error) {
return state
}
}, },
'61': (state: RootState) => { '61': (state: RootState) => {
try {
state.llm.providers.forEach((provider) => { state.llm.providers.forEach((provider) => {
if (provider.id === 'qwenlm') { if (provider.id === 'qwenlm') {
provider.type = 'qwenlm' provider.type = 'qwenlm'
} }
}) })
return state return state
} catch (error) {
return state
}
}, },
'62': (state: RootState) => { '62': (state: RootState) => {
try {
state.llm.providers.forEach((provider) => { state.llm.providers.forEach((provider) => {
if (provider.id === 'azure-openai') { if (provider.id === 'azure-openai') {
provider.type = 'azure-openai' provider.type = 'azure-openai'
@ -551,8 +580,12 @@ const migrateConfig = {
}) })
state.settings.translateModelPrompt = TRANSLATE_PROMPT state.settings.translateModelPrompt = TRANSLATE_PROMPT
return state return state
} catch (error) {
return state
}
}, },
'63': (state: RootState) => { '63': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const mintop = DEFAULT_MIN_APPS.find((app) => app.id === '3mintop') const mintop = DEFAULT_MIN_APPS.find((app) => app.id === '3mintop')
if (mintop) { if (mintop) {
@ -560,17 +593,29 @@ const migrateConfig = {
} }
} }
return state return state
} catch (error) {
return state
}
}, },
'64': (state: RootState) => { '64': (state: RootState) => {
try {
state.llm.providers = state.llm.providers.filter((provider) => provider.id !== 'qwenlm') state.llm.providers = state.llm.providers.filter((provider) => provider.id !== 'qwenlm')
addProvider(state, 'baidu-cloud') addProvider(state, 'baidu-cloud')
return state return state
} catch (error) {
return state
}
}, },
'65': (state: RootState) => { '65': (state: RootState) => {
try {
state.settings.targetLanguage = 'english' state.settings.targetLanguage = 'english'
return state return state
} catch (error) {
return state
}
}, },
'66': (state: RootState) => { '66': (state: RootState) => {
try {
addProvider(state, 'gitee-ai') addProvider(state, 'gitee-ai')
addProvider(state, 'ppio') addProvider(state, 'ppio')
@ -584,6 +629,9 @@ const migrateConfig = {
} }
return state return state
} catch (error) {
return state
}
}, },
'67': (state: RootState) => { '67': (state: RootState) => {
if (state.minapps) { if (state.minapps) {
@ -606,6 +654,7 @@ const migrateConfig = {
return state return state
}, },
'68': (state: RootState) => { '68': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const notebooklm = DEFAULT_MIN_APPS.find((app) => app.id === 'notebooklm') const notebooklm = DEFAULT_MIN_APPS.find((app) => app.id === 'notebooklm')
if (notebooklm) { if (notebooklm) {
@ -617,8 +666,12 @@ const migrateConfig = {
addProvider(state, 'lmstudio') addProvider(state, 'lmstudio')
return state return state
} catch (error) {
return state
}
}, },
'69': (state: RootState) => { '69': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const coze = DEFAULT_MIN_APPS.find((app) => app.id === 'coze') const coze = DEFAULT_MIN_APPS.find((app) => app.id === 'coze')
if (coze) { if (coze) {
@ -628,16 +681,24 @@ const migrateConfig = {
state.settings.gridColumns = 2 state.settings.gridColumns = 2
state.settings.gridPopoverTrigger = 'hover' state.settings.gridPopoverTrigger = 'hover'
return state return state
} catch (error) {
return state
}
}, },
'70': (state: RootState) => { '70': (state: RootState) => {
try {
state.llm.providers.forEach((provider) => { state.llm.providers.forEach((provider) => {
if (provider.id === 'dmxapi') { if (provider.id === 'dmxapi') {
provider.apiHost = 'https://www.dmxapi.cn' provider.apiHost = 'https://www.dmxapi.cn'
} }
}) })
return state return state
} catch (error) {
return state
}
}, },
'71': (state: RootState) => { '71': (state: RootState) => {
try {
const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat', 'baidu-ai-search'] const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat', 'baidu-ai-search']
if (state.minapps) { if (state.minapps) {
@ -655,8 +716,12 @@ const migrateConfig = {
state.settings.thoughtAutoCollapse = true state.settings.thoughtAutoCollapse = true
return state return state
} catch (error) {
return state
}
}, },
'72': (state: RootState) => { '72': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const monica = DEFAULT_MIN_APPS.find((app) => app.id === 'monica') const monica = DEFAULT_MIN_APPS.find((app) => app.id === 'monica')
if (monica) { if (monica) {
@ -674,8 +739,12 @@ const migrateConfig = {
} }
return state return state
} catch (error) {
return state
}
}, },
'73': (state: RootState) => { '73': (state: RootState) => {
try {
if (state.websearch) { if (state.websearch) {
state.websearch.searchWithTime = true state.websearch.searchWithTime = true
state.websearch.maxResults = 5 state.websearch.maxResults = 5
@ -712,12 +781,20 @@ const migrateConfig = {
} }
return state return state
} catch (error) {
return state
}
}, },
'74': (state: RootState) => { '74': (state: RootState) => {
try {
addProvider(state, 'xirang') addProvider(state, 'xirang')
return state return state
} catch (error) {
return state
}
}, },
'75': (state: RootState) => { '75': (state: RootState) => {
try {
if (state.minapps) { if (state.minapps) {
const you = DEFAULT_MIN_APPS.find((app) => app.id === 'you') const you = DEFAULT_MIN_APPS.find((app) => app.id === 'you')
const cici = DEFAULT_MIN_APPS.find((app) => app.id === 'cici') const cici = DEFAULT_MIN_APPS.find((app) => app.id === 'cici')
@ -727,12 +804,20 @@ const migrateConfig = {
zhihu && state.minapps.enabled.push(zhihu) zhihu && state.minapps.enabled.push(zhihu)
} }
return state return state
} catch (error) {
return state
}
}, },
'76': (state: RootState) => { '76': (state: RootState) => {
try {
addProvider(state, 'tencent-cloud-ti') addProvider(state, 'tencent-cloud-ti')
return state return state
} catch (error) {
return state
}
}, },
'77': (state: RootState) => { '77': (state: RootState) => {
try {
if (state.websearch) { if (state.websearch) {
if (!state.websearch.providers.find((p) => p.id === 'searxng')) { if (!state.websearch.providers.find((p) => p.id === 'searxng')) {
state.websearch.providers.push( state.websearch.providers.push(
@ -754,27 +839,47 @@ const migrateConfig = {
}) })
} }
return state return state
} catch (error) {
return state
}
}, },
'78': (state: RootState) => { '78': (state: RootState) => {
try {
state.llm.providers = moveProvider(state.llm.providers, 'ppio', 9) state.llm.providers = moveProvider(state.llm.providers, 'ppio', 9)
state.llm.providers = moveProvider(state.llm.providers, 'infini', 10) state.llm.providers = moveProvider(state.llm.providers, 'infini', 10)
removeMiniAppIconsFromState(state) removeMiniAppIconsFromState(state)
return state return state
} catch (error) {
return state
}
}, },
'79': (state: RootState) => { '79': (state: RootState) => {
try {
addProvider(state, 'gpustack') addProvider(state, 'gpustack')
return state return state
} catch (error) {
return state
}
}, },
'80': (state: RootState) => { '80': (state: RootState) => {
try {
addProvider(state, 'alayanew') addProvider(state, 'alayanew')
state.llm.providers = moveProvider(state.llm.providers, 'alayanew', 10) state.llm.providers = moveProvider(state.llm.providers, 'alayanew', 10)
return state return state
} catch (error) {
return state
}
}, },
'81': (state: RootState) => { '81': (state: RootState) => {
try {
addProvider(state, 'copilot') addProvider(state, 'copilot')
return state return state
} catch (error) {
return state
}
}, },
'82': (state: RootState) => { '82': (state: RootState) => {
try {
const runtimeState = state.runtime as any const runtimeState = state.runtime as any
if (runtimeState?.webdavSync) { if (runtimeState?.webdavSync) {
state.backup = state.backup || {} state.backup = state.backup || {}
@ -789,25 +894,43 @@ const migrateConfig = {
delete runtimeState.webdavSync delete runtimeState.webdavSync
} }
return state return state
} catch (error) {
return state
}
}, },
'83': (state: RootState) => { '83': (state: RootState) => {
try {
state.settings.messageNavigation = 'buttons' state.settings.messageNavigation = 'buttons'
state.settings.launchOnBoot = false state.settings.launchOnBoot = false
state.settings.launchToTray = false state.settings.launchToTray = false
state.settings.trayOnClose = true state.settings.trayOnClose = true
return state return state
} catch (error) {
console.error(error)
return state
}
}, },
'84': (state: RootState) => { '84': (state: RootState) => {
try {
addProvider(state, 'voyageai') addProvider(state, 'voyageai')
return state return state
} catch (error) {
console.error(error)
return state
}
}, },
'85': (state: RootState) => { '85': (state: RootState) => {
try {
// @ts-ignore eslint-disable-next-line // @ts-ignore eslint-disable-next-line
state.settings.autoCheckUpdate = !state.settings.manualUpdateCheck state.settings.autoCheckUpdate = !state.settings.manualUpdateCheck
// @ts-ignore eslint-disable-next-line // @ts-ignore eslint-disable-next-line
delete state.settings.manualUpdateCheck delete state.settings.manualUpdateCheck
state.settings.gridPopoverTrigger = 'click' state.settings.gridPopoverTrigger = 'click'
return state return state
} catch (error) {
console.error(error)
return state
}
}, },
'86': (state: RootState) => { '86': (state: RootState) => {
try { try {