[create-pull-request] automated change

This commit is contained in:
jellyfin-bot 2021-08-13 23:57:00 +00:00 committed by GitHub
parent 5a96120722
commit 7532aa564c
10 changed files with 39 additions and 40 deletions

View File

@ -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

View File

@ -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
}
}

View File

@ -12,7 +12,7 @@ import Foundation
import JellyfinAPI
final class ConnectToServerViewModel: ViewModel {
@Published var isConnectedServer = false
var uriSubject = CurrentValueSubject<String, Never>("")

View File

@ -12,7 +12,7 @@ import Foundation
import JellyfinAPI
class DetailItemViewModel: ViewModel {
@Published var item: BaseItemDto
@Published var similarItems: [BaseItemDto] = []

View File

@ -12,7 +12,7 @@ import Foundation
import JellyfinAPI
final class LatestMediaViewModel: ViewModel {
@Published var items = [BaseItemDto]()
var libraryID: String

View File

@ -20,7 +20,7 @@ enum FilterType {
}
final class LibraryFilterViewModel: ViewModel {
@Published var modifiedFilters = LibraryFilters()
@Published var possibleGenres = [NameGuidPair]()

View File

@ -11,7 +11,7 @@ import Foundation
import JellyfinAPI
final class LibraryListViewModel: ViewModel {
@Published var libraries = [BaseItemDto]()
// temp

View File

@ -12,7 +12,7 @@ import Foundation
import JellyfinAPI
final class SeasonItemViewModel: DetailItemViewModel {
@Published var episodes = [BaseItemDto]()
override init(item: BaseItemDto) {

View File

@ -12,7 +12,7 @@ import Foundation
import JellyfinAPI
final class SeriesItemViewModel: DetailItemViewModel {
@Published var seasons = [BaseItemDto]()
@Published var nextUpItem: BaseItemDto?

View File

@ -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<AnyCancellable>()
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<Error>) {
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()
}
}