/* eslint-disable style/multiline-ternary */ 'use client' import type { FC } from 'react' import type { App as AppType } from '@/models/explore' import * as React from 'react' import { useState } from 'react' import AppUnavailable from '@/app/components/base/app-unavailable' import Loading from '@/app/components/base/loading' import Modal from '@/app/components/base/modal/index' import { IS_CLOUD_EDITION } from '@/config' import { useGlobalPublicStore } from '@/context/global-public-context' import { useGetTryAppInfo } from '@/service/use-try-app' import Button from '../../base/button' import App from './app' import AppInfo from './app-info' import Preview from './preview' import Tab, { TypeEnum } from './tab' type Props = { appId: string app?: AppType category?: string onClose: () => void onCreate: () => void } const TryApp: FC = ({ appId, app, category, onClose, onCreate, }) => { const { systemFeatures } = useGlobalPublicStore() 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 ( {isLoading ? (
) : isError ? (
) : !appDetail ? (
) : (
{/* Main content */}
{activeType === TypeEnum.TRY ? : }
)}
) } export default React.memo(TryApp)