UNPKG

khamba

Version:

A cli tool for sharing files through local network.

37 lines (36 loc) 1.98 kB
import React from 'react'; import { Box } from 'ink'; import Discover from '../components/Discover.js'; import { useStore } from '@nanostores/react'; import { $action, $baseInfo, $sendingFiles } from '../stores/baseStore.js'; import { $receiverTransferInfo } from '../stores/receiverfileHandlerStore.js'; import ReceiverFileTransfer from '../components/Transfer/Receiver/ReceiverFileTransfer.js'; import SenderFileTransfer from '../components/Transfer/Sender/SenderFileTransfer.js'; import { useUdpServer } from '../functions/udpServer.js'; import { useHttpServer } from '../functions/httpServer.js'; import { isObjectEmpty } from '../functions/helper.js'; import { $senderTransferInfo } from '../stores/senderFileHandlerStore.js'; import { useActivePeers } from '../functions/useActivePeers.js'; const transferComponent = { SEND: React.createElement(SenderFileTransfer, null), RECEIVE: React.createElement(ReceiverFileTransfer, null), NOTHING: React.createElement(React.Fragment, null), }; export default function MainApp({}) { const baseInfo = useStore($baseInfo); const action = useStore($action); const receiverTransferInfo = useStore($receiverTransferInfo); const senderTransferInfo = useStore($senderTransferInfo); const sendingFiles = useStore($sendingFiles); if (!baseInfo.MY_NAME || !baseInfo.BROADCAST_ADDR || !baseInfo.MY_IP || !baseInfo.UDP_PORT) { throw new Error('Base Info Data not set properly'); } useUdpServer(baseInfo.MY_ID, baseInfo.MY_NAME, baseInfo.BROADCAST_ADDR, baseInfo.MY_IP, baseInfo.UDP_PORT, baseInfo.HTTP_PORT); useHttpServer(baseInfo.MY_IP, baseInfo.HTTP_PORT, action == 'SEND', sendingFiles); useActivePeers(); const isTransferring = !isObjectEmpty(receiverTransferInfo) || !isObjectEmpty(senderTransferInfo); return (React.createElement(Box, { flexDirection: "column" }, isTransferring ? transferComponent[action] : React.createElement(Discover, null))); }