|
- import Foundation
-
- // MARK: - Network Errors
-
- enum NetworkError: Error {
- case noConnectionError
- }
-
- extension NetworkError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .noConnectionError:
- return NSLocalizedString(
- "There is no internet connection at the moment. Please reconnect or try again later.",
- comment: ""
- )
- }
- }
- }
-
- // MARK: - Keychain Errors
-
- enum KeychainError: Error {
- case couldNotStoreAccessToken
- case couldNotPurgeAccessToken
- case couldNotFetchAccessToken
- }
-
- extension KeychainError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .couldNotStoreAccessToken:
- return NSLocalizedString("There was a problem storing your access token in the Keychain.", comment: "")
- case .couldNotPurgeAccessToken:
- return NSLocalizedString("Something went wrong purging the token from the Keychain.", comment: "")
- case .couldNotFetchAccessToken:
- return NSLocalizedString("Something went wrong fetching the token from the Keychain.", comment: "")
- }
- }
- }
-
- // MARK: - Account Errors
-
- enum AccountError: Error {
- case invalidPassword
- case usernameNotFound
- case serverNotFound
- case invalidServerURL
- case unknownLoginError
- case genericAuthError
- }
-
- extension AccountError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .serverNotFound:
- return NSLocalizedString(
- "The server could not be found. Please check the information you've entered and try again.",
- comment: ""
- )
- case .invalidPassword:
- return NSLocalizedString(
- "Invalid password. Please check that you've entered your password correctly and try logging in again.",
- comment: ""
- )
- case .usernameNotFound:
- return NSLocalizedString(
- "Username not found. Did you use your email address by mistake?",
- comment: ""
- )
- case .invalidServerURL:
- return NSLocalizedString(
- "Please enter a valid instance domain name. It should look like \"https://example.com\" or \"write.as\".", // swiftlint:disable:this line_length
- comment: ""
- )
- case .genericAuthError:
- return NSLocalizedString("Something went wrong, please try logging in again.", comment: "")
- case .unknownLoginError:
- return NSLocalizedString("An unknown error occurred while trying to login.", comment: "")
- }
- }
- }
-
- // MARK: - User Defaults Errors
-
- enum UserDefaultsError: Error {
- case couldNotMigrateStandardDefaults
- }
-
- extension UserDefaultsError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .couldNotMigrateStandardDefaults:
- return NSLocalizedString("Could not migrate user defaults to group container", comment: "")
- }
- }
- }
-
- // MARK: - Local Store Errors
-
- enum LocalStoreError: Error {
- case couldNotSaveContext
- case couldNotFetchCollections
- case couldNotFetchPosts(String = "")
- case couldNotPurgePosts(String = "")
- case couldNotPurgeCollections
- case couldNotLoadStore(String)
- case couldNotMigrateStore(String)
- case couldNotDeleteStoreAfterMigration(String)
- case genericError(String = "")
- }
-
- extension LocalStoreError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .couldNotSaveContext:
- return NSLocalizedString("Error saving context", comment: "")
- case .couldNotFetchCollections:
- return NSLocalizedString("Failed to fetch blogs from local store.", comment: "")
- case .couldNotFetchPosts(let postFilter):
- if postFilter.isEmpty {
- return NSLocalizedString("Failed to fetch posts from local store.", comment: "")
- } else {
- return NSLocalizedString("Failed to fetch \(postFilter) posts from local store.", comment: "")
- }
- case .couldNotPurgePosts(let postFilter):
- if postFilter.isEmpty {
- return NSLocalizedString("Failed to purge \(postFilter) posts from local store.", comment: "")
- } else {
- return NSLocalizedString("Failed to purge posts from local store.", comment: "")
- }
- case .couldNotPurgeCollections:
- return NSLocalizedString("Failed to purge cached collections", comment: "")
- case .couldNotLoadStore(let errorDescription):
- return NSLocalizedString("Something went wrong loading local store: \(errorDescription)", comment: "")
- case .couldNotMigrateStore(let errorDescription):
- return NSLocalizedString("Something went wrong migrating local store: \(errorDescription)", comment: "")
- case .couldNotDeleteStoreAfterMigration(let errorDescription):
- return NSLocalizedString("Something went wrong deleting old store: \(errorDescription)", comment: "")
- case .genericError(let customContent):
- if customContent.isEmpty {
- return NSLocalizedString("Something went wrong accessing device storage", comment: "")
- } else {
- return NSLocalizedString(customContent, comment: "")
- }
- }
- }
- }
-
- // MARK: - Application Errors
-
- enum AppError: Error {
- case couldNotGetLoggedInClient
- case couldNotGetPostId
- case genericError(String = "")
- }
-
- extension AppError: LocalizedError {
- public var errorDescription: String? {
- switch self {
- case .couldNotGetLoggedInClient:
- return NSLocalizedString("Something went wrong trying to access the WriteFreely client.", comment: "")
- case .couldNotGetPostId:
- return NSLocalizedString("Something went wrong trying to get the post's unique ID.", comment: "")
- case .genericError(let customContent):
- if customContent.isEmpty {
- return NSLocalizedString("Something went wrong", comment: "")
- } else {
- return NSLocalizedString(customContent, comment: "")
- }
- }
- }
- }
|