diff --git a/src/components/BlobList/BlobList.tsx b/src/components/BlobList/BlobList.tsx index b9b5b67..25216aa 100644 --- a/src/components/BlobList/BlobList.tsx +++ b/src/components/BlobList/BlobList.tsx @@ -28,11 +28,12 @@ type BlobListProps = { blobs: BlobDescriptor[]; onDelete?: (blob: BlobDescriptor) => void; title?: string; + className?: string; }; type AudioBlob = BlobDescriptor & { id3?: ID3Tag; imageData?: string }; -const BlobList = ({ blobs, onDelete, title }: BlobListProps) => { +const BlobList = ({ blobs, onDelete, title, className ='' }: BlobListProps) => { const [mode, setMode] = useState('list'); const { distribution } = useServerInfo(); const fileMetaEventsByHash = useFileMetaEventsByHash(); @@ -168,7 +169,7 @@ const BlobList = ({ blobs, onDelete, title }: BlobListProps) => { return ( <> -
+
{title &&

{title}

}
  • diff --git a/src/components/CheckBox/CheckBox.tsx b/src/components/CheckBox/CheckBox.tsx index 3cb6e6a..a0d599f 100644 --- a/src/components/CheckBox/CheckBox.tsx +++ b/src/components/CheckBox/CheckBox.tsx @@ -3,16 +3,19 @@ const CheckBox = ({ checked, setChecked, label, + disabled = false, }: { name: string; checked: boolean; setChecked: (checked: boolean) => void; label: string; + disabled: boolean; }) => ( <> setChecked(e.currentTarget.checked)} diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 5990cc0..64749b0 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -65,6 +65,7 @@ function Home() { {selectedServer && serverInfo[selectedServer] && selectedServerBlobs && ( diff --git a/src/pages/Transfer.css b/src/pages/Transfer.css index 363055b..23ffcea 100644 --- a/src/pages/Transfer.css +++ b/src/pages/Transfer.css @@ -1,5 +1,5 @@ .message { - @apply text-3xl text-center text-white p-12; + @apply text-2xl text-center text-white p-4; } .message svg { @@ -7,7 +7,7 @@ } .action-button { - @apply bg-white text-lg text-black hover:bg-pink-600 hover:text-white inline-block rounded-lg p-2 pr-4 pl-3; + @apply bg-white text-lg text-black hover:bg-primary hover:text-white inline-block rounded-lg p-2 pr-4 pl-3; } .action-button svg { @@ -15,7 +15,7 @@ } .error-log { - @apply bg-zinc-800 p-4 text-zinc-300 rounded-lg; + @apply p-2 rounded-lg; } .error-log svg { diff --git a/src/pages/Transfer.tsx b/src/pages/Transfer.tsx index 0a7738b..a1b32c0 100644 --- a/src/pages/Transfer.tsx +++ b/src/pages/Transfer.tsx @@ -126,39 +126,46 @@ export const Transfer = () => { > {transferTarget && transferJobs && transferJobs.length > 0 ? ( <> -
    - {transferJobs.length} object{transferJobs.length > 1 ? 's' : ''} to transfer{' '} - {!started && ( - - )} -
    -
    - - { -
    - {formatFileSize(transferStatus.size)} / {formatFileSize(transferStatus.fullSize)} transferred +
    +
    + {transferJobs.length} object{transferJobs.length > 1 ? 's' : ''} to transfer{' '} + {!started && ( + + )} +
    +
    + + {
    } +
    + {Object.values(transferLog) + .filter(b => b.status == 'error') + .map(t => ( +
    + + + + {t.sha256} + {formatFileSize(t.size)} + {t.status && (t.status == 'error' ? : '')} + {t.message} +
    + ))}
    - } -
    - {Object.values(transferLog) - .filter(b => b.status == 'error') - .map(t => ( -
    - - - - {t.sha256} - {formatFileSize(t.size)} - {t.status && (t.status == 'error' ? : '')} - {t.message} -
    - ))}
    {!started && } diff --git a/src/pages/Upload.tsx b/src/pages/Upload.tsx index 1453e50..80ef64a 100644 --- a/src/pages/Upload.tsx +++ b/src/pages/Upload.tsx @@ -46,7 +46,8 @@ function Upload() { const fileInputRef = useRef(null); const bs = useBlossomServerEvents(); const [fileEventsToPublish, setFileEventsToPublish] = useState([]); -console.log(bs); + const [uploadBusy, setUploadBusy] = useState(false); + console.log(bs); // const [resizeImages, setResizeImages] = useState(false); // const [publishToNostr, setPublishToNostr] = useState(false); @@ -89,6 +90,8 @@ console.log(bs); } const upload = async () => { + setUploadBusy(true); + const filesToUpload: File[] = []; for (const f of files) { if (cleanPrivateData) { @@ -170,6 +173,8 @@ console.log(bs); // TODO reset input control value?? setFileEventsToPublish(Object.values(fileDimensions)); } + + setUploadBusy(false); }; const clearTransfers = () => { @@ -211,6 +216,8 @@ console.log(bs); }, [servers]); const handleFileChange = (event: ChangeEvent) => { + if (uploadBusy) return; + const selectedFiles = event.target.files; if (selectedFiles && selectedFiles.length > 0) { const newFiles = Array.from(selectedFiles); @@ -220,7 +227,9 @@ console.log(bs); }; const handleDrop = (event: DragEvent) => { + if (uploadBusy) return; event.preventDefault(); + const droppedFiles = event.dataTransfer?.files; if (droppedFiles && droppedFiles.length > 0) { const newFiles = Array.from(droppedFiles); @@ -234,7 +243,15 @@ console.log(bs); <>

    Upload

    - +