summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/Operations/OperationBlockObserver.swift
blob: 728e9a5a02ebf2c4d210988f1291eafee53e529f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//
//  OperationBlockObserver.swift
//  MullvadVPN
//
//  Created by pronebird on 06/07/2020.
//  Copyright © 2020 Mullvad VPN AB. All rights reserved.
//

import Foundation

class OperationBlockObserver<OperationType: OperationProtocol>: OperationObserver {
    private var willFinish: ((OperationType) -> Void)?
    private var didFinish: ((OperationType) -> Void)?

    init(willFinish: ((OperationType) -> Void)? = nil, didFinish: ((OperationType) -> Void)? = nil) {
        self.willFinish = willFinish
        self.didFinish = didFinish
    }

    func operationWillFinish(_ operation: OperationType) {
        self.willFinish?(operation)
    }

    func operationDidFinish(_ operation: OperationType) {
        self.didFinish?(operation)
    }
}

extension OperationProtocol {
    func addDidFinishBlockObserver(_ block: @escaping (Self) -> Void) {
        addObserver(OperationBlockObserver(didFinish: block))
    }
}