import { Clipboard, FileX, Image, Plus, Repeat, Share, ShieldCheck } from 'phosphor-react'; import { PropsWithChildren, useMemo } from 'react'; import { useLibraryMutation } from '@sd/client'; import { ContextMenu as CM } from '@sd/ui'; import { getExplorerStore, useExplorerStore } from '~/hooks/useExplorerStore'; import { useOperatingSystem } from '~/hooks/useOperatingSystem'; import { usePlatform } from '~/util/Platform'; import { useExplorerSearchParams } from './util'; export const OpenInNativeExplorer = () => { const platform = usePlatform(); const os = useOperatingSystem(); const osFileBrowserName = useMemo(() => { if (os === 'macOS') { return 'Finder'; } else { return 'Explorer'; } }, [os]); return ( <> {platform.openPath && ( { alert('TODO: Open in FS'); // console.log('TODO', store.contextMenuActiveItem); // platform.openPath!('/Users/oscar/Desktop'); // TODO: Work out the file path from the backend }} /> )} ); }; export default (props: PropsWithChildren) => { const store = useExplorerStore(); const [params] = useExplorerSearchParams(); const generateThumbsForLocation = useLibraryMutation('jobs.generateThumbsForLocation'); const objectValidator = useLibraryMutation('jobs.objectValidator'); const rescanLocation = useLibraryMutation('locations.fullRescan'); const copyFiles = useLibraryMutation('files.copyFiles'); const cutFiles = useLibraryMutation('files.cutFiles'); const isPastable = store.cutCopyState.sourceLocationId !== store.locationId ? true : store.cutCopyState.sourcePath !== params.path ? true : false; return ( { e.preventDefault(); navigator.share?.({ title: 'Spacedrive', text: 'Check out this cool app', url: 'https://spacedrive.com' }); }} /> store.locationId && rescanLocation.mutate(store.locationId)} label="Re-index" icon={Repeat} /> {isPastable && ( ); };