import { useTranslation } from 'react-i18next' import * as eventTracking from '../../../infrastructure/event-tracking' import { useFileTreeActionable } from '@/features/file-tree/contexts/file-tree-actionable' import { useFileTreeData } from '@/shared/context/file-tree-data-context' import OLTooltip from '@/features/ui/components/ol/ol-tooltip' import MaterialIcon, { AvailableUnfilledIcon, } from '@/shared/components/material-icon' import React from 'react' import useCollapsibleFileTree from '../hooks/use-collapsible-file-tree' import { useCommandProvider } from '@/features/ide-react/hooks/use-command-provider' import { usePermissionsContext } from '@/features/ide-react/context/permissions-context' function FileTreeToolbar() { const { t } = useTranslation() const { fileTreeExpanded, toggleFileTreeExpanded } = useCollapsibleFileTree() return (
) } function FileTreeActionButtons() { const { t } = useTranslation() const { fileTreeReadOnly } = useFileTreeData() const { write } = usePermissionsContext() const { canCreate, startCreatingFolder, startCreatingDocOrFile, startUploadingDocOrFile, } = useFileTreeActionable() useCommandProvider(() => { if (!canCreate || fileTreeReadOnly || !write) return return [ { label: t('new_file'), id: 'new_file', handler: ({ location }) => { eventTracking.sendMB('new-file-click', { location }) startCreatingDocOrFile() }, }, { label: t('new_folder'), id: 'new_folder', handler: startCreatingFolder, }, { label: t('upload_file'), id: 'upload_file', handler: ({ location }) => { eventTracking.sendMB('upload-click', { location }) startUploadingDocOrFile() }, }, ] }, [ canCreate, fileTreeReadOnly, startCreatingDocOrFile, t, startCreatingFolder, startUploadingDocOrFile, write, ]) if (!canCreate || fileTreeReadOnly) return null const createWithAnalytics = () => { eventTracking.sendMB('new-file-click', { location: 'toolbar' }) startCreatingDocOrFile() } const uploadWithAnalytics = () => { eventTracking.sendMB('upload-click', { location: 'toolbar' }) startUploadingDocOrFile() } return (
) } function FileTreeActionButton({ id, description, onClick, iconType, }: { id: string description: string onClick: () => void iconType: AvailableUnfilledIcon }) { return ( ) } export default FileTreeToolbar