khamba
Version:
A cli tool for sharing files through local network.
30 lines (29 loc) • 1.67 kB
JavaScript
import React, { useMemo } from 'react';
import SendArrowAnimation from '../components/Misc/SendArrowAnimation.js';
import { Box, Text } from 'ink';
import { useStore } from '@nanostores/react';
import { $receiverTotalDownload, $currTransfer, } from '../stores/fileHandlerStore.js';
import { formatBytes } from '../functions/helper.js';
import ProgressBar from '../components/Misc/ProgressBar.js';
const FileTransferForSender = () => {
const currTransfer = useStore($currTransfer);
const receiverTotalDownload = useStore($receiverTotalDownload);
const totalProgress = useMemo(() => {
return Math.min((receiverTotalDownload / currTransfer.totalFileSize) * 100, 100);
}, [receiverTotalDownload, currTransfer.totalFileSize]);
const isTransferComplete = useMemo(() => totalProgress == 100, [totalProgress]);
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Box, { flexDirection: "column" },
isTransferComplete ? (React.createElement(Text, { dimColor: true }, "Files Transfer Complete \uD83C\uDF89")) : (React.createElement(Text, null,
"SENDING\u2800",
React.createElement(SendArrowAnimation, null))),
React.createElement(Box, null,
React.createElement(ProgressBar, { left: 0, percent: totalProgress ?? 0 }),
React.createElement(Text, { dimColor: true },
"\u2800(",
formatBytes(receiverTotalDownload),
"\u2800/\u2800",
formatBytes(currTransfer.totalFileSize),
")")))));
};
export default FileTransferForSender;