jan/web-app/src/providers/DataProvider.tsx
Faisal Amir 426dc2ab87
fix: thread list state order after dragable (#5141)
* fix: thread list state order after dragable

* fix: new chat order

* chore: revert data provider
2025-05-30 00:00:26 +07:00

55 lines
1.7 KiB
TypeScript

import { useMessages } from '@/hooks/useMessages'
import { useModelProvider } from '@/hooks/useModelProvider'
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'
import { useAssistant } from '@/hooks/useAssistant'
import { getAssistants } from '@/services/assistants'
export function DataProvider() {
const { setProviders } = useModelProvider()
const { setMessages } = useMessages()
const { checkForUpdate } = useAppUpdater()
const { setServers } = useMCPServers()
const { setAssistants } = useAssistant()
useEffect(() => {
fetchModels().then((models) => {
models?.forEach((model) => ModelManager.instance().register(model))
getProviders().then(setProviders)
})
getMCPConfig().then((data) => setServers(data.mcpServers ?? []))
getAssistants().then((data) =>
setAssistants((data as unknown as Assistant[]) ?? [])
)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
fetchThreads().then((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
}