'use client' import React, { JSX, useCallback } from 'react' import { UploadedFile, UploaderConnectionStatus } from '../types' import { useWebRTCPeer } from './WebRTCProvider' import QRCode from 'react-qr-code' import Loading from './Loading' import StopButton from './StopButton' import { useUploaderChannel } from '../hooks/useUploaderChannel' import { useUploaderConnections } from '../hooks/useUploaderConnections' import { CopyableInput } from './CopyableInput' import { ConnectionListItem } from './ConnectionListItem' import { ErrorMessage } from './ErrorMessage' const QR_CODE_SIZE = 128 export default function Uploader({ files, password, onStop, }: { files: UploadedFile[] password: string onStop: () => void }): JSX.Element { const { peer, stop } = useWebRTCPeer() const { isLoading, error, longSlug, shortSlug, longURL, shortURL } = useUploaderChannel(peer.id) const connections = useUploaderConnections(peer, files, password) const handleStop = useCallback(() => { stop() onStop() }, [stop, onStop]) if (isLoading || !longSlug || !shortSlug) { return } const activeDownloaders = connections.filter( (conn) => conn.status === UploaderConnectionStatus.Uploading, ).length if (error) { return } return ( <>

{activeDownloaders} Downloading, {connections.length} Total

{connections.map((conn, i) => ( ))}
) }