refactor(workflow): migrate legacy toast usage to ui toast (#34002)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
yyh
2026-03-25 12:42:18 +08:00
committed by GitHub
parent a9f2fb86a3
commit d7e49c388c
55 changed files with 329 additions and 426 deletions

View File

@ -19,11 +19,13 @@ vi.mock('@/app/components/base/file-uploader/hooks', () => ({
useFileSizeLimit: vi.fn(),
}))
vi.mock('@/app/components/base/toast/context', () => ({
useToastContext: () => ({
notify: vi.fn(),
close: vi.fn(),
}),
vi.mock('@/app/components/base/ui/toast', () => ({
toast: {
success: vi.fn(),
error: vi.fn(),
warning: vi.fn(),
info: vi.fn(),
},
}))
const createPayload = (overrides: Partial<UploadFileSetting> = {}): UploadFileSetting => ({

View File

@ -10,7 +10,7 @@ import { useEffect, useRef } from 'react'
import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button'
import { getProcessedFiles } from '@/app/components/base/file-uploader/utils'
import Toast from '@/app/components/base/toast'
import { toast } from '@/app/components/base/ui/toast'
import Split from '@/app/components/workflow/nodes/_base/components/split'
import SingleRunForm from '@/app/components/workflow/nodes/human-input/components/single-run-form'
import { BlockEnum, InputVarType } from '@/app/components/workflow/types'
@ -126,10 +126,7 @@ const BeforeRunForm: FC<BeforeRunFormProps> = ({
})
})
if (errMsg) {
Toast.notify({
message: errMsg,
type: 'error',
})
toast.error(errMsg)
return
}
@ -147,10 +144,7 @@ const BeforeRunForm: FC<BeforeRunFormProps> = ({
})
})
if (parseErrorJsonField) {
Toast.notify({
message: t('errorMsg.invalidJson', { ns: 'workflow', field: parseErrorJsonField }),
type: 'error',
})
toast.error(t('errorMsg.invalidJson', { ns: 'workflow', field: parseErrorJsonField }))
return
}

View File

@ -3,7 +3,7 @@ import type { Params as OneStepRunParams } from '@/app/components/workflow/nodes
// import
import type { CommonNodeType, ValueSelector } from '@/app/components/workflow/types'
import { useCallback, useEffect, useState } from 'react'
import Toast from '@/app/components/base/toast'
import { toast } from '@/app/components/base/ui/toast'
import {
useNodesSyncDraft,
} from '@/app/components/workflow/hooks'
@ -163,7 +163,7 @@ const useLastRun = <T>({
return false
const message = warningForNode.errorMessages[0] || 'This node has unresolved checklist issues'
Toast.notify({ type: 'error', message })
toast.error(message)
return true
}, [warningNodes, id])

View File

@ -12,7 +12,7 @@ import {
} from 'reactflow'
import { trackEvent } from '@/app/components/base/amplitude'
import { getInputVars as doGetInputVars } from '@/app/components/base/prompt-editor/constants'
import Toast from '@/app/components/base/toast'
import { toast } from '@/app/components/base/ui/toast'
import {
useIsChatMode,
useNodeDataUpdate,
@ -410,14 +410,14 @@ const useOneStepRun = <T>({
})
if (!response) {
const message = 'Schedule trigger run failed'
Toast.notify({ type: 'error', message })
const message = t('common.scheduleTriggerRunFailed', { ns: 'workflow' })
toast.error(message)
throw new Error(message)
}
if (response?.status === 'error') {
const message = response?.message || 'Schedule trigger run failed'
Toast.notify({ type: 'error', message })
const message = response?.message || t('common.scheduleTriggerRunFailed', { ns: 'workflow' })
toast.error(message)
throw new Error(message)
}
@ -442,10 +442,10 @@ const useOneStepRun = <T>({
_singleRunningStatus: NodeRunningStatus.Failed,
},
})
Toast.notify({ type: 'error', message: 'Schedule trigger run failed' })
toast.error(t('common.scheduleTriggerRunFailed', { ns: 'workflow' }))
throw error
}
}, [flowId, id, handleNodeDataUpdate, data])
}, [flowId, id, handleNodeDataUpdate, data, t])
const runWebhookSingleRun = useCallback(async (): Promise<any | null> => {
const urlPath = `/apps/${flowId}/workflows/draft/nodes/${id}/trigger/run`
@ -467,8 +467,8 @@ const useOneStepRun = <T>({
return null
if (!response) {
const message = response?.message || 'Webhook debug failed'
Toast.notify({ type: 'error', message })
const message = response?.message || t('common.webhookDebugFailed', { ns: 'workflow' })
toast.error(message)
cancelWebhookSingleRun()
throw new Error(message)
}
@ -495,8 +495,8 @@ const useOneStepRun = <T>({
}
if (response?.status === 'error') {
const message = response.message || 'Webhook debug failed'
Toast.notify({ type: 'error', message })
const message = response.message || t('common.webhookDebugFailed', { ns: 'workflow' })
toast.error(message)
cancelWebhookSingleRun()
throw new Error(message)
}
@ -519,7 +519,7 @@ const useOneStepRun = <T>({
if (controller.signal.aborted)
return null
Toast.notify({ type: 'error', message: 'Webhook debug request failed' })
toast.error(t('common.webhookDebugRequestFailed', { ns: 'workflow' }))
cancelWebhookSingleRun()
if (error instanceof Error)
throw error
@ -531,7 +531,7 @@ const useOneStepRun = <T>({
}
return null
}, [flowId, id, data, handleNodeDataUpdate, cancelWebhookSingleRun])
}, [flowId, id, data, handleNodeDataUpdate, cancelWebhookSingleRun, t])
const runPluginSingleRun = useCallback(async (): Promise<any | null> => {
const urlPath = `/apps/${flowId}/workflows/draft/nodes/${id}/trigger/run`
@ -566,14 +566,14 @@ const useOneStepRun = <T>({
if (controller.signal.aborted)
return null
Toast.notify({ type: 'error', message: requestError.message })
toast.error(requestError.message)
cancelPluginSingleRun()
throw requestError
}
if (!response) {
const message = 'Plugin debug failed'
Toast.notify({ type: 'error', message })
toast.error(message)
cancelPluginSingleRun()
throw new Error(message)
}
@ -600,7 +600,7 @@ const useOneStepRun = <T>({
if (response?.status === 'error') {
const message = response.message || 'Plugin debug failed'
Toast.notify({ type: 'error', message })
toast.error(message)
cancelPluginSingleRun()
throw new Error(message)
}
@ -633,10 +633,8 @@ const useOneStepRun = <T>({
_isSingleRun: false,
},
})
Toast.notify({
type: 'error',
message: res.errorMessage || '',
})
if (res.errorMessage)
toast.error(res.errorMessage)
}
return res
}