use-nodes-data.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import { useMemo } from 'react'
  2. import { useTranslation } from 'react-i18next'
  3. import produce from 'immer'
  4. import type { BlockEnum } from '../types'
  5. import {
  6. NODES_EXTRA_DATA,
  7. NODES_INITIAL_DATA,
  8. } from '../constants'
  9. import { useIsChatMode } from './use-workflow'
  10. export const useNodesInitialData = () => {
  11. const { t } = useTranslation()
  12. return useMemo(() => produce(NODES_INITIAL_DATA, (draft) => {
  13. Object.keys(draft).forEach((key) => {
  14. draft[key as BlockEnum].title = t(`workflow.blocks.${key}`)
  15. })
  16. }), [t])
  17. }
  18. export const useNodesExtraData = () => {
  19. const { t } = useTranslation()
  20. const isChatMode = useIsChatMode()
  21. return useMemo(() => produce(NODES_EXTRA_DATA, (draft) => {
  22. Object.keys(draft).forEach((key) => {
  23. draft[key as BlockEnum].about = t(`workflow.blocksAbout.${key}`)
  24. draft[key as BlockEnum].availablePrevNodes = draft[key as BlockEnum].getAvailablePrevNodes(isChatMode)
  25. draft[key as BlockEnum].availableNextNodes = draft[key as BlockEnum].getAvailableNextNodes(isChatMode)
  26. })
  27. }), [t, isChatMode])
  28. }