UNPKG

khamba

Version:

A cli tool for sharing files through local network.

30 lines (29 loc) 1.5 kB
import React, { useMemo } from 'react'; import { Box, Text } from 'ink'; import CustomTask from '../../../components/Misc/CustomTask.js'; import { adjustStringLength, formatBytes } from '../../../functions/helper.js'; import ProgressBar from '../../../components/Misc/ProgressBar.js'; import { spinners } from '../../../components/Misc/Spinner.js'; const taskState = { DEFAULT: 'pending', TRANSFERRING: 'loading', TRANSFERRED: 'loading', HASH_CHECKING: 'loading', ERROR: 'error', SUCCESS: 'success', }; const SingleFileTransferForSender = ({ file, longestNameLength }) => { const label = useMemo(() => { const fileName = adjustStringLength(file.fileName, longestNameLength); const formattedSize = formatBytes(file.totalSize); return `⠀${fileName} - ${formattedSize}`; }, [file, longestNameLength]); const progress = useMemo(() => Math.min((file.totalTransferred / file.totalSize) * 100, 100), [file.totalTransferred, file.totalSize]); return (React.createElement(Box, null, React.createElement(ProgressBar, { percent: progress }), React.createElement(CustomTask, { frames: file.state == 'HASH_CHECKING' ? spinners.dotsMore : spinners.dots, color: file.state == 'HASH_CHECKING' ? 'blue' : undefined, label: label, state: taskState[file.state] }), file.errorMsg && React.createElement(Text, { color: "red" }, "\u2800", file.errorMsg))); }; export default SingleFileTransferForSender;