mirror of https://github.com/langgenius/dify.git
feat(humanInput): enhance web app delivery method handling in trigger mode
This commit is contained in:
parent
bf161d01a8
commit
4e34fa3d70
|
|
@ -19,6 +19,8 @@ import {
|
|||
PortalToFollowElemContent,
|
||||
PortalToFollowElemTrigger,
|
||||
} from '@/app/components/base/portal-to-follow-elem'
|
||||
import useWorkflowNodes from '@/app/components/workflow/store/workflow/use-nodes'
|
||||
import { isTriggerWorkflow } from '@/app/components/workflow/utils/workflow-entry'
|
||||
import { IS_CE_EDITION } from '@/config'
|
||||
import { useProviderContextSelector } from '@/context/provider-context'
|
||||
import { cn } from '@/utils/classnames'
|
||||
|
|
@ -41,6 +43,7 @@ const MethodSelector: FC<MethodSelectorProps> = ({
|
|||
const [open, doSetOpen] = useState(false)
|
||||
const humanInputEmailDeliveryEnabled = useProviderContextSelector(s => s.humanInputEmailDeliveryEnabled)
|
||||
const openRef = useRef(open)
|
||||
const nodes = useWorkflowNodes()
|
||||
|
||||
const setOpen = useCallback((v: boolean) => {
|
||||
doSetOpen(v)
|
||||
|
|
@ -51,6 +54,15 @@ const MethodSelector: FC<MethodSelectorProps> = ({
|
|||
setOpen(!openRef.current)
|
||||
}, [setOpen])
|
||||
|
||||
const webAppDeliveryInfo = useMemo(() => {
|
||||
const isTriggerMode = isTriggerWorkflow(nodes)
|
||||
return {
|
||||
disabled: isTriggerMode || data.some(method => method.type === DeliveryMethodType.WebApp),
|
||||
added: data.some(method => method.type === DeliveryMethodType.WebApp),
|
||||
isTriggerMode,
|
||||
}
|
||||
}, [data, nodes])
|
||||
|
||||
const emailDeliveryInfo = useMemo(() => {
|
||||
return {
|
||||
noPermission: !humanInputEmailDeliveryEnabled,
|
||||
|
|
@ -79,9 +91,9 @@ const MethodSelector: FC<MethodSelectorProps> = ({
|
|||
<div className="w-[360px] rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur shadow-lg backdrop-blur-sm">
|
||||
<div className="p-1">
|
||||
<div
|
||||
className={cn('relative flex cursor-pointer items-center gap-1 rounded-lg p-1 pl-3 hover:bg-state-base-hover', data.some(method => method.type === DeliveryMethodType.WebApp) && 'cursor-not-allowed bg-transparent hover:bg-transparent')}
|
||||
className={cn('relative flex cursor-pointer items-center gap-1 rounded-lg p-1 pl-3 hover:bg-state-base-hover', webAppDeliveryInfo.disabled && 'cursor-not-allowed bg-transparent hover:bg-transparent')}
|
||||
onClick={() => {
|
||||
if (data.some(method => method.type === DeliveryMethodType.WebApp))
|
||||
if (webAppDeliveryInfo.disabled)
|
||||
return
|
||||
onAdd({
|
||||
id: uuid4(),
|
||||
|
|
@ -90,16 +102,19 @@ const MethodSelector: FC<MethodSelectorProps> = ({
|
|||
})
|
||||
}}
|
||||
>
|
||||
<div className={cn('rounded-[4px] border border-divider-regular bg-components-icon-bg-indigo-solid p-1', data.some(method => method.type === DeliveryMethodType.WebApp) && 'opacity-50')}>
|
||||
<div className={cn('rounded-[4px] border border-divider-regular bg-components-icon-bg-indigo-solid p-1', webAppDeliveryInfo.disabled && 'opacity-50')}>
|
||||
<RiRobot2Fill className="h-4 w-4 text-text-primary-on-surface" />
|
||||
</div>
|
||||
<div className={cn('p-1', data.some(method => method.type === DeliveryMethodType.WebApp) && 'opacity-50')}>
|
||||
<div className={cn('p-1', webAppDeliveryInfo.disabled && 'opacity-50')}>
|
||||
<div className="system-sm-medium mb-0.5 truncate text-text-primary">{t(`${i18nPrefix}.deliveryMethod.types.webapp.title`, { ns: 'workflow' })}</div>
|
||||
<div className="system-xs-regular truncate text-text-tertiary">{t(`${i18nPrefix}.deliveryMethod.types.webapp.description`, { ns: 'workflow' })}</div>
|
||||
</div>
|
||||
{data.some(method => method.type === DeliveryMethodType.WebApp) && (
|
||||
{webAppDeliveryInfo.added && (
|
||||
<div className="system-xs-regular absolute right-[12px] top-[13px] text-text-tertiary">{t(`${i18nPrefix}.deliveryMethod.added`, { ns: 'workflow' })}</div>
|
||||
)}
|
||||
{webAppDeliveryInfo.isTriggerMode && !webAppDeliveryInfo.added && (
|
||||
<div className="system-xs-regular absolute right-[12px] top-[13px] text-text-tertiary">{t(`${i18nPrefix}.deliveryMethod.notAvailableInTriggerMode`, { ns: 'workflow' })}</div>
|
||||
)}
|
||||
</div>
|
||||
<div
|
||||
className={cn(
|
||||
|
|
|
|||
|
|
@ -544,6 +544,7 @@
|
|||
"nodes.humanInput.deliveryMethod.emailSender.wholeTeamTip2": "Email will be sent to <team>{{team}}</team> members.",
|
||||
"nodes.humanInput.deliveryMethod.emailSender.wholeTeamTip3": "Email will be sent to the following email addresses:",
|
||||
"nodes.humanInput.deliveryMethod.emptyTip": "No delivery method added, the operation cannot be triggered.",
|
||||
"nodes.humanInput.deliveryMethod.notAvailableInTriggerMode": "Not available",
|
||||
"nodes.humanInput.deliveryMethod.notConfigured": "Not configured",
|
||||
"nodes.humanInput.deliveryMethod.title": "Delivery Method",
|
||||
"nodes.humanInput.deliveryMethod.tooltip": "How the human input form is delivered to the user.",
|
||||
|
|
|
|||
|
|
@ -544,6 +544,7 @@
|
|||
"nodes.humanInput.deliveryMethod.emailSender.wholeTeamTip2": "邮件将发送给 <team>{{team}}</team> 成员。",
|
||||
"nodes.humanInput.deliveryMethod.emailSender.wholeTeamTip3": "邮件将发送到以下邮件地址:",
|
||||
"nodes.humanInput.deliveryMethod.emptyTip": "未添加提交方式,无法触发操作。",
|
||||
"nodes.humanInput.deliveryMethod.notAvailableInTriggerMode": "不可用",
|
||||
"nodes.humanInput.deliveryMethod.notConfigured": "未配置",
|
||||
"nodes.humanInput.deliveryMethod.title": "提交方式",
|
||||
"nodes.humanInput.deliveryMethod.tooltip": "人工介入表单如何传递给用户。",
|
||||
|
|
|
|||
Loading…
Reference in New Issue