| 'use client' |
| import type { FC } from 'react' |
| import React from 'react' |
| import { useContext } from 'use-context-selector' |
| import ExploreContext from '@/context/explore-context' |
| import TextGenerationApp from '@/app/components/share/text-generation' |
| import Loading from '@/app/components/base/loading' |
| import ChatWithHistory from '@/app/components/base/chat/chat-with-history' |
|
|
| export type IInstalledAppProps = { |
| id: string |
| } |
|
|
| const InstalledApp: FC<IInstalledAppProps> = ({ |
| id, |
| }) => { |
| const { installedApps } = useContext(ExploreContext) |
| const installedApp = installedApps.find(item => item.id === id) |
|
|
| if (!installedApp) { |
| return ( |
| <div className='flex h-full items-center'> |
| <Loading type='area' /> |
| </div> |
| ) |
| } |
|
|
| return ( |
| <div className='h-full py-2 pl-0 pr-2 sm:p-2'> |
| {installedApp.app.mode !== 'completion' && installedApp.app.mode !== 'workflow' && ( |
| <ChatWithHistory installedAppInfo={installedApp} className='rounded-2xl shadow-md overflow-hidden' /> |
| )} |
| {installedApp.app.mode === 'completion' && ( |
| <TextGenerationApp isInstalledApp installedAppInfo={installedApp}/> |
| )} |
| {installedApp.app.mode === 'workflow' && ( |
| <TextGenerationApp isWorkflow isInstalledApp installedAppInfo={installedApp}/> |
| )} |
| </div> |
| ) |
| } |
| export default React.memo(InstalledApp) |
|
|