| '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) | |