UNPKG

khamba

Version:

A cli tool for sharing files through local network.

34 lines (33 loc) 1.36 kB
import { deepMap } from 'nanostores'; export const $peersFiles = deepMap({}); export const $receiverTransferInfo = deepMap(); export const initReceiverTransferInfo = (peerInfo, totalFiles, sendingFiles) => { const files = Object.entries(sendingFiles)?.reduce((acc, [key, value]) => { acc[key] = { state: 'DEFAULT', fileName: value.fileName, fileType: value.fileType, totalSize: value.fileSize, totalTransferred: 0, }; return acc; }, {}); const totalFileSize = Object.values(sendingFiles).reduce((total, file) => total + file.fileSize, 0); // TODO:: Return $receiverTransferInfo.set({ peerInfo: peerInfo, totalFiles: totalFiles, totalFileSize: totalFileSize, files: files, }); }; export const updateReceiverTransferProgress = (fileID, transferSize) => { const prevTransferred = $receiverTransferInfo.get().files[fileID]?.totalTransferred ?? 0; $receiverTransferInfo.setKey(`files.${fileID}.totalTransferred`, prevTransferred + transferSize); }; export const updateTransferFileState = (fileID, state) => { $receiverTransferInfo.setKey(`files.${fileID}.state`, state); }; export const updateTransferFileErrorMsg = (fileID, error) => { $receiverTransferInfo.setKey(`files.${fileID}.errorMsg`, error); };