import React, { useState } from 'react'; import { beeApi } from '../../services/bee'; import { makeStyles, Theme, createStyles } from '@material-ui/core/styles'; import { Paper, InputBase, IconButton, Button, Container, CircularProgress } from '@material-ui/core'; import { Search } from '@material-ui/icons'; import {DropzoneArea} from 'material-ui-dropzone' import ClipboardCopy from '../../components/ClipboardCopy'; import TroubleshootConnectionCard from '../../components/TroubleshootConnectionCard'; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { padding: '2px 4px', display: 'flex', alignItems: 'center', width: 400, }, input: { marginLeft: theme.spacing(1), flex: 1, }, iconButton: { padding: 10, }, divider: { height: 28, margin: 4, }, }), ); export default function Files(props: any) { const classes = useStyles(); const [inputMode, setInputMode] = useState<'browse' | 'upload'>('browse'); const [searchInput, setSearchInput] = useState(''); const [searchResult, setSearchResult] = useState(''); const [loadingSearch, setLoadingSearch] = useState(false); const [files, setFiles] = useState([]); const [uploadReference, setUploadReference] = useState(''); const [uploadingFile, setUploadingFile] = useState(false); const getFile = () => { setLoadingSearch(true) beeApi.files.downloadFile(searchInput) .then(res => { setSearchResult(new TextDecoder("utf-8").decode(res.data)) const downloadUrl = window.URL.createObjectURL(new Blob([res.data])); const link = document.createElement('a'); link.href = downloadUrl; link.setAttribute('download', 'file.zip'); //any other extension document.body.appendChild(link); link.click(); link.remove(); }) .catch(error => { }) .finally(() => { setLoadingSearch(false) }) } const uploadFile = () => { setUploadingFile(true) beeApi.files.uploadFile(files[0]) .then(hash => { setUploadReference(hash) setFiles([]) }) .catch(error => { }) .finally(() => { setUploadingFile(false) }) } const handleChange = (files: any) => { if (files) { setFiles(files) } } return (
{props.nodeHealth?.status === 'ok' && props.health ?
{inputMode === 'browse' ? setSearchInput(e.target.value)} /> getFile()} className={classes.iconButton} aria-label="search"> :
{uploadingFile ? :
{uploadReference ? {uploadReference} : null }
}
} {loadingSearch ? :
{searchResult}
}
: props.isLoadingHealth || props.isLoadingNodeHealth ? : }
) }