UNPKG

khamba

Version:

A cli tool for sharing files through local network.

39 lines (38 loc) 1.43 kB
import { atom, deepMap, map } from 'nanostores'; export const $peersFiles = deepMap({}); export const $currTransfer = deepMap(); export const $receiverTotalDownload = atom(0); export const $receiverTransferProgress = map(); export const initTransferInfo = (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 $currTransfer.set({ peerInfo: peerInfo, totalFiles: totalFiles, totalFileSize: totalFileSize, files: files, }); }; export const updateTotalDownloaded = (downloaded) => { const prev = $receiverTotalDownload.get(); $receiverTotalDownload.set(prev + downloaded); }; export const updateTransferProgress = (fileID, progress) => { $receiverTransferProgress.setKey(fileID, progress); }; export const updateTransferFileState = (fileID, state) => { $currTransfer.setKey(`files.${fileID}.state`, state); }; export const updateTransferFileErrorMsg = (fileID, error) => { $currTransfer.setKey(`files.${fileID}.errorMsg`, error); };