| import type { InputVar } from '@/app/components/workflow/types' | import type { InputVar } from '@/app/components/workflow/types' | ||||
| import { appDefaultIconBackground } from '@/config' | import { appDefaultIconBackground } from '@/config' | ||||
| import type { PublishWorkflowParams } from '@/types/workflow' | import type { PublishWorkflowParams } from '@/types/workflow' | ||||
| import VersionInfoModal from './version-info-modal' | |||||
| export type AppPublisherProps = { | export type AppPublisherProps = { | ||||
| disabled?: boolean | disabled?: boolean | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const [published, setPublished] = useState(false) | const [published, setPublished] = useState(false) | ||||
| const [open, setOpen] = useState(false) | const [open, setOpen] = useState(false) | ||||
| const [publishModalOpen, setPublishModalOpen] = useState(false) | |||||
| const appDetail = useAppStore(state => state.appDetail) | const appDetail = useAppStore(state => state.appDetail) | ||||
| const { app_base_url: appBaseURL = '', access_token: accessToken = '' } = appDetail?.site ?? {} | const { app_base_url: appBaseURL = '', access_token: accessToken = '' } = appDetail?.site ?? {} | ||||
| const appMode = (appDetail?.mode !== 'completion' && appDetail?.mode !== 'workflow') ? 'chat' : appDetail.mode | const appMode = (appDetail?.mode !== 'completion' && appDetail?.mode !== 'workflow') ? 'chat' : appDetail.mode | ||||
| const [embeddingModalOpen, setEmbeddingModalOpen] = useState(false) | const [embeddingModalOpen, setEmbeddingModalOpen] = useState(false) | ||||
| const openPublishModal = useCallback(() => { | |||||
| setOpen(false) | |||||
| setPublishModalOpen(true) | |||||
| }, []) | |||||
| const closePublishModal = useCallback(() => { | |||||
| setPublishModalOpen(false) | |||||
| }, []) | |||||
| const onClickPublishBtn = useCallback(() => { | |||||
| if (isChatApp) | |||||
| handlePublish() | |||||
| else | |||||
| openPublishModal() | |||||
| }, [isChatApp, handlePublish, openPublishModal]) | |||||
| useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.shift.p`, (e) => { | useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.shift.p`, (e) => { | ||||
| e.preventDefault() | e.preventDefault() | ||||
| if (publishDisabled || published) | if (publishDisabled || published) | ||||
| return | return | ||||
| onClickPublishBtn() | |||||
| handlePublish() | |||||
| } | } | ||||
| , { exactMatch: true, useCapture: true }) | , { exactMatch: true, useCapture: true }) | ||||
| <Button | <Button | ||||
| variant='primary' | variant='primary' | ||||
| className='w-full mt-3' | className='w-full mt-3' | ||||
| onClick={onClickPublishBtn} | |||||
| onClick={() => handlePublish()} | |||||
| disabled={publishDisabled || published} | disabled={publishDisabled || published} | ||||
| > | > | ||||
| { | { | ||||
| accessToken={accessToken} | accessToken={accessToken} | ||||
| /> | /> | ||||
| </PortalToFollowElem > | </PortalToFollowElem > | ||||
| {publishModalOpen && ( | |||||
| <VersionInfoModal | |||||
| isOpen={publishModalOpen} | |||||
| onClose={closePublishModal} | |||||
| onPublish={handlePublish} | |||||
| /> | |||||
| )} | |||||
| </> | </> | ||||
| ) | ) | ||||
| } | } |