dify/web/features/agent-v2/agent-composer/provider.tsx
盐粒 Yanli 52c106b532
feat(agent-v2): sync nightly updates to main (2026-06-25) (#37915)
Co-authored-by: Joel <iamjoel007@gmail.com>
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
Co-authored-by: Yansong Zhang <916125788@qq.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-26 13:13:35 +00:00

60 lines
1.5 KiB
TypeScript

'use client'
import type { AgentSoulConfig } from '@dify/contracts/api/console/agent/types.gen'
import type { ReactNode } from 'react'
import type { AgentSoulConfigFormState } from './form-state'
import { createStore, Provider as JotaiProvider } from 'jotai'
import { useRef } from 'react'
import {
agentComposerDraftAtom,
agentComposerOriginalConfigAtom,
agentComposerOriginalDraftAtom,
agentComposerPublishedDraftAtom,
} from './store'
function createAgentComposerStore({
initialDraft,
initialOriginalConfig,
}: {
initialDraft?: AgentSoulConfigFormState
initialOriginalConfig?: AgentSoulConfig
}) {
const store = createStore()
if (initialOriginalConfig)
store.set(agentComposerOriginalConfigAtom, initialOriginalConfig)
if (initialDraft)
store.set(agentComposerDraftAtom, initialDraft)
if (initialDraft)
store.set(agentComposerOriginalDraftAtom, initialDraft)
if (initialDraft)
store.set(agentComposerPublishedDraftAtom, initialDraft)
return store
}
export function AgentComposerProvider({
children,
initialDraft,
initialOriginalConfig,
}: {
children: ReactNode
initialDraft?: AgentSoulConfigFormState
initialOriginalConfig?: AgentSoulConfig
}) {
const storeRef = useRef<ReturnType<typeof createAgentComposerStore> | null>(null)
if (!storeRef.current) {
storeRef.current = createAgentComposerStore({
initialDraft,
initialOriginalConfig,
})
}
const store = storeRef.current
return (
<JotaiProvider store={store}>
{children}
</JotaiProvider>
)
}