64 lines
2.0 KiB
Swift
64 lines
2.0 KiB
Swift
|
//
|
||
|
// AccountError.swift
|
||
|
// Account
|
||
|
//
|
||
|
// Created by Maurice Parker on 5/26/19.
|
||
|
// Copyright © 2019 Ranchero Software, LLC. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
import RSWeb
|
||
|
|
||
|
public enum AccountError: LocalizedError {
|
||
|
|
||
|
case createErrorNotFound
|
||
|
case createErrorAlreadySubscribed
|
||
|
case opmlImportInProgress
|
||
|
case wrappedError(error: Error, account: Account)
|
||
|
|
||
|
public var errorDescription: String? {
|
||
|
switch self {
|
||
|
case .opmlImportInProgress:
|
||
|
return NSLocalizedString("An OPML import for this account is already running.", comment: "Import running")
|
||
|
case .wrappedError(let error, let account):
|
||
|
switch error {
|
||
|
case TransportError.httpError(let status):
|
||
|
if status == 401 {
|
||
|
let localizedText = NSLocalizedString("Your \"%@\" credentials are invalid or expired.", comment: "Invalid or expired")
|
||
|
return NSString.localizedStringWithFormat(localizedText as NSString, account.nameForDisplay) as String
|
||
|
} else {
|
||
|
return unknownError(error, account)
|
||
|
}
|
||
|
default:
|
||
|
return unknownError(error, account)
|
||
|
}
|
||
|
default:
|
||
|
return NSLocalizedString("An unknown error occurred.", comment: "Unknown error")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public var recoverySuggestion: String? {
|
||
|
switch self {
|
||
|
case .wrappedError(let error, _):
|
||
|
switch error {
|
||
|
case TransportError.httpError(let status):
|
||
|
if status == 401 {
|
||
|
return NSLocalizedString("Please update your credentials for this account.", comment: "Try later")
|
||
|
} else {
|
||
|
return NSLocalizedString("Please try again later.", comment: "Try later")
|
||
|
}
|
||
|
default:
|
||
|
return NSLocalizedString("Please try again later.", comment: "Try later")
|
||
|
}
|
||
|
default:
|
||
|
return NSLocalizedString("Please try again later.", comment: "Try later")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private func unknownError(_ error: Error, _ account: Account) -> String {
|
||
|
let localizedText = NSLocalizedString("An error occurred while processing the \"%@\" account: %@", comment: "Unknown error")
|
||
|
return NSString.localizedStringWithFormat(localizedText as NSString, account.nameForDisplay, error.localizedDescription) as String
|
||
|
}
|
||
|
|
||
|
}
|