summaryrefslogtreecommitdiffhomepage
path: root/ios/Operations/OperationCompletion.swift
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-02-13 14:24:18 +0100
committerAndrej Mihajlov <and@mullvad.net>2023-02-28 14:03:15 +0100
commit0e2300104d4578984529ab76e86ea7e4955b642d (patch)
tree7f490b0d602aafa85157e9e795119919be8289ad /ios/Operations/OperationCompletion.swift
parentf2e71de32cde3c8c29dc12349b1d1e147fbc6296 (diff)
downloadmullvadvpn-0e2300104d4578984529ab76e86ea7e4955b642d.tar.xz
mullvadvpn-0e2300104d4578984529ab76e86ea7e4955b642d.zip
Replace OperationCompletion with Result
Error is set to OperationError.cancelled if operation is cancelled.
Diffstat (limited to 'ios/Operations/OperationCompletion.swift')
-rw-r--r--ios/Operations/OperationCompletion.swift159
1 files changed, 0 insertions, 159 deletions
diff --git a/ios/Operations/OperationCompletion.swift b/ios/Operations/OperationCompletion.swift
deleted file mode 100644
index 49a34e0884..0000000000
--- a/ios/Operations/OperationCompletion.swift
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-// OperationCompletion.swift
-// Operations
-//
-// Created by pronebird on 24/01/2022.
-// Copyright © 2022 Mullvad VPN AB. All rights reserved.
-//
-
-import Foundation
-
-public enum OperationCompletion<Success, Failure: Error> {
- case cancelled
- case success(Success)
- case failure(Failure)
-
- public var isSuccess: Bool {
- if case .success = self {
- return true
- } else {
- return false
- }
- }
-
- public var value: Success? {
- if case let .success(value) = self {
- return value
- } else {
- return nil
- }
- }
-
- public var error: Failure? {
- if case let .failure(error) = self {
- return error
- } else {
- return nil
- }
- }
-
- public var result: Result<Success, Failure>? {
- switch self {
- case let .success(value):
- return .success(value)
- case let .failure(error):
- return .failure(error)
- case .cancelled:
- return nil
- }
- }
-
- public init(result: Result<Success, Failure>) {
- switch result {
- case let .success(value):
- self = .success(value)
- case let .failure(error):
- self = .failure(error)
- }
- }
-
- public init(error: Failure?) where Success == Void {
- if let error = error {
- self = .failure(error)
- } else {
- self = .success(())
- }
- }
-
- public func get() throws -> Success {
- if let result = result {
- return try result.get()
- } else {
- throw OperationCancellationError()
- }
- }
-
- public func map<NewSuccess>(_ block: (Success) -> NewSuccess)
- -> OperationCompletion<NewSuccess, Failure>
- {
- switch self {
- case let .success(value):
- return .success(block(value))
- case let .failure(error):
- return .failure(error)
- case .cancelled:
- return .cancelled
- }
- }
-
- public func mapError<NewFailure: Error>(_ block: (Failure) -> NewFailure)
- -> OperationCompletion<Success, NewFailure>
- {
- switch self {
- case let .success(value):
- return .success(value)
- case let .failure(error):
- return .failure(block(error))
- case .cancelled:
- return .cancelled
- }
- }
-
- public func flatMap<NewSuccess>(_ block: (Success) -> OperationCompletion<NewSuccess, Failure>)
- -> OperationCompletion<NewSuccess, Failure>
- {
- switch self {
- case let .success(value):
- return block(value)
- case let .failure(error):
- return .failure(error)
- case .cancelled:
- return .cancelled
- }
- }
-
- public func flatMapError<NewFailure: Error>(
- _ block: (Failure)
- -> OperationCompletion<Success, NewFailure>
- ) -> OperationCompletion<Success, NewFailure> {
- switch self {
- case let .success(value):
- return .success(value)
- case let .failure(error):
- return block(error)
- case .cancelled:
- return .cancelled
- }
- }
-
- public func tryMap<NewSuccess>(_ block: (Success) throws -> NewSuccess)
- -> OperationCompletion<NewSuccess, Error>
- {
- switch self {
- case let .success(value):
- do {
- return .success(try block(value))
- } catch {
- return .failure(error)
- }
- case let .failure(error):
- return .failure(error)
- case .cancelled:
- return .cancelled
- }
- }
-
- public func ignoreOutput() -> OperationCompletion<Void, Failure> {
- return map { _ in () }
- }
-
- public func eraseFailureType() -> OperationCompletion<Success, Error> {
- return mapError { $0 }
- }
-}
-
-public struct OperationCancellationError: LocalizedError {
- public var errorDescription: String? {
- return "Operation was cancelled."
- }
-}