aboutsummaryrefslogtreecommitdiff
path: root/Hotline/State
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-13 11:13:01 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-13 11:13:01 -0800
commit467b53f143a0c3d7328fe85e9d1215eceb9b150a (patch)
treee8db83720021bc9361732d06ff539fcd42d72def /Hotline/State
parent5818df427f045f3aa54f648a0828c8d997327fbe (diff)
Start surfacing server errors properly to communicate permissions better.
Diffstat (limited to 'Hotline/State')
-rw-r--r--Hotline/State/HotlineState.swift32
1 files changed, 23 insertions, 9 deletions
diff --git a/Hotline/State/HotlineState.swift b/Hotline/State/HotlineState.swift
index 627b6a0..1f8e2e5 100644
--- a/Hotline/State/HotlineState.swift
+++ b/Hotline/State/HotlineState.swift
@@ -799,7 +799,7 @@ class HotlineState: Equatable {
self.users = hotlineUsers.map { User(hotlineUser: $0) }
}
- // MARK: - Files (Basic)
+ // MARK: - Files
@MainActor
@discardableResult
@@ -856,7 +856,7 @@ class HotlineState: Equatable {
}
@MainActor
- func deleteFile(_ fileName: String, path: [String]) async throws -> Bool {
+ func deleteFile(_ fileName: String, path: [String]) async throws {
guard let client = self.client else {
throw HotlineClientError.notConnected
}
@@ -865,14 +865,16 @@ class HotlineState: Equatable {
if path.count > 1 {
fullPath = Array(path[0..<path.count-1])
}
-
- let success = try await client.deleteFile(name: fileName, path: fullPath)
-
- if success {
+
+ do {
+ try await client.deleteFile(name: fileName, path: fullPath)
self.invalidateFileListCache(for: fullPath, includingAncestors: true)
}
-
- return success
+ catch let error as HotlineClientError {
+ self.errorMessage = error.userMessage
+ self.errorDisplayed = true
+ return
+ }
}
/// Download a file from the server.
@@ -1280,9 +1282,21 @@ class HotlineState: Equatable {
Task { @MainActor [weak self] in
guard let self else { return }
+
+ let referenceNumber: UInt32?
+
+ do {
+ referenceNumber = try await client.uploadFile(name: fileName, path: path)
+ }
+ catch let error as HotlineClientError {
+ self.errorMessage = error.userMessage
+ self.errorDisplayed = true
+ return
+ }
+
// Request upload from server
- guard let referenceNumber = try? await client.uploadFile(name: fileName, path: path),
+ guard let referenceNumber,
let server = self.server,
let address = server.address as String?,
let port = server.port as Int?