| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 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 React from 'react'
- import { useCommandProvider } from '@/features/ide-react/hooks/use-command-provider'
- import { usePermissionsContext } from '@/features/ide-react/context/permissions-context'
- import FileTreeActionButton from './file-tree-action-button'
- import { useRailContext } from '../../ide-react/context/rail-context'
- export default function FileTreeActionButtons({
- fileTreeExpanded,
- }: {
- fileTreeExpanded: boolean
- }) {
- const { t } = useTranslation()
- const { fileTreeReadOnly } = useFileTreeData()
- const { write } = usePermissionsContext()
- const { handlePaneCollapse } = useRailContext()
- const {
- canCreate,
- canBulkDelete,
- startDeleting,
- 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 (fileTreeReadOnly) return null
- const createWithAnalytics = () => {
- eventTracking.sendMB('new-file-click', { location: 'toolbar' })
- startCreatingDocOrFile()
- }
- const uploadWithAnalytics = () => {
- eventTracking.sendMB('upload-click', { location: 'toolbar' })
- startUploadingDocOrFile()
- }
- return (
- <div className="file-tree-toolbar-action-buttons">
- {fileTreeExpanded && (
- <>
- {canCreate && (
- <FileTreeActionButton
- id="new-file"
- description={t('new_file')}
- onClick={createWithAnalytics}
- iconType="note_add"
- />
- )}
- {canCreate && (
- <FileTreeActionButton
- id="new-folder"
- description={t('new_folder')}
- onClick={startCreatingFolder}
- iconType="create_new_folder"
- />
- )}
- {canCreate && (
- <FileTreeActionButton
- id="upload"
- description={t('upload')}
- onClick={uploadWithAnalytics}
- iconType="upload"
- />
- )}
- {canBulkDelete && (
- <FileTreeActionButton
- id="delete"
- description={t('delete')}
- onClick={startDeleting}
- iconType="delete"
- />
- )}
- </>
- )}
- <FileTreeActionButton
- id="close"
- description={t('close')}
- onClick={handlePaneCollapse}
- iconType="close"
- />
- </div>
- )
- }
|