diff --git a/web/app/components/billing/pricing/assets/cloud.tsx b/web/app/components/billing/pricing/assets/cloud.tsx index 1052458f30..a779f8f2b7 100644 --- a/web/app/components/billing/pricing/assets/cloud.tsx +++ b/web/app/components/billing/pricing/assets/cloud.tsx @@ -9,7 +9,7 @@ const Cloud = ({ return ( - + diff --git a/web/app/components/billing/pricing/assets/self-hosted.tsx b/web/app/components/billing/pricing/assets/self-hosted.tsx index 990ac052b2..68a1e1fa37 100644 --- a/web/app/components/billing/pricing/assets/self-hosted.tsx +++ b/web/app/components/billing/pricing/assets/self-hosted.tsx @@ -9,7 +9,7 @@ const SelfHosted = ({ return ( - + diff --git a/web/app/components/billing/type.ts b/web/app/components/billing/type.ts index 9090cec78a..7cc4d19755 100644 --- a/web/app/components/billing/type.ts +++ b/web/app/components/billing/type.ts @@ -101,6 +101,9 @@ export type CurrentPlanInfoBackend = { limit: number }, is_allow_transfer_workspace: boolean + knowledge_pipeline: { + publish_enabled: boolean + }, } export type SubscriptionItem = { diff --git a/web/app/components/rag-pipeline/components/rag-pipeline-header/publisher/popup.tsx b/web/app/components/rag-pipeline/components/rag-pipeline-header/publisher/popup.tsx index 51c561636a..160a3e6dcd 100644 --- a/web/app/components/rag-pipeline/components/rag-pipeline-header/publisher/popup.tsx +++ b/web/app/components/rag-pipeline/components/rag-pipeline-header/publisher/popup.tsx @@ -39,6 +39,11 @@ import Confirm from '@/app/components/base/confirm' import PublishAsKnowledgePipelineModal from '../../publish-as-knowledge-pipeline-modal' import type { IconInfo } from '@/models/datasets' import { useResetDatasetList } from '@/service/knowledge/use-dataset' +import { useProviderContext } from '@/context/provider-context' +import classNames from '@/utils/classnames' +import PremiumBadge from '@/app/components/base/premium-badge' +import { SparklesSoft } from '@/app/components/base/icons/src/public/common' +import { useModalContextSelector } from '@/context/modal-context' const PUBLISH_SHORTCUT = ['ctrl', '⇧', 'P'] @@ -56,6 +61,9 @@ const Popup = () => { const { mutateAsync: publishWorkflow } = usePublishWorkflow() const { notify } = useToastContext() const workflowStore = useWorkflowStore() + const { isAllowPublishAsKnowledgePipeline } = useProviderContext() + const setShowPricingModal = useModalContextSelector(s => s.setShowPricingModal) + const [confirmVisible, { setFalse: hideConfirm, setTrue: showConfirm, @@ -158,8 +166,18 @@ const Popup = () => { t, ]) + const handleClickPublishAsKnowledgePipeline = useCallback(() => { + if (!isAllowPublishAsKnowledgePipeline) + setShowPricingModal() + else + setShowPublishAsKnowledgePipelineModal() + }, [isAllowPublishAsKnowledgePipeline, setShowPublishAsKnowledgePipelineModal, setShowPricingModal]) + return ( -
+
{publishedAt ? t('workflow.common.latestPublished') : t('workflow.common.currentDraftUnpublished')} @@ -233,12 +251,20 @@ const Popup = () => {
diff --git a/web/context/provider-context.tsx b/web/context/provider-context.tsx index 70917f2cf6..f7fdccc87a 100644 --- a/web/context/provider-context.tsx +++ b/web/context/provider-context.tsx @@ -57,6 +57,7 @@ type ProviderContextState = { }, refreshLicenseLimit: () => void isAllowTransferWorkspace: boolean + isAllowPublishAsKnowledgePipeline: boolean } const ProviderContext = createContext({ modelProviders: [], @@ -99,6 +100,7 @@ const ProviderContext = createContext({ }, refreshLicenseLimit: noop, isAllowTransferWorkspace: false, + isAllowPublishAsKnowledgePipeline: false, }) export const useProviderContext = () => useContext(ProviderContext) @@ -137,6 +139,7 @@ export const ProviderContextProvider = ({ const [isEducationWorkspace, setIsEducationWorkspace] = useState(false) const { data: isEducationAccount } = useEducationStatus(!enableEducationPlan) const [isAllowTransferWorkspace, setIsAllowTransferWorkspace] = useState(false) + const [isAllowPublishAsKnowledgePipeline, setIsAllowPublishAsKnowledgePipeline] = useState(false) const fetchPlan = async () => { try { @@ -167,6 +170,8 @@ export const ProviderContextProvider = ({ setLicenseLimit({ workspace_members: data.workspace_members }) if (data.is_allow_transfer_workspace) setIsAllowTransferWorkspace(data.is_allow_transfer_workspace) + if (data.knowledge_pipeline?.publish_enabled) + setIsAllowPublishAsKnowledgePipeline(data.knowledge_pipeline?.publish_enabled) } catch (error) { console.error('Failed to fetch plan info:', error) @@ -228,6 +233,7 @@ export const ProviderContextProvider = ({ licenseLimit, refreshLicenseLimit: fetchPlan, isAllowTransferWorkspace, + isAllowPublishAsKnowledgePipeline, }}> {children}