Skip to content

Commit

Permalink
fix(chat): fix issue with folders creation inside change path dialog …
Browse files Browse the repository at this point in the history
…(Issue #2114) (#2128)
  • Loading branch information
Alexander-Kezik authored Sep 17, 2024
1 parent 3e38b54 commit 9585387
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 41 deletions.
67 changes: 44 additions & 23 deletions apps/chat/src/components/Chat/ChangePathDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
validateFolderRenaming,
} from '@/src/utils/app/folders';

import { FeatureType } from '@/src/types/common';
import { FeatureType, ShareEntity } from '@/src/types/common';
import { SharingType } from '@/src/types/share';
import { Translation } from '@/src/types/translation';

Expand All @@ -39,10 +39,12 @@ import { SelectFolderFooter } from '@/src/components/Common/SelectFolder/SelectF
import { SelectFolderHeader } from '@/src/components/Common/SelectFolder/SelectFolderHeader';
import { SelectFolderList } from '@/src/components/Common/SelectFolder/SelectFolderList';

import { FolderProps } from '../Folder/Folder';

interface Props {
type: SharingType;
isOpen: boolean;
onClose: (path: string | undefined) => void;
onClose: (path?: string) => void;
initiallySelectedFolderId: string;
rootFolderId: string;
depth?: number;
Expand Down Expand Up @@ -182,7 +184,7 @@ export const ChangePathDialog = ({
);

const handleAddFolder = useCallback(
(parentFolderId: string) => {
(parentFolderId = rootFolderId) => {
const folderName = getNextDefaultName(
t(DEFAULT_FOLDER_NAME),
folders,
Expand All @@ -191,9 +193,7 @@ export const ChangePathDialog = ({
true,
);

setSelectedFolderId(
constructPath(parentFolderId || rootFolderId, folderName),
);
setSelectedFolderId(constructPath(parentFolderId, folderName));

dispatch(
actions.createTemporaryFolder({
Expand All @@ -218,7 +218,40 @@ export const ChangePathDialog = ({
[actions, dispatch],
);

const getPath = () => {
const folderProps: Omit<
FolderProps<ShareEntity, unknown>,
'currentFolder' | 'featureType'
> = useMemo(
() => ({
searchTerm: searchQuery,
allFolders: folders,
isInitialRenameEnabled: true,
openedFoldersIds,
newAddedFolderId: newFolderId,
isSidePanelFolder: false,
loadingFolderIds,
additionalItemData: {
isChangePathFolder: true,
},
onClickFolder: handleFolderSelect,
onRenameFolder: handleRenameFolder,
onDeleteFolder: handleDeleteFolder,
onAddFolder: handleAddFolder,
}),
[
folders,
handleAddFolder,
handleDeleteFolder,
handleFolderSelect,
handleRenameFolder,
loadingFolderIds,
newFolderId,
openedFoldersIds,
searchQuery,
],
);

const getPath = useCallback(() => {
const { path, pathDepth } = getPathToFolderById(folders, selectedFolderId);

if (pathDepth + depth > MAX_CONVERSATION_AND_PROMPT_FOLDERS_DEPTH) {
Expand All @@ -231,13 +264,13 @@ export const ChangePathDialog = ({
}

return onClose(path);
};
}, [depth, dispatch, folders, onClose, selectedFolderId, t]);

return (
<SelectFolder
isOpen={isOpen}
modalDataQa="change-path-dialog"
onClose={() => onClose(undefined)}
onClose={onClose}
title={t('Change path')}
>
<SelectFolderHeader
Expand All @@ -246,19 +279,7 @@ export const ChangePathDialog = ({
errorMessage={errorMessage}
>
<SelectFolderList
folderProps={{
searchTerm: searchQuery,
allFolders: folders,
isInitialRenameEnabled: true,
openedFoldersIds,
onClickFolder: handleFolderSelect,
onRenameFolder: handleRenameFolder,
onDeleteFolder: handleDeleteFolder,
onAddFolder: handleAddFolder,
newAddedFolderId: newFolderId,
isSidePanelFolder: false,
loadingFolderIds,
}}
folderProps={folderProps}
handleFolderSelect={handleFolderSelect}
isAllEntitiesOpened={isAllFoldersOpened}
initiallySelectedFolderId={initiallySelectedFolderId}
Expand All @@ -270,7 +291,7 @@ export const ChangePathDialog = ({
/>
</SelectFolderHeader>
<SelectFolderFooter
handleNewFolder={() => handleAddFolder(rootFolderId)}
handleNewFolder={handleAddFolder}
onSelectFolderClick={getPath}
/>
</SelectFolder>
Expand Down
16 changes: 9 additions & 7 deletions apps/chat/src/components/Chat/Publish/PublishWizard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,14 @@ export function PublishModal({
setIsSomeVersionInvalid(isInvalid);
}, []);

const handleClose = useCallback((folderId?: string) => {
if (typeof folderId === 'string') {
setPath(folderId);
}

setIsChangeFolderModalOpened(false);
}, []);

const isNothingSelectedAndNoRuleChanges =
!selectedItemsIds.length &&
(isEqual(
Expand Down Expand Up @@ -562,13 +570,7 @@ export function PublishModal({
<ChangePathDialog
initiallySelectedFolderId={entity.id}
isOpen={isChangeFolderModalOpened}
onClose={(folderId) => {
if (typeof folderId === 'string') {
setPath(folderId);
}

setIsChangeFolderModalOpened(false);
}}
onClose={handleClose}
type={type}
depth={depth}
rootFolderId={getRootId({
Expand Down
17 changes: 12 additions & 5 deletions apps/chat/src/components/Common/FolderContextMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { getRootId } from '@/src/utils/app/id';
import { isItemPublic } from '@/src/utils/app/publications';
import { isEntityOrParentsExternal } from '@/src/utils/app/share';

import { FeatureType } from '@/src/types/common';
import { AdditionalItemData, FeatureType } from '@/src/types/common';
import { FolderInterface } from '@/src/types/folder';
import { DisplayMenuItemProps } from '@/src/types/menu';
import { Translation } from '@/src/types/translation';
Expand All @@ -40,6 +40,7 @@ interface FolderContextMenuProps {
isOpen?: boolean;
isEmpty?: boolean;
isSidePanelFolder?: boolean;
additionalItemData?: AdditionalItemData;
onDelete?: MouseEventHandler<unknown>;
onRename?: MouseEventHandler<unknown>;
onAddFolder?: MouseEventHandler;
Expand Down Expand Up @@ -69,6 +70,7 @@ export const FolderContextMenu = ({
isOpen,
isEmpty,
isSidePanelFolder,
additionalItemData,
onSelect,
}: FolderContextMenuProps) => {
const { t } = useTranslation(Translation.SideBar);
Expand Down Expand Up @@ -189,19 +191,24 @@ export const FolderContextMenu = ({
},
{
name: t('Add new folder'),
display: !!onAddFolder && !isExternal,
display:
(!!onAddFolder && !isExternal) ||
!!additionalItemData?.isChangePathFolder,
dataQa: 'new-folder',
Icon: IconFolderPlus,
onClick: onAddFolder,
disabled: disableAll,
disabled:
(disableAll && !additionalItemData?.isChangePathFolder) ||
isNameInvalid,
},
],
[
t,
isExternal,
onSelect,
disableAll,
featureType,
onUpload,
disableAll,
onRename,
folder.temporary,
folder.isShared,
Expand All @@ -219,8 +226,8 @@ export const FolderContextMenu = ({
onUnpublish,
isSidePanelFolder,
onDelete,
featureType,
onAddFolder,
additionalItemData?.isChangePathFolder,
],
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const SelectFolderFooter = ({
<div className="flex items-center justify-between border-t border-primary px-3 py-4 md:px-6">
<div className="flex items-center justify-center">
<button
onClick={handleNewFolder}
onClick={() => handleNewFolder()}
className="flex size-[34px] items-center justify-center rounded text-secondary hover:bg-accent-primary-alpha hover:text-accent-primary"
data-qa="new-folder"
>
Expand Down
11 changes: 6 additions & 5 deletions apps/chat/src/components/Folder/Folder.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -907,11 +907,11 @@ const Folder = <T extends ConversationInfo | PromptInfo | DialFile>({
{...currentFolder}
isHighlighted
featureType={featureType}
containerClassName={
(!isExternal || !isSidePanelFolder) && canSelectFolders
? 'group-hover/folder-item:hidden'
: ''
}
containerClassName={classNames(
(!isExternal || !isSidePanelFolder) &&
canSelectFolders &&
'group-hover/folder-item:hidden',
)}
>
{hasResourcesToReview &&
isSidePanelFolder &&
Expand Down Expand Up @@ -1139,6 +1139,7 @@ const Folder = <T extends ConversationInfo | PromptInfo | DialFile>({
isEmpty={!hasChildItemOnAnyLevel}
isSidePanelFolder={isSidePanelFolder}
onSelect={onSelectFolder && onSelect}
additionalItemData={additionalItemData}
/>
</div>
)}
Expand Down
1 change: 1 addition & 0 deletions apps/chat/src/types/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ export enum ApiKeys {
export interface AdditionalItemData {
publicationUrl?: string;
canAttachFiles?: boolean;
isChangePathFolder?: boolean;
selectedFilesIds?: string[];
selectedFolderIds?: string[];
partialSelectedFolderIds?: string[];
Expand Down

0 comments on commit 9585387

Please sign in to comment.