From f05867befb8ea195844fabd3098dadf9243ff103 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 13 May 2021 20:54:33 -0500 Subject: [PATCH] Improve the FreshRSS error message when the API URL isn't found. Fixes #3061 --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 22 +++++++++++++++---- .../Account/ReaderAPI/ReaderAPICaller.swift | 6 ++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 6745403b1..7d36cb5be 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -14,10 +14,24 @@ import SyncDatabase import os.log import Secrets -public enum ReaderAPIAccountDelegateError: String, Error { - case unknown = "An unknown error occurred." - case invalidParameter = "There was an invalid parameter passed." - case invalidResponse = "There was an invalid response from the server." +public enum ReaderAPIAccountDelegateError: LocalizedError { + case unknown + case invalidParameter + case invalidResponse + case urlNotFound + + public var errorDescription: String? { + switch self { + case .unknown: + return NSLocalizedString("An unexpected error occurred.", comment: "An unexpected error occurred.") + case .invalidParameter: + return NSLocalizedString("An invalid parameter was passed.", comment: "An invalid parameter was passed.") + case .invalidResponse: + return NSLocalizedString("There was an invalid response from the server.", comment: "There was an invalid response from the server.") + case .urlNotFound: + return NSLocalizedString("The API URL wasn't found.", comment: "The API URL wasn't found.") + } + } } final class ReaderAPIAccountDelegate: AccountDelegate { diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift b/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift index 4e9f1b0c1..805fd3b8d 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPICaller.swift @@ -132,7 +132,11 @@ final class ReaderAPICaller: NSObject { completion(.success(self.credentials)) case .failure(let error): - completion(.failure(error)) + if let transportError = error as? TransportError, case .httpError(let code) = transportError, code == 404 { + completion(.failure(ReaderAPIAccountDelegateError.urlNotFound)) + } else { + completion(.failure(error)) + } } }