mirror of
https://github.com/langgenius/dify.git
synced 2026-02-20 09:54:44 +08:00
- Refactored `PluginFetchDynamicSelectOptionsApi` to replace the `extra` argument with `credential_id`, improving clarity in dynamic option fetching. - Updated `ProviderConfigEncrypter` to rename `mask_tool_credentials` to `mask_credentials` for consistency, and added a new method to maintain backward compatibility. - Enhanced `PluginParameterService` to utilize `credential_id` for fetching subscriptions, improving the handling of trigger credentials. - Adjusted various components and types in the frontend to replace `tool_name` with `trigger_name`, ensuring consistency across the application. - Introduced `multiple` property in `TriggerParameter` to support multi-select functionality. These changes improve the integration of triggers and plugins, enhance code clarity, and align naming conventions across the codebase.
89 lines
3.0 KiB
TypeScript
89 lines
3.0 KiB
TypeScript
'use client'
|
|
import type { FC } from 'react'
|
|
import React from 'react'
|
|
import type { TriggerWithProvider } from '../types'
|
|
import type { Trigger } from '@/app/components/tools/types'
|
|
import { BlockEnum } from '../../types'
|
|
import type { TriggerDefaultValue } from '../types'
|
|
import Tooltip from '@/app/components/base/tooltip'
|
|
import { useGetLanguage } from '@/context/i18n'
|
|
import BlockIcon from '../../block-icon'
|
|
import cn from '@/utils/classnames'
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
type Props = {
|
|
provider: TriggerWithProvider
|
|
payload: Trigger
|
|
disabled?: boolean
|
|
isAdded?: boolean
|
|
onSelect: (type: BlockEnum, trigger?: TriggerDefaultValue) => void
|
|
}
|
|
|
|
const TriggerPluginActionItem: FC<Props> = ({
|
|
provider,
|
|
payload,
|
|
onSelect,
|
|
disabled,
|
|
isAdded,
|
|
}) => {
|
|
const { t } = useTranslation()
|
|
const language = useGetLanguage()
|
|
|
|
return (
|
|
<Tooltip
|
|
key={payload.name}
|
|
position='right'
|
|
needsDelay={false}
|
|
popupClassName='!p-0 !px-3 !py-2.5 !w-[224px] !leading-[18px] !text-xs !text-gray-700 !border-[0.5px] !border-black/5 !rounded-xl !shadow-lg'
|
|
popupContent={(
|
|
<div>
|
|
<BlockIcon
|
|
size='md'
|
|
className='mb-2'
|
|
type={BlockEnum.TriggerPlugin}
|
|
toolIcon={provider.icon}
|
|
/>
|
|
<div className='mb-1 text-sm leading-5 text-text-primary'>{payload.label[language]}</div>
|
|
<div className='text-xs leading-[18px] text-text-secondary'>{payload.description[language]}</div>
|
|
</div>
|
|
)}
|
|
>
|
|
<div
|
|
key={payload.name}
|
|
className='flex cursor-pointer items-center justify-between rounded-lg pl-[21px] pr-1 hover:bg-state-base-hover'
|
|
onClick={() => {
|
|
if (disabled) return
|
|
const params: Record<string, string> = {}
|
|
if (payload.parameters) {
|
|
payload.parameters.forEach((item: any) => {
|
|
params[item.name] = ''
|
|
})
|
|
}
|
|
onSelect(BlockEnum.TriggerPlugin, {
|
|
provider_id: provider.id,
|
|
provider_type: provider.type as string,
|
|
provider_name: provider.name,
|
|
trigger_name: payload.name,
|
|
trigger_label: payload.label[language],
|
|
trigger_description: payload.description[language],
|
|
title: payload.label[language],
|
|
is_team_authorization: provider.is_team_authorization,
|
|
output_schema: payload.output_schema || {},
|
|
paramSchemas: payload.parameters,
|
|
params,
|
|
meta: provider.meta,
|
|
})
|
|
}}
|
|
>
|
|
<div className={cn('system-sm-medium h-8 truncate border-l-2 border-divider-subtle pl-4 leading-8 text-text-secondary')}>
|
|
<span className={cn(disabled && 'opacity-30')}>{payload.label[language]}</span>
|
|
</div>
|
|
{isAdded && (
|
|
<div className='system-xs-regular mr-4 text-text-tertiary'>{t('tools.addToolModal.added')}</div>
|
|
)}
|
|
</div>
|
|
</Tooltip >
|
|
)
|
|
}
|
|
export default React.memo(TriggerPluginActionItem)
|