Files
spacedrive/interface/app/$libraryId/Explorer/ContextMenu/context.tsx
Ericson "Fogo" Soares 774e5b7839 [ENG-1124 | ENG-1154] Ephemeral location bug: Opening files | Path should always be in present in Inspector (#1401)
* New functions to open ephemeral files

* Review items for ephemeral files

* Open and OpenWith context menu for ephemeral paths

* Some warnings

* Fixing inspector

* Fixing windows

* Format

* Messy rebase

* Fix macos

* Cargo fmt

* Removing devtools as it can be opened with keybind

* Fix macos

* Separating ext for ephemeral files on inspector

* Fixing bad rebase

* Removing rename button from quickpreview for ephemeral files

* Quick Preview for ephemeral files

* Requested changes
2023-10-05 07:21:37 +00:00

44 lines
1.2 KiB
TypeScript

import { createContext, PropsWithChildren, useContext } from 'react';
import {
ExplorerItem,
FilePath,
NonIndexedPathItem,
Object,
useItemsAsEphemeralPaths,
useItemsAsFilePaths,
useItemsAsObjects
} from '@sd/client';
import { NonEmptyArray } from '~/util';
const ContextMenuContext = createContext<{
selectedItems: NonEmptyArray<ExplorerItem>;
selectedFilePaths: FilePath[];
selectedObjects: Object[];
selectedEphemeralPaths: NonIndexedPathItem[];
} | null>(null);
export const ContextMenuContextProvider = ({
selectedItems,
children
}: PropsWithChildren<{
selectedItems: NonEmptyArray<ExplorerItem>;
}>) => {
const selectedFilePaths = useItemsAsFilePaths(selectedItems);
const selectedObjects = useItemsAsObjects(selectedItems);
const selectedEphemeralPaths = useItemsAsEphemeralPaths(selectedItems);
return (
<ContextMenuContext.Provider
value={{ selectedItems, selectedFilePaths, selectedObjects, selectedEphemeralPaths }}
>
{children}
</ContextMenuContext.Provider>
);
};
export const useContextMenuContext = () => {
const context = useContext(ContextMenuContext);
if (!context) throw new Error('ContextMenuContext.Provider not found');
return context;
};