dify/web/app/components/workflow/skill/hooks/use-node-reorder.ts

43 lines
1.1 KiB
TypeScript

'use client'
// Internal tree node reorder handler - API execution logic only
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next'
import { useStore as useAppStore } from '@/app/components/app/store'
import Toast from '@/app/components/base/toast'
import { useReorderAppAssetNode } from '@/service/use-app-asset'
export function useNodeReorder() {
const { t } = useTranslation('workflow')
const appDetail = useAppStore(s => s.appDetail)
const appId = appDetail?.id || ''
const reorderNode = useReorderAppAssetNode()
const executeReorderNode = useCallback(async (nodeId: string, afterNodeId: string | null) => {
try {
await reorderNode.mutateAsync({
appId,
nodeId,
payload: { after_node_id: afterNodeId },
})
Toast.notify({
type: 'success',
message: t('skillSidebar.menu.moved'),
})
}
catch {
Toast.notify({
type: 'error',
message: t('skillSidebar.menu.moveError'),
})
}
}, [appId, reorderNode, t])
return {
executeReorderNode,
isReordering: reorderNode.isPending,
}
}