jan/web-app/src/providers/ExtensionProvider.tsx
Louis 28c7e0d105
chore: stream app logs to log window (#5019)
* chore: stream app logs to log window

* chore: remove unused states
2025-05-19 22:51:37 +07:00

36 lines
1.1 KiB
TypeScript

import { ExtensionManager } from '@/lib/extension'
import { APIs } from '@/lib/service'
import { EventEmitter } from '@/services/events'
import { EngineManager, ModelManager } from '@janhq/core'
import { PropsWithChildren, useCallback, useEffect, useState } from 'react'
export function ExtensionProvider({ children }: PropsWithChildren) {
const [finishedSetup, setFinishedSetup] = useState(false)
const setupExtensions = useCallback(async () => {
window.core = {
api: APIs,
}
window.core.events = new EventEmitter()
window.core.extensionManager = new ExtensionManager()
window.core.engineManager = new EngineManager()
window.core.modelManager = new ModelManager()
// Register all active extensions
await ExtensionManager.getInstance()
.registerActive()
.then(() => ExtensionManager.getInstance().load())
.then(() => setFinishedSetup(true))
}, [])
useEffect(() => {
setupExtensions()
return () => {
ExtensionManager.getInstance().unload()
}
}, [setupExtensions])
return <>{finishedSetup && children}</>
}