diff --git a/Packages/Pachyderm/Sources/Pachyderm/Client.swift b/Packages/Pachyderm/Sources/Pachyderm/Client.swift index 9621337d..85d4e4b0 100644 --- a/Packages/Pachyderm/Sources/Pachyderm/Client.swift +++ b/Packages/Pachyderm/Sources/Pachyderm/Client.swift @@ -85,7 +85,7 @@ public class Client { } guard response.statusCode == 200 else { let mastodonError = try? Client.decoder.decode(MastodonError.self, from: data) - let type: ErrorType = mastodonError.flatMap { .mastodonError($0.description) } ?? .unexpectedStatus(response.statusCode) + let type: ErrorType = mastodonError.flatMap { .mastodonError(response.statusCode, $0.description) } ?? .unexpectedStatus(response.statusCode) completion(.failure(Error(request: request, type: type))) return } @@ -462,8 +462,8 @@ extension Client { return "Invalid Response" case .invalidModel(_): return "Invalid Model" - case .mastodonError(let error): - return "Server Error: \(error)" + case .mastodonError(let code, let error): + return "Server Error (\(code)): \(error)" } } } @@ -473,6 +473,6 @@ extension Client { case invalidRequest case invalidResponse case invalidModel(Swift.Error) - case mastodonError(String) + case mastodonError(Int, String) } } diff --git a/Tusker/Views/Toast/ToastConfiguration.swift b/Tusker/Views/Toast/ToastConfiguration.swift index 44e5ad05..e55f839e 100644 --- a/Tusker/Views/Toast/ToastConfiguration.swift +++ b/Tusker/Views/Toast/ToastConfiguration.swift @@ -57,7 +57,7 @@ extension ToastConfiguration { } // TODO: this is a bizarre place to do this, but code path covers basically all errors switch error.type { - case .invalidRequest, .invalidResponse, .invalidModel(_), .mastodonError(_): + case .invalidRequest, .invalidResponse, .invalidModel(_), .mastodonError(_, _): let event = Event(error: error) event.message = SentryMessage(formatted: "\(title): \(error)") event.tags = [ @@ -72,8 +72,9 @@ extension ToastConfiguration { case .invalidModel(let error): event.tags!["error_type"] = "invalid_model" event.tags!["underlying_error"] = String(describing: error) - case .mastodonError(let error): + case .mastodonError(let code, let error): event.tags!["error_type"] = "mastodon_error" + event.tags!["response_code"] = "\(code)" event.tags!["underlying_error"] = error default: break