diff options
| author | Dustin Mierau <dustin@mierau.me> | 2025-11-13 11:13:01 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2025-11-13 11:13:01 -0800 |
| commit | 467b53f143a0c3d7328fe85e9d1215eceb9b150a (patch) | |
| tree | e8db83720021bc9361732d06ff539fcd42d72def /Hotline/State | |
| parent | 5818df427f045f3aa54f648a0828c8d997327fbe (diff) | |
Start surfacing server errors properly to communicate permissions better.
Diffstat (limited to 'Hotline/State')
| -rw-r--r-- | Hotline/State/HotlineState.swift | 32 |
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? |