jan/web-app/src/providers/DataProvider.tsx
Louis 125104320e
chore: handle many issues with app settings and message actions (#5086)
* chore: handle many issues with app settings and message actions

* Update web-app/src/services/mcp.ts

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

---------

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-05-23 21:23:52 +07:00

50 lines
1.6 KiB
TypeScript

import { useMessages } from '@/hooks/useMessages'
import { useModelProvider } from '@/hooks/useModelProvider'
import { useThreads } from '@/hooks/useThreads'
import { useAppUpdater } from '@/hooks/useAppUpdater'
import { fetchMessages } from '@/services/messages'
import { fetchModels } from '@/services/models'
import { getProviders } from '@/services/providers'
import { fetchThreads } from '@/services/threads'
import { ModelManager } from '@janhq/core'
import { useEffect } from 'react'
import { useMCPServers } from '@/hooks/useMCPServers'
import { getMCPConfig } from '@/services/mcp'
export function DataProvider() {
const { setProviders } = useModelProvider()
const { setThreads } = useThreads()
const { setMessages } = useMessages()
const { checkForUpdate } = useAppUpdater()
const { setServers } = useMCPServers()
useEffect(() => {
fetchModels().then((models) => {
models?.forEach((model) => ModelManager.instance().register(model))
getProviders().then(setProviders)
})
getMCPConfig().then((data) => setServers(data.mcpServers ?? []))
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
fetchThreads().then((threads) => {
setThreads(threads)
threads.forEach((thread) =>
fetchMessages(thread.id).then((messages) =>
setMessages(thread.id, messages)
)
)
})
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
// Check for app updates
useEffect(() => {
checkForUpdate()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
return null
}