From b6b1903a3722e764936a693360e4f3984a0834f4 Mon Sep 17 00:00:00 2001 From: Wu Tianwei <30284043+WTW0313@users.noreply.github.com> Date: Tue, 11 Mar 2025 13:36:45 +0800 Subject: [PATCH] fix: fix chatbot publish and restore handling (#15462) --- .../components/app/app-publisher/index.tsx | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/web/app/components/app/app-publisher/index.tsx b/web/app/components/app/app-publisher/index.tsx index df0f2593bb..2494445dea 100644 --- a/web/app/components/app/app-publisher/index.tsx +++ b/web/app/components/app/app-publisher/index.tsx @@ -45,6 +45,7 @@ export type AppPublisherProps = { multipleModelConfigs?: ModelAndParameter[] /** modelAndParameter is passed when debugWithMultipleModel is true */ onPublish?: (params?: any) => Promise | any + onRestore?: () => Promise | any onToggle?: (state: boolean) => void crossAxisOffset?: number toolPublished?: boolean @@ -62,6 +63,7 @@ const AppPublisher = ({ debugWithMultipleModel = false, multipleModelConfigs = [], onPublish, + onRestore, onToggle, crossAxisOffset = 0, toolPublished, @@ -76,13 +78,14 @@ const AppPublisher = ({ const { app_base_url: appBaseURL = '', access_token: accessToken = '' } = appDetail?.site ?? {} const appMode = (appDetail?.mode !== 'completion' && appDetail?.mode !== 'workflow') ? 'chat' : appDetail.mode const appURL = `${appBaseURL}/${appMode}/${accessToken}` + const isChatApp = ['chat', 'agent-chat', 'completion'].includes(appDetail?.mode || '') const language = useGetLanguage() const formatTimeFromNow = useCallback((time: number) => { return dayjs(time).locale(language === 'zh_Hans' ? 'zh-cn' : language.replace('_', '-')).fromNow() }, [language]) - const handlePublish = async (params?: ModelAndParameter | PublishWorkflowParams) => { + const handlePublish = useCallback(async (params?: ModelAndParameter | PublishWorkflowParams) => { try { await onPublish?.(params) setPublished(true) @@ -90,7 +93,15 @@ const AppPublisher = ({ catch { setPublished(false) } - } + }, [onPublish]) + + const handleRestore = useCallback(async () => { + try { + await onRestore?.() + setOpen(false) + } + catch {} + }, [onRestore]) const handleTrigger = useCallback(() => { const state = !open @@ -122,20 +133,27 @@ const AppPublisher = ({ const [embeddingModalOpen, setEmbeddingModalOpen] = useState(false) - const openPublishModal = () => { + const openPublishModal = useCallback(() => { setOpen(false) setPublishModalOpen(true) - } + }, []) - const closePublishModal = () => { + const closePublishModal = useCallback(() => { setPublishModalOpen(false) - } + }, []) + + const onClickPublishBtn = useCallback(() => { + if (isChatApp) + handlePublish() + else + openPublishModal() + }, [isChatApp, handlePublish, openPublishModal]) useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.shift.p`, (e) => { e.preventDefault() if (publishDisabled || published) return - openPublishModal() + onClickPublishBtn() } , { exactMatch: true, useCapture: true }) @@ -168,8 +186,18 @@ const AppPublisher = ({ {publishedAt ? ( -
- {t('workflow.common.publishedAt')} {formatTimeFromNow(publishedAt)} +
+
+ {t('workflow.common.publishedAt')} {formatTimeFromNow(publishedAt)} +
+ {isChatApp && }
) : ( @@ -189,7 +217,7 @@ const AppPublisher = ({