aboutsummaryrefslogtreecommitdiff
path: root/Hotline/State/HotlineState.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-11 15:39:02 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-11 15:39:02 -0800
commitf87ff05d17cedf21845abbb8d750759ba725a263 (patch)
tree154feff5eed1b3f7787eeb2f743ffe6602b6cd31 /Hotline/State/HotlineState.swift
parentcdaff85ac22f45e39ab1f02474beaa7aada9ad9b (diff)
Folder download logic cleanup. Display folder icon on folder download transfers with small icon for the current file. Fix progress for folder downloads.
Diffstat (limited to 'Hotline/State/HotlineState.swift')
-rw-r--r--Hotline/State/HotlineState.swift19
1 files changed, 11 insertions, 8 deletions
diff --git a/Hotline/State/HotlineState.swift b/Hotline/State/HotlineState.swift
index f814818..7335f37 100644
--- a/Hotline/State/HotlineState.swift
+++ b/Hotline/State/HotlineState.swift
@@ -895,6 +895,7 @@ class HotlineState: Equatable {
serverID: self.id,
serverName: self.serverName ?? self.serverTitle
)
+ transfer.isUpload = false
transfer.downloadCallback = callback
transfer.progressCallback = progressCallback
AppState.shared.addTransfer(transfer)
@@ -980,7 +981,7 @@ class HotlineState: Equatable {
path: [String],
to destination: URL? = nil,
progress progressCallback: ((TransferInfo) -> Void)? = nil,
- itemProgress itemProgressCallback: ((TransferInfo, String, Int, Int) -> Void)? = nil,
+// itemProgress itemProgressCallback: ((TransferInfo, String, Int, Int) -> Void)? = nil,
complete callback: ((TransferInfo) -> Void)? = nil
) {
guard let client = self.client else { return }
@@ -1013,6 +1014,8 @@ class HotlineState: Equatable {
serverName: self.serverName ?? self.serverTitle
)
transfer.isFolder = true
+ transfer.folderName = folderName
+ transfer.isUpload = false
transfer.downloadCallback = callback
transfer.progressCallback = progressCallback
AppState.shared.addTransfer(transfer)
@@ -1031,8 +1034,6 @@ class HotlineState: Equatable {
guard self != nil else { return }
do {
- let folderURL: URL
-
// Download folder with progress tracking
let location: HotlineDownloadLocation = if let destination {
.url(destination)
@@ -1040,7 +1041,7 @@ class HotlineState: Equatable {
.downloads(folderName)
}
- folderURL = try await downloadClient.download(to: location, progress: { progress in
+ let folderURL = try await downloadClient.download(to: location, progress: { progress in
switch progress {
case .preparing:
break
@@ -1057,14 +1058,14 @@ class HotlineState: Equatable {
transfer.completed = true
transfer.fileURL = url
}
- }, itemProgress: { itemInfo in
- // Update transfer title with current file being downloaded
- transfer.title = "\(itemInfo.fileName) (\(itemInfo.itemNumber)/\(itemInfo.totalItems))"
- itemProgressCallback?(transfer, itemInfo.fileName, itemInfo.itemNumber, itemInfo.totalItems)
+ }, items: { item in
+ transfer.title = item.fileName
+ transfer.fileName = item.fileName
})
// Mark as completed
transfer.progress = 1.0
+ transfer.fileName = nil
transfer.title = folderName // Reset title to folder name
// Call completion callback
@@ -1174,6 +1175,7 @@ class HotlineState: Equatable {
serverName: self.serverName ?? self.serverTitle
)
transfer.isFolder = true
+ transfer.isUpload = true
transfer.uploadCallback = callback
transfer.progressCallback = progressCallback
AppState.shared.addTransfer(transfer)
@@ -1294,6 +1296,7 @@ class HotlineState: Equatable {
serverID: self.id,
serverName: self.serverName ?? self.serverTitle
)
+ transfer.isUpload = true
transfer.uploadCallback = callback
AppState.shared.addTransfer(transfer)