/* eslint-disable style/multiline-ternary */ 'use client' import type { FC } from 'react' import type { App as AppType } from '@/models/explore' import { Button } from '@langgenius/dify-ui/button' import { Dialog, DialogContent } from '@langgenius/dify-ui/dialog' import { Tabs, TabsList, TabsPanel, TabsTab } from '@langgenius/dify-ui/tabs' import { useSuspenseQuery } from '@tanstack/react-query' import * as React from 'react' import { useState } from 'react' import { useTranslation } from 'react-i18next' import AppUnavailable from '@/app/components/base/app-unavailable' import Loading from '@/app/components/base/loading' import { IS_CLOUD_EDITION } from '@/config' import { systemFeaturesQueryOptions } from '@/features/system-features/client' import { useGetTryAppInfo } from '@/service/use-try-app' import App from './app' import AppInfo from './app-info' import Preview from './preview' import { TypeEnum } from './types' type Props = Readonly<{ appId: string app?: AppType categories?: string[] onClose: () => void onCreate: () => void }> const TryApp: FC = ({ appId, app, categories, onClose, onCreate, }) => { const { t } = useTranslation() const { data: systemFeatures } = useSuspenseQuery(systemFeaturesQueryOptions()) const isTrialApp = !!(app && app.can_trial && systemFeatures.enable_trial_app) const canUseTryTab = IS_CLOUD_EDITION && (app ? isTrialApp : true) const [type, setType] = useState(() => (canUseTryTab ? TypeEnum.TRY : TypeEnum.DETAIL)) const activeType = canUseTryTab ? type : TypeEnum.DETAIL const { data: appDetail, isLoading, isError, error } = useGetTryAppInfo(appId) return ( { if (!open) onClose() }} > {isLoading ? (
) : isError ? (
) : !appDetail ? (
) : ( setType(selectedValue)} className="flex h-full flex-col" >
{IS_CLOUD_EDITION && ( {t('tryApp.tabHeader.try', { ns: 'explore' })} )} {t('tryApp.tabHeader.detail', { ns: 'explore' })}
{/* Main content */}
{IS_CLOUD_EDITION && ( )}
)}
) } export default React.memo(TryApp)