feat(remote): 支持文件并行上传下载
This commit is contained in:
@@ -19,7 +19,6 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
const [remotePath, setRemotePath] = useState('')
|
const [remotePath, setRemotePath] = useState('')
|
||||||
const [localPath, setLocalPath] = useState('')
|
const [localPath, setLocalPath] = useState('')
|
||||||
const [transfers, setTransfers] = useState<TransferItem[]>([])
|
const [transfers, setTransfers] = useState<TransferItem[]>([])
|
||||||
const [transferring, setTransferring] = useState(false)
|
|
||||||
const [transferQueueHeight, setTransferQueueHeight] = useState(240)
|
const [transferQueueHeight, setTransferQueueHeight] = useState(240)
|
||||||
const [isDragging, setIsDragging] = useState(false)
|
const [isDragging, setIsDragging] = useState(false)
|
||||||
const dragStartY = useRef(0)
|
const dragStartY = useRef(0)
|
||||||
@@ -28,7 +27,6 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
const handleUpload = useCallback(async () => {
|
const handleUpload = useCallback(async () => {
|
||||||
if (!localSelected || !localSelected.path) return
|
if (!localSelected || !localSelected.path) return
|
||||||
|
|
||||||
setTransferring(true)
|
|
||||||
const transferId = Date.now().toString()
|
const transferId = Date.now().toString()
|
||||||
const newTransfer: TransferItem = {
|
const newTransfer: TransferItem = {
|
||||||
id: transferId,
|
id: transferId,
|
||||||
@@ -63,14 +61,12 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
} finally {
|
} finally {
|
||||||
setTransferring(false)
|
|
||||||
}
|
}
|
||||||
}, [localSelected, serverHost, port, remotePath, password])
|
}, [localSelected, serverHost, port, remotePath, password])
|
||||||
|
|
||||||
const handleDownload = useCallback(async () => {
|
const handleDownload = useCallback(async () => {
|
||||||
if (!remoteSelected || !localPath) return
|
if (!remoteSelected || !localPath) return
|
||||||
|
|
||||||
setTransferring(true)
|
|
||||||
const transferId = Date.now().toString()
|
const transferId = Date.now().toString()
|
||||||
const newTransfer: TransferItem = {
|
const newTransfer: TransferItem = {
|
||||||
id: transferId,
|
id: transferId,
|
||||||
@@ -105,7 +101,6 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
} finally {
|
} finally {
|
||||||
setTransferring(false)
|
|
||||||
}
|
}
|
||||||
}, [remoteSelected, serverHost, port, remotePath, localPath, password])
|
}, [remoteSelected, serverHost, port, remotePath, localPath, password])
|
||||||
|
|
||||||
@@ -155,7 +150,6 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
onSelect={setLocalSelected}
|
onSelect={setLocalSelected}
|
||||||
onUpload={handleUpload}
|
onUpload={handleUpload}
|
||||||
onPathChange={setLocalPath}
|
onPathChange={setLocalPath}
|
||||||
disabled={transferring}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1 min-w-0">
|
<div className="flex-1 min-w-0">
|
||||||
@@ -167,7 +161,6 @@ export const FileTransferPage: React.FC<FileTransferPageProps> = ({ serverHost,
|
|||||||
onSelect={setRemoteSelected}
|
onSelect={setRemoteSelected}
|
||||||
onDownload={handleDownload}
|
onDownload={handleDownload}
|
||||||
onPathChange={setRemotePath}
|
onPathChange={setRemotePath}
|
||||||
disabled={transferring}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user