From 7532aa564c8ba3c0e92fbf0efa19cb4d07a449cb Mon Sep 17 00:00:00 2001 From: jellyfin-bot Date: Fri, 13 Aug 2021 23:57:00 +0000 Subject: [PATCH] [create-pull-request] automated change --- Shared/Errors/ErrorMessage.swift | 6 +-- Shared/Errors/NetworkError.swift | 45 +++++++++---------- .../ViewModels/ConnectToServerViewModel.swift | 2 +- Shared/ViewModels/DetailItemViewModel.swift | 2 +- Shared/ViewModels/LatestMediaViewModel.swift | 2 +- .../ViewModels/LibraryFilterViewModel.swift | 2 +- Shared/ViewModels/LibraryListViewModel.swift | 2 +- Shared/ViewModels/SeasonItemViewModel.swift | 2 +- Shared/ViewModels/SeriesItemViewModel.swift | 2 +- Shared/ViewModels/ViewModel.swift | 14 +++--- 10 files changed, 39 insertions(+), 40 deletions(-) diff --git a/Shared/Errors/ErrorMessage.swift b/Shared/Errors/ErrorMessage.swift index a1d74ff6..fab486f7 100644 --- a/Shared/Errors/ErrorMessage.swift +++ b/Shared/Errors/ErrorMessage.swift @@ -11,16 +11,16 @@ import Foundation import JellyfinAPI struct ErrorMessage: Identifiable { - + let code: Int let title: String let displayMessage: String let logConstructor: LogConstructor - + var id: String { return "\(code)\(title)\(logConstructor.message)" } - + /// If the custom displayMessage is `nil`, it will be set to the given logConstructor's message init(code: Int, title: String, displayMessage: String?, logConstructor: LogConstructor) { self.code = code diff --git a/Shared/Errors/NetworkError.swift b/Shared/Errors/NetworkError.swift index e4badaa6..10a3c2d2 100644 --- a/Shared/Errors/NetworkError.swift +++ b/Shared/Errors/NetworkError.swift @@ -10,7 +10,6 @@ import Foundation import JellyfinAPI - /** The implementation of the network errors here are a temporary measure. It is very repetitive, messy, and doesn't fulfill the entire specification of "error reporting". @@ -18,16 +17,16 @@ import JellyfinAPI */ enum NetworkError: Error { - + /// For the case that the ErrorResponse object has a code of -1 case URLError(response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) - + /// For the case that the ErrorRespones object has a code of -2 case HTTPURLError(response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) - + /// For the case that the ErrorResponse object has a positive code case JellyfinError(response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) - + var errorMessage: ErrorMessage { switch self { case .URLError(let response, let displayMessage, let logConstructor): @@ -38,11 +37,11 @@ enum NetworkError: Error { return NetworkError.parseJellyfinError(from: response, displayMessage: displayMessage, logConstructor: logConstructor) } } - + func logMessage() { let logConstructor = errorMessage.logConstructor let logFunction: (@autoclosure () -> String, String, String, String, UInt) -> Void - + switch logConstructor.level { case .trace: logFunction = LogManager.shared.log.trace @@ -59,19 +58,19 @@ enum NetworkError: Error { case ._none: logFunction = LogManager.shared.log.debug } - + logFunction(logConstructor.message, logConstructor.tag, logConstructor.function, logConstructor.file, logConstructor.line) } - + private static func parseURLError(from response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) -> ErrorMessage { - + let errorMessage: ErrorMessage var logMessage = "An error has occurred." var logConstructor = logConstructor - + switch response { case .error(_, _, _, let err): - + // These codes are currently referenced from: // https://developer.apple.com/documentation/foundation/1508628-url_loading_system_error_codes switch err._code { @@ -97,38 +96,38 @@ enum NetworkError: Error { logConstructor: logConstructor) } } - + return errorMessage } - + private static func parseHTTPURLError(from response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) -> ErrorMessage { - + let errorMessage: ErrorMessage let logMessage = "An HTTP URL error has occurred" var logConstructor = logConstructor - + // Not implemented as has not run into one of these errors as time of writing switch response { - case .error(_, _, _, _): + case .error: logConstructor.message = logMessage errorMessage = ErrorMessage(code: 0, title: "Error", displayMessage: displayMessage, logConstructor: logConstructor) } - + return errorMessage } - + private static func parseJellyfinError(from response: ErrorResponse, displayMessage: String?, logConstructor: LogConstructor) -> ErrorMessage { - + let errorMessage: ErrorMessage var logMessage = "An error has occurred." var logConstructor = logConstructor - + switch response { case .error(let code, _, _, _): - + // Generic HTTP status codes switch code { case 401: @@ -146,7 +145,7 @@ enum NetworkError: Error { logConstructor: logConstructor) } } - + return errorMessage } } diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index eca8a7b7..8799e06b 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -12,7 +12,7 @@ import Foundation import JellyfinAPI final class ConnectToServerViewModel: ViewModel { - + @Published var isConnectedServer = false var uriSubject = CurrentValueSubject("") diff --git a/Shared/ViewModels/DetailItemViewModel.swift b/Shared/ViewModels/DetailItemViewModel.swift index e87fca33..6ce0e099 100644 --- a/Shared/ViewModels/DetailItemViewModel.swift +++ b/Shared/ViewModels/DetailItemViewModel.swift @@ -12,7 +12,7 @@ import Foundation import JellyfinAPI class DetailItemViewModel: ViewModel { - + @Published var item: BaseItemDto @Published var similarItems: [BaseItemDto] = [] diff --git a/Shared/ViewModels/LatestMediaViewModel.swift b/Shared/ViewModels/LatestMediaViewModel.swift index 82b42cf1..6f791653 100644 --- a/Shared/ViewModels/LatestMediaViewModel.swift +++ b/Shared/ViewModels/LatestMediaViewModel.swift @@ -12,7 +12,7 @@ import Foundation import JellyfinAPI final class LatestMediaViewModel: ViewModel { - + @Published var items = [BaseItemDto]() var libraryID: String diff --git a/Shared/ViewModels/LibraryFilterViewModel.swift b/Shared/ViewModels/LibraryFilterViewModel.swift index bb2d0241..30cc442e 100644 --- a/Shared/ViewModels/LibraryFilterViewModel.swift +++ b/Shared/ViewModels/LibraryFilterViewModel.swift @@ -20,7 +20,7 @@ enum FilterType { } final class LibraryFilterViewModel: ViewModel { - + @Published var modifiedFilters = LibraryFilters() @Published var possibleGenres = [NameGuidPair]() diff --git a/Shared/ViewModels/LibraryListViewModel.swift b/Shared/ViewModels/LibraryListViewModel.swift index 5a546f94..1c85db9e 100644 --- a/Shared/ViewModels/LibraryListViewModel.swift +++ b/Shared/ViewModels/LibraryListViewModel.swift @@ -11,7 +11,7 @@ import Foundation import JellyfinAPI final class LibraryListViewModel: ViewModel { - + @Published var libraries = [BaseItemDto]() // temp diff --git a/Shared/ViewModels/SeasonItemViewModel.swift b/Shared/ViewModels/SeasonItemViewModel.swift index 67efab76..60a742a6 100644 --- a/Shared/ViewModels/SeasonItemViewModel.swift +++ b/Shared/ViewModels/SeasonItemViewModel.swift @@ -12,7 +12,7 @@ import Foundation import JellyfinAPI final class SeasonItemViewModel: DetailItemViewModel { - + @Published var episodes = [BaseItemDto]() override init(item: BaseItemDto) { diff --git a/Shared/ViewModels/SeriesItemViewModel.swift b/Shared/ViewModels/SeriesItemViewModel.swift index a05ebdbe..24b42084 100644 --- a/Shared/ViewModels/SeriesItemViewModel.swift +++ b/Shared/ViewModels/SeriesItemViewModel.swift @@ -12,7 +12,7 @@ import Foundation import JellyfinAPI final class SeriesItemViewModel: DetailItemViewModel { - + @Published var seasons = [BaseItemDto]() @Published var nextUpItem: BaseItemDto? diff --git a/Shared/ViewModels/ViewModel.swift b/Shared/ViewModels/ViewModel.swift index ad885955..aec46587 100644 --- a/Shared/ViewModels/ViewModel.swift +++ b/Shared/ViewModels/ViewModel.swift @@ -13,27 +13,27 @@ import ActivityIndicator import JellyfinAPI class ViewModel: ObservableObject { - + @Published var isLoading = true @Published var errorMessage: ErrorMessage? - + let loading = ActivityIndicator() var cancellables = Set() init() { loading.loading.assign(to: \.isLoading, on: self).store(in: &cancellables) } - + func handleAPIRequestError(displayMessage: String? = nil, logLevel: LogLevel = .error, tag: String = "", function: String = #function, file: String = #file, line: UInt = #line, completion: Subscribers.Completion) { switch completion { case .finished: break case .failure(let error): if let errorResponse = error as? ErrorResponse { - + let networkError: NetworkError let logConstructor = LogConstructor(message: "__NOTHING__", tag: tag, level: logLevel, function: function, file: file, line: line) - + switch errorResponse { case .error(-1, _, _, _): networkError = .URLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) @@ -47,9 +47,9 @@ class ViewModel: ObservableObject { // Able to use user-facing friendly description here since just HTTP status codes LogManager.shared.log.error("Request failed: \(networkError.errorMessage.code) - \(networkError.errorMessage.title): \(networkError.errorMessage.logConstructor.message)\n\(error.localizedDescription)") } - + self.errorMessage = networkError.errorMessage - + networkError.logMessage() } }