fix: migration should wait for extensions load (#5177)

* fix: migration should wait for extensions load

* fix: check engines load

* chore: resolve out of attempts
This commit is contained in:
Louis 2025-06-03 18:04:07 +07:00 committed by GitHub
parent 6861c46ac6
commit cf56f7e5c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,7 +4,11 @@ import { useModelProvider } from '@/hooks/useModelProvider'
import { useProxyConfig } from '@/hooks/useProxyConfig' import { useProxyConfig } from '@/hooks/useProxyConfig'
import { ExtensionManager } from '@/lib/extension' import { ExtensionManager } from '@/lib/extension'
import { configurePullOptions } from '@/services/models' import { configurePullOptions } from '@/services/models'
import { EngineManagementExtension, ExtensionTypeEnum } from '@janhq/core' import {
EngineManagementExtension,
Engines,
ExtensionTypeEnum,
} from '@janhq/core'
import { invoke } from '@tauri-apps/api/core' import { invoke } from '@tauri-apps/api/core'
/** /**
@ -12,6 +16,25 @@ import { invoke } from '@tauri-apps/api/core'
*/ */
export const migrateData = async () => { export const migrateData = async () => {
if (!localStorage.getItem('migration_completed')) { if (!localStorage.getItem('migration_completed')) {
let engines: Engines | undefined
// Wait for the extension manager to be ready
let attempts = 0
await new Promise((resolve) => {
const checkExtensionManager = async () => {
engines = await ExtensionManager.getInstance()
.get<EngineManagementExtension>(ExtensionTypeEnum.Engine)
?.getEngines()
if (engines && attempts < 10) {
resolve(true)
} else if (attempts >= 10) {
resolve(false)
} else {
attempts += 1
setTimeout(checkExtensionManager, 1000)
}
}
checkExtensionManager()
})
try { try {
// Migrate local storage data // Migrate local storage data
const oldData = await invoke('get_legacy_browser_data') const oldData = await invoke('get_legacy_browser_data')
@ -38,9 +61,7 @@ export const migrateData = async () => {
} }
} }
// Migrate provider configurations // Migrate provider configurations
const engines = await ExtensionManager.getInstance()
.get<EngineManagementExtension>(ExtensionTypeEnum.Engine)
?.getEngines()
if (engines) { if (engines) {
for (const [key, value] of Object.entries(engines)) { for (const [key, value] of Object.entries(engines)) {
const providerName = key.replace('google_gemini', 'gemini') const providerName = key.replace('google_gemini', 'gemini')