mirror of
https://github.com/langgenius/dify.git
synced 2026-05-01 07:58:02 +08:00
feat: propagate trigger metadata for plugin icons across UI
This commit is contained in:
@ -26,7 +26,13 @@ export type ITriggerCardProps = {
|
||||
}
|
||||
|
||||
const getTriggerIcon = (trigger: AppTrigger, triggerPlugins: any[]) => {
|
||||
const { trigger_type, status, provider_name } = trigger
|
||||
const {
|
||||
trigger_type,
|
||||
status,
|
||||
provider_name,
|
||||
provider_id,
|
||||
icon: triggerIconFromApi,
|
||||
} = trigger
|
||||
|
||||
// Status dot styling based on trigger status
|
||||
const getStatusDot = () => {
|
||||
@ -58,16 +64,18 @@ const getTriggerIcon = (trigger: AppTrigger, triggerPlugins: any[]) => {
|
||||
blockType = BlockEnum.TriggerWebhook
|
||||
}
|
||||
|
||||
let triggerIcon: string | undefined
|
||||
if (trigger_type === 'trigger-plugin' && provider_name) {
|
||||
let triggerIcon: string | undefined = triggerIconFromApi
|
||||
if (!triggerIcon && trigger_type === 'trigger-plugin') {
|
||||
const targetTriggers = triggerPlugins || []
|
||||
const foundTrigger = targetTriggers.find(triggerWithProvider =>
|
||||
canFindTool(triggerWithProvider.id, provider_name)
|
||||
|| triggerWithProvider.id.includes(provider_name)
|
||||
|| triggerWithProvider.name === provider_name,
|
||||
)
|
||||
const identifiers = [provider_id, provider_name].filter(Boolean) as string[]
|
||||
const foundTrigger = targetTriggers.find((triggerWithProvider) => {
|
||||
return identifiers.some(identifier =>
|
||||
canFindTool(triggerWithProvider.id, identifier)
|
||||
|| triggerWithProvider.id.includes(identifier)
|
||||
|| triggerWithProvider.name === identifier,
|
||||
)
|
||||
})
|
||||
triggerIcon = foundTrigger?.icon
|
||||
console.log('triggerIcon', triggerIcon)
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
@ -162,7 +162,10 @@ const WorkflowAppLogList: FC<ILogs> = ({ logs, appDetail, onRefresh }) => {
|
||||
</td>
|
||||
{isWorkflow && (
|
||||
<td className='p-3 pr-2'>
|
||||
<TriggerByDisplay triggeredFrom={log.workflow_run.triggered_from || 'app-run'} />
|
||||
<TriggerByDisplay
|
||||
triggeredFrom={log.workflow_run.triggered_from || 'app-run'}
|
||||
triggerInfo={log.trigger_info}
|
||||
/>
|
||||
</td>
|
||||
)}
|
||||
</tr>
|
||||
|
||||
@ -11,11 +11,26 @@ import {
|
||||
} from '@/app/components/base/icons/src/vender/workflow'
|
||||
import BlockIcon from '@/app/components/workflow/block-icon'
|
||||
import { BlockEnum } from '@/app/components/workflow/types'
|
||||
import type { TriggerInfo } from '@/models/log'
|
||||
|
||||
type TriggerByDisplayProps = {
|
||||
triggeredFrom: string
|
||||
className?: string
|
||||
showText?: boolean
|
||||
triggerInfo?: TriggerInfo
|
||||
}
|
||||
|
||||
const resolveTriggerType = (value: string) => {
|
||||
switch (value) {
|
||||
case 'trigger-plugin':
|
||||
return 'plugin'
|
||||
case 'trigger-webhook':
|
||||
return 'webhook'
|
||||
case 'trigger-schedule':
|
||||
return 'schedule'
|
||||
default:
|
||||
return value
|
||||
}
|
||||
}
|
||||
|
||||
const getTriggerDisplayName = (triggeredFrom: string, t: any) => {
|
||||
@ -32,7 +47,7 @@ const getTriggerDisplayName = (triggeredFrom: string, t: any) => {
|
||||
return nameMap[triggeredFrom] || triggeredFrom
|
||||
}
|
||||
|
||||
const getTriggerIcon = (triggeredFrom: string) => {
|
||||
const getTriggerIcon = (triggeredFrom: string, triggerInfo?: TriggerInfo) => {
|
||||
switch (triggeredFrom) {
|
||||
case 'webhook':
|
||||
return (
|
||||
@ -47,12 +62,11 @@ const getTriggerIcon = (triggeredFrom: string) => {
|
||||
</div>
|
||||
)
|
||||
case 'plugin':
|
||||
// For plugin triggers in logs, use a generic plugin icon since we don't have specific plugin info
|
||||
// This matches the standard BlockIcon styling for TriggerPlugin
|
||||
return (
|
||||
<BlockIcon
|
||||
type={BlockEnum.TriggerPlugin}
|
||||
size="md"
|
||||
toolIcon={triggerInfo?.icon}
|
||||
/>
|
||||
)
|
||||
case 'debugging':
|
||||
@ -83,11 +97,13 @@ const TriggerByDisplay: FC<TriggerByDisplayProps> = ({
|
||||
triggeredFrom,
|
||||
className = '',
|
||||
showText = true,
|
||||
triggerInfo,
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
const displayName = getTriggerDisplayName(triggeredFrom, t)
|
||||
const icon = getTriggerIcon(triggeredFrom)
|
||||
const resolvedType = resolveTriggerType(triggerInfo?.type || triggeredFrom)
|
||||
const displayName = triggerInfo?.provider_name || getTriggerDisplayName(resolvedType, t)
|
||||
const icon = getTriggerIcon(resolvedType, triggerInfo)
|
||||
|
||||
return (
|
||||
<div className={`flex items-center gap-1.5 ${className}`}>
|
||||
|
||||
Reference in New Issue
Block a user