70 lines
2.3 KiB
Swift
70 lines
2.3 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 .createErrorNotFound:
|
|
return NSLocalizedString("The feed couldn't be found and can't be added.", comment: "Not found")
|
|
case .createErrorAlreadySubscribed:
|
|
return NSLocalizedString("You are already subscribed to this feed and can't add it again.", comment: "Already subscribed")
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
|
|
public var recoverySuggestion: String? {
|
|
switch self {
|
|
case .createErrorNotFound:
|
|
return nil
|
|
case .createErrorAlreadySubscribed:
|
|
return nil
|
|
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
|
|
}
|
|
|
|
}
|