import React, { FunctionComponent, useCallback } from 'react'; import { View, FlatList, TouchableWithoutFeedback } from 'react-native'; import { Text } from '../../components/ui/text'; import { Button } from '../../components/ui/button'; import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, } from '../../components/ui/dropdown-menu'; import { ErrorMessageResourceView } from '../../components/utilityResourceViews/ErrorMessageResourceView'; import { CircleX } from '../../lib/icons/CircleX'; import { Folder } from '../../lib/icons/Folder'; import { Code } from '../../lib/icons/Code'; import { File } from '../../lib/icons/File'; import { Trash } from '../../lib/icons/Trash'; import { Plus } from '../../lib/icons/Plus'; import { Separator } from '../../components/ui/separator'; import { useDialog } from '../../components/nav/DialogProvider'; import { SolidContainer, SolidContainerSlug, SolidLeaf, } from '@ldo/connected-solid'; import { Notifier } from 'react-native-notifier'; import { useViewContext } from '../../components/useViewContext'; export const ContainerView: FunctionComponent = () => { const { targetResource, navigateTo } = useViewContext(); const { prompt } = useDialog(); const onCreateContainer = useCallback(async () => { if (targetResource?.type !== 'SolidContainer') return; const givenName = await prompt('Enter Container Name'); if (!givenName) return; const slug = ( givenName.endsWith('/') ? givenName : `${givenName}/` ) as SolidContainerSlug; const createResult = await targetResource.createChildIfAbsent(slug); if (createResult.isError) Notifier.showNotification({ title: createResult.message }); if (createResult.type === 'containerReadSuccess') Notifier.showNotification({ title: `${slug} already exists.` }); }, [prompt, targetResource]); const onCreateRdf = useCallback(async () => { if (targetResource?.type !== 'SolidContainer') return; const givenName = await prompt('Enter File Name'); if (!givenName) return; const slug = ( givenName.endsWith('.ttl') ? givenName : `${givenName}.ttl` ) as SolidContainerSlug; const createResult = await targetResource.createChildIfAbsent(slug); if (createResult.isError) Notifier.showNotification({ title: createResult.message }); if (createResult.type === 'containerReadSuccess') Notifier.showNotification({ title: `${slug} already exists.` }); }, [prompt, targetResource]); const onUpload = useCallback(async () => { if (targetResource?.type !== 'SolidContainer') return; // Not Implemented Notifier.showNotification({ title: 'Not Implemented' }); }, [targetResource?.type]); const onDelete = useCallback( async (item: SolidLeaf | SolidContainer) => { if (targetResource?.type !== 'SolidContainer') return; const createResult = await item.delete(); if (createResult.isError) Notifier.showNotification({ title: createResult.message }); }, [targetResource?.type], ); if (targetResource?.type !== 'SolidContainer') { return ( ); } return ( {/* Left Panel */} ); }} /> ); };