mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 19:30:17 +08:00
fix(upgrades): add check for empty content in error block creation during upgrade to v7
This commit is contained in:
parent
636c788e2b
commit
5fe1d077e3
@ -9,6 +9,7 @@ import type {
|
||||
} from '@renderer/types/newMessage'
|
||||
import { AssistantMessageStatus, MessageBlockStatus } from '@renderer/types/newMessage'
|
||||
import { Transaction } from 'dexie'
|
||||
import { isEmpty } from 'lodash'
|
||||
|
||||
import {
|
||||
createCitationBlock,
|
||||
@ -258,12 +259,14 @@ export async function upgradeToV7(tx: Transaction): Promise<void> {
|
||||
|
||||
// 10. Error Block (Status is ERROR)
|
||||
if (oldMessage.error && typeof oldMessage.error === 'object' && Object.keys(oldMessage.error).length > 0) {
|
||||
const block = createErrorBlock(oldMessage.id, oldMessage.error, {
|
||||
createdAt: oldMessage.createdAt,
|
||||
status: MessageBlockStatus.ERROR // Error block status is ERROR
|
||||
})
|
||||
blocksToCreate.push(block)
|
||||
messageBlockIds.push(block.id)
|
||||
if (isEmpty(oldMessage.content)) {
|
||||
const block = createErrorBlock(oldMessage.id, oldMessage.error, {
|
||||
createdAt: oldMessage.createdAt,
|
||||
status: MessageBlockStatus.ERROR // Error block status is ERROR
|
||||
})
|
||||
blocksToCreate.push(block)
|
||||
messageBlockIds.push(block.id)
|
||||
}
|
||||
}
|
||||
|
||||
// 11. Create the New Message reference object (Add usage/metrics assignment)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import db from '@renderer/databases'
|
||||
import { upgradeToV7 } from '@renderer/databases/upgrades'
|
||||
import i18n from '@renderer/i18n'
|
||||
import store from '@renderer/store'
|
||||
import { setWebDAVSyncState } from '@renderer/store/backup'
|
||||
@ -361,7 +362,7 @@ export function stopAutoSync() {
|
||||
export async function getBackupData() {
|
||||
return JSON.stringify({
|
||||
time: new Date().getTime(),
|
||||
version: 3,
|
||||
version: 4,
|
||||
localStorage,
|
||||
indexedDB: await backupDatabase()
|
||||
})
|
||||
@ -390,6 +391,14 @@ export async function handleData(data: Record<string, any>) {
|
||||
if (data.version >= 2) {
|
||||
localStorage.setItem('persist:cherry-studio', data.localStorage['persist:cherry-studio'])
|
||||
await restoreDatabase(data.indexedDB)
|
||||
|
||||
if (data.version === 3) {
|
||||
await db.transaction('rw', db.tables, async (tx) => {
|
||||
await db.table('message_blocks').clear()
|
||||
await upgradeToV7(tx)
|
||||
})
|
||||
}
|
||||
|
||||
window.message.success({ content: i18n.t('message.restore.success'), key: 'restore' })
|
||||
setTimeout(() => window.api.reload(), 1000)
|
||||
return
|
||||
|
||||
Loading…
Reference in New Issue
Block a user