diff --git a/apps/chat/src/components/Chat/TalkTo/TalkToCard.tsx b/apps/chat/src/components/Chat/TalkTo/TalkToCard.tsx index 7b3739606..69a6a3fe2 100644 --- a/apps/chat/src/components/Chat/TalkTo/TalkToCard.tsx +++ b/apps/chat/src/components/Chat/TalkTo/TalkToCard.tsx @@ -16,6 +16,7 @@ import { getApplicationNextStatus, getApplicationSimpleStatus, getModelShortDescription, + getPlayerCaption, isApplicationStatusUpdating, isExecutableApp, } from '@/src/utils/app/application'; @@ -24,10 +25,7 @@ import { isMyApplication } from '@/src/utils/app/id'; import { canWriteSharedWithMe } from '@/src/utils/app/share'; import { PseudoModel, isPseudoModel } from '@/src/utils/server/api'; -import { - ApplicationStatus, - SimpleApplicationStatus, -} from '@/src/types/applications'; +import { SimpleApplicationStatus } from '@/src/types/applications'; import { Conversation } from '@/src/types/chat'; import { FeatureType } from '@/src/types/common'; import { DisplayMenuItemProps } from '@/src/types/menu'; @@ -62,21 +60,6 @@ import ShareIcon from '../../Common/ShareIcon'; import IconUserUnshare from '@/public/images/icons/unshare-user.svg'; import { Feature } from '@epam/ai-dial-shared'; -const getPlayerCaption = (entity: DialAIEntityModel) => { - switch (entity.functionStatus) { - case ApplicationStatus.DEPLOYED: - return 'Undeploy'; - case ApplicationStatus.UNDEPLOYED: - case ApplicationStatus.FAILED: - return 'Deploy'; - case ApplicationStatus.UNDEPLOYING: - return 'Undeploying'; - case ApplicationStatus.DEPLOYING: - default: - return 'Deploying'; - } -}; - interface ApplicationCardProps { entity: DialAIEntityModel; conversation: Conversation; diff --git a/apps/chat/src/components/Common/ApplicationWizard/CodeAppView/CodeAppExampleLink.tsx b/apps/chat/src/components/Common/ApplicationWizard/CodeAppView/CodeAppExampleLink.tsx index fd646444d..da6fac087 100644 --- a/apps/chat/src/components/Common/ApplicationWizard/CodeAppView/CodeAppExampleLink.tsx +++ b/apps/chat/src/components/Common/ApplicationWizard/CodeAppView/CodeAppExampleLink.tsx @@ -1,4 +1,4 @@ -import { useCallback } from 'react'; +import { useCallback, useMemo } from 'react'; import { useFormContext } from 'react-hook-form'; import classNames from 'classnames'; @@ -6,6 +6,7 @@ import classNames from 'classnames'; import { useTranslation } from '@/src/hooks/useTranslation'; import { constructPath } from '@/src/utils/app/file'; +import { splitEntityId } from '@/src/utils/app/folders'; import { getIdWithoutRootPathSegments } from '@/src/utils/app/id'; import { Translation } from '@/src/types/translation'; @@ -36,6 +37,11 @@ export const CodeAppExampleLink = ({ const dispatch = useAppDispatch(); + const bucket = useMemo(() => { + const { bucket } = splitEntityId(folderId); + return bucket; + }, [folderId]); + const handleClick = useCallback(() => { const example = CODE_APPS_EXAMPLES[exampleType]; Object.entries(example.files).forEach(([newFileName, content]) => { @@ -48,6 +54,7 @@ export const CodeAppExampleLink = ({ relativePath: getIdWithoutRootPathSegments(folderId), id: constructPath(folderId, newFileName), name: newFileName, + bucket, }), ); } @@ -83,7 +90,7 @@ export const CodeAppExampleLink = ({ } }); } - }, [exampleType, fileNames, dispatch, folderId, setValue, getValues]); + }, [exampleType, fileNames, dispatch, folderId, bucket, getValues, setValue]); return ( { rootFolders: [], }; }, [files, folders, sourcesFolderId]); + const rootFileNames = useMemo( () => rootFiles.map((f) => f.name), [rootFiles], ); + const { bucket, parentPath } = useMemo(() => { + if (sourcesFolderId) { + const { bucket, parentPath } = splitEntityId(sourcesFolderId); + return { bucket, parentPath }; + } + return { bucket: undefined, parentPath: undefined }; + }, [sourcesFolderId]); + useEffect(() => { if (sourcesFolderId) { dispatch(CodeEditorActions.initCodeEditor({ sourcesFolderId })); @@ -342,6 +351,11 @@ export const CodeEditor = ({ sourcesFolderId }: Props) => { [dispatch, openedFoldersIds], ); + const openUploadDialog = useCallback(() => { + setUploadFolderId(sourcesFolderId); + dispatch(FilesActions.getFolders({ id: parentPath })); + }, [dispatch, parentPath, sourcesFolderId]); + const handleUploadFiles = useCallback( ( selectedFiles: Required>[], @@ -354,11 +368,12 @@ export const CodeEditor = ({ sourcesFolderId }: Props) => { id: file.id, relativePath: folderPath, name: file.name, + bucket, }), ); }); }, - [dispatch], + [bucket, dispatch], ); const handleDeleteFile = useCallback( @@ -395,7 +410,6 @@ export const CodeEditor = ({ sourcesFolderId }: Props) => { const handleUploadEmptyFile = useCallback( (fileName: string) => { if (fileName && sourcesFolderId) { - const { bucket } = splitEntityId(sourcesFolderId); dispatch( FilesActions.uploadFile({ fileContent: new File([''], fileName, { @@ -411,7 +425,7 @@ export const CodeEditor = ({ sourcesFolderId }: Props) => { setNewFileName(''); } }, - [dispatch, sourcesFolderId], + [bucket, dispatch, sourcesFolderId], ); const handleToggleFolder = useCallback( @@ -597,7 +611,7 @@ export const CodeEditor = ({ sourcesFolderId }: Props) => {