khamba
Version:
A cli tool for sharing files through local network.
37 lines (36 loc) • 1.98 kB
JavaScript
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)));
}