1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import { useCallback } from 'react'
- import { useTranslation } from 'react-i18next'
- import { useStore } from '../store'
- import { getVarType, toNodeAvailableVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'
- import type {
- Node,
- NodeOutPutVar,
- ValueSelector,
- Var,
- } from '@/app/components/workflow/types'
- export const useWorkflowVariables = () => {
- const { t } = useTranslation()
- const environmentVariables = useStore(s => s.environmentVariables)
- const conversationVariables = useStore(s => s.conversationVariables)
- const getNodeAvailableVars = useCallback(({
- parentNode,
- beforeNodes,
- isChatMode,
- filterVar,
- hideEnv,
- hideChatVar,
- }: {
- parentNode?: Node | null
- beforeNodes: Node[]
- isChatMode: boolean
- filterVar: (payload: Var, selector: ValueSelector) => boolean
- hideEnv?: boolean
- hideChatVar?: boolean
- }): NodeOutPutVar[] => {
- return toNodeAvailableVars({
- parentNode,
- t,
- beforeNodes,
- isChatMode,
- environmentVariables: hideEnv ? [] : environmentVariables,
- conversationVariables: (isChatMode && !hideChatVar) ? conversationVariables : [],
- filterVar,
- })
- }, [conversationVariables, environmentVariables, t])
- const getCurrentVariableType = useCallback(({
- parentNode,
- valueSelector,
- isIterationItem,
- availableNodes,
- isChatMode,
- isConstant,
- }: {
- valueSelector: ValueSelector
- parentNode?: Node | null
- isIterationItem?: boolean
- availableNodes: any[]
- isChatMode: boolean
- isConstant?: boolean
- }) => {
- return getVarType({
- parentNode,
- valueSelector,
- isIterationItem,
- availableNodes,
- isChatMode,
- isConstant,
- environmentVariables,
- conversationVariables,
- })
- }, [conversationVariables, environmentVariables])
- return {
- getNodeAvailableVars,
- getCurrentVariableType,
- }
- }
|