From a0c1aae065d757fe4032203e7d7be8860010d42b Mon Sep 17 00:00:00 2001 From: Kevin Cramer Date: Thu, 8 Dec 2022 17:05:11 +0000 Subject: [PATCH] Log decoding errors (#630) --- Shared/ViewModels/ViewModel.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Shared/ViewModels/ViewModel.swift b/Shared/ViewModels/ViewModel.swift index a30429f7..16e254af 100644 --- a/Shared/ViewModels/ViewModel.swift +++ b/Shared/ViewModels/ViewModel.swift @@ -50,6 +50,21 @@ class ViewModel: ObservableObject { networkError = .HTTPURLError(response: errorResponse, displayMessage: displayMessage) logger .error("Request failed: HTTP URL request failed with description: \(errorResponse.localizedDescription)") + + case let .error(_, _, _, baseError as DecodingError): + networkError = .JellyfinError(response: errorResponse, displayMessage: displayMessage) + if case let .dataCorrupted(decodeContext) = baseError { + let codingPath = decodeContext.codingPath.map(\.stringValue).joined(separator: ",") + let underlyingError = decodeContext.debugDescription + logger + .error( + "Request failed: JSON Decoding failed: Underlying Error: \(underlyingError) - Coding Path: [\(codingPath)]" + ) + } else { + logger + .error("Request failed: JSON Decoding failed!") + } + default: networkError = .JellyfinError(response: errorResponse, displayMessage: displayMessage) // Able to use user-facing friendly description here since just HTTP status codes