feat: refactor frontend document sorting preferences and sidebar utilities.
This commit is contained in:
@@ -1,44 +1,14 @@
|
||||
import React, { useRef } from 'react';
|
||||
import { useAppShell } from '../lib/context/AppShellContext';
|
||||
import { usePanelResizeBindings } from '../app/PanelManagerContext';
|
||||
import type { Identifier } from '../types/identifiers';
|
||||
import SidebarFolderList from './components/SidebarFolderList';
|
||||
import SidebarTagList from './components/SidebarTagList';
|
||||
import SidebarCorrespondentList from './components/SidebarCorrespondentList';
|
||||
import { FolderIdentifier } from './components/SidebarFolderNode';
|
||||
import { TenantOption } from './components/SidebarMenu';
|
||||
import SidebarHeader from './components/SidebarHeader';
|
||||
import SidebarSearch from './components/SidebarSearch';
|
||||
|
||||
interface SidebarProps {
|
||||
onSelect: (folderId: FolderIdentifier) => void;
|
||||
onDrop: (event: React.DragEvent<HTMLDivElement>, folderId: FolderIdentifier) => void;
|
||||
onDragOver: (event: React.DragEvent<HTMLDivElement>, folderId: FolderIdentifier) => void;
|
||||
onDragLeave: (event: React.DragEvent<HTMLDivElement>) => void;
|
||||
onDeleteFolder: (folderId: FolderIdentifier) => void;
|
||||
onRenameFolder?: (folderId: FolderIdentifier, name: string) => void;
|
||||
selectedFolder?: FolderIdentifier | null;
|
||||
onFolderDragStart?: (event: React.DragEvent<HTMLDivElement>, folderId: FolderIdentifier) => void;
|
||||
onFolderDragEnd?: (event: React.DragEvent<HTMLDivElement>) => void;
|
||||
draggedFolderId?: FolderIdentifier | null;
|
||||
onCreateFolder?: (parentId?: Identifier | null) => void;
|
||||
creatingFolder?: boolean;
|
||||
}
|
||||
|
||||
const Sidebar: React.FC<SidebarProps> = ({
|
||||
onSelect,
|
||||
onDrop,
|
||||
onDragOver,
|
||||
onDragLeave,
|
||||
onDeleteFolder,
|
||||
onRenameFolder,
|
||||
selectedFolder = null,
|
||||
onFolderDragStart,
|
||||
onFolderDragEnd,
|
||||
draggedFolderId = null,
|
||||
onCreateFolder,
|
||||
creatingFolder = false,
|
||||
}) => {
|
||||
const Sidebar: React.FC = () => {
|
||||
const {
|
||||
sidebarSuppressed,
|
||||
openTagsModal,
|
||||
@@ -52,7 +22,22 @@ const Sidebar: React.FC<SidebarProps> = ({
|
||||
handleTenantSelect,
|
||||
openSettings,
|
||||
handleFileSelection, // Used for upload
|
||||
} = useAppShell();
|
||||
// Folder Tree Context Props
|
||||
folderClickHandlers = {},
|
||||
handleFolderDelete,
|
||||
handleFolderRename,
|
||||
selectedFolder = null,
|
||||
handleFolderDragStart,
|
||||
handleFolderDragEnd,
|
||||
draggedFolderId = null,
|
||||
handlePromptCreateFolder,
|
||||
creatingFolder = false,
|
||||
} = useAppShell() as any;
|
||||
|
||||
const onSelect = folderClickHandlers.onSelect;
|
||||
const onDrop = folderClickHandlers.onDrop;
|
||||
const onDragOver = folderClickHandlers.onDragOver;
|
||||
const onDragLeave = folderClickHandlers.onDragLeave;
|
||||
|
||||
const onManageTags = openTagsModal;
|
||||
const onManageCorrespondents = openCorrespondentsModal;
|
||||
@@ -110,12 +95,12 @@ const Sidebar: React.FC<SidebarProps> = ({
|
||||
onDrop={onDrop}
|
||||
onDragOver={onDragOver}
|
||||
onDragLeave={onDragLeave}
|
||||
onDeleteFolder={onDeleteFolder}
|
||||
onRenameFolder={onRenameFolder}
|
||||
onFolderDragStart={onFolderDragStart}
|
||||
onFolderDragEnd={onFolderDragEnd}
|
||||
onDeleteFolder={handleFolderDelete}
|
||||
onRenameFolder={handleFolderRename}
|
||||
onFolderDragStart={handleFolderDragStart}
|
||||
onFolderDragEnd={handleFolderDragEnd}
|
||||
draggedFolderId={draggedFolderId}
|
||||
onCreateFolder={onCreateFolder}
|
||||
onCreateFolder={handlePromptCreateFolder}
|
||||
creatingFolder={creatingFolder}
|
||||
/>
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
import { useMemo } from 'react';
|
||||
import type { DragEvent } from 'react';
|
||||
import type { Identifier } from '../types/identifiers';
|
||||
|
||||
type FolderDropHandler = (
|
||||
event: DragEvent<HTMLElement>,
|
||||
folderId: Identifier,
|
||||
) => void | Promise<void>;
|
||||
|
||||
interface FolderClickHandlers {
|
||||
onSelect: (folderId: Identifier | null) => void;
|
||||
onDrop: FolderDropHandler;
|
||||
onDragOver: (event: DragEvent<HTMLElement>, folderId: Identifier) => void;
|
||||
onDragLeave: (event: DragEvent<HTMLElement>) => void;
|
||||
}
|
||||
|
||||
|
||||
interface UseSidebarPropsArgs {
|
||||
folderClickHandlers: FolderClickHandlers;
|
||||
handleFolderDelete: (folderId: Identifier) => void | Promise<void>;
|
||||
handleFolderRename: (folderId: Identifier, name: string) => void | Promise<void>;
|
||||
selectedFolder: Identifier | null;
|
||||
handleFolderDragStart: (event: DragEvent<HTMLElement>, folderId: Identifier) => void;
|
||||
handleFolderDragEnd: (event: DragEvent<HTMLElement>) => void;
|
||||
draggedFolderId: Identifier | null;
|
||||
handlePromptCreateFolder?: (parentId?: Identifier | null) => void;
|
||||
creatingFolder: boolean;
|
||||
}
|
||||
|
||||
interface SidebarHookResult {
|
||||
onSelect: FolderClickHandlers['onSelect'];
|
||||
onDrop: FolderClickHandlers['onDrop'];
|
||||
onDragOver: FolderClickHandlers['onDragOver'];
|
||||
onDragLeave: FolderClickHandlers['onDragLeave'];
|
||||
onDeleteFolder: UseSidebarPropsArgs['handleFolderDelete'];
|
||||
onRenameFolder: UseSidebarPropsArgs['handleFolderRename'];
|
||||
selectedFolder: Identifier | null;
|
||||
onFolderDragStart: UseSidebarPropsArgs['handleFolderDragStart'];
|
||||
onFolderDragEnd: UseSidebarPropsArgs['handleFolderDragEnd'];
|
||||
draggedFolderId: Identifier | null;
|
||||
onCreateFolder: UseSidebarPropsArgs['handlePromptCreateFolder'];
|
||||
creatingFolder: boolean;
|
||||
}
|
||||
|
||||
const useSidebarProps = (args: UseSidebarPropsArgs): SidebarHookResult =>
|
||||
useMemo(
|
||||
() => ({
|
||||
onSelect: args.folderClickHandlers.onSelect,
|
||||
onDrop: args.folderClickHandlers.onDrop,
|
||||
onDragOver: args.folderClickHandlers.onDragOver,
|
||||
onDragLeave: args.folderClickHandlers.onDragLeave,
|
||||
onDeleteFolder: args.handleFolderDelete,
|
||||
onRenameFolder: args.handleFolderRename,
|
||||
selectedFolder: args.selectedFolder,
|
||||
onFolderDragStart: args.handleFolderDragStart,
|
||||
onFolderDragEnd: args.handleFolderDragEnd,
|
||||
draggedFolderId: args.draggedFolderId,
|
||||
onCreateFolder: (parentId) => args.handlePromptCreateFolder?.(parentId),
|
||||
creatingFolder: args.creatingFolder,
|
||||
}),
|
||||
[args],
|
||||
);
|
||||
|
||||
export default useSidebarProps;
|
||||
Reference in New Issue
Block a user