blob: bb94759717fc1490e38dea4c1df49aef33e884a6 (
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
34
35
36
37
38
39
40
41
42
|
//
// MullvadAccessMethodReceiver.swift
// MullvadRustRuntime
//
// Created by Marco Nikic on 2025-03-31.
// Copyright © 2025 Mullvad VPN AB. All rights reserved.
//
import Combine
import Foundation
import MullvadTypes
public class MullvadAccessMethodReceiver {
private var cancellables = Set<Combine.AnyCancellable>()
let apiContext: MullvadApiContext
public init(
apiContext: MullvadApiContext,
accessMethodsDataSource: AnyPublisher<[PersistentAccessMethod], Never>,
requestDataSource: AnyPublisher<PersistentAccessMethod, Never>
) {
self.apiContext = apiContext
requestDataSource.sink { [weak self] latestReachable in
self?.saveLastReachable(latestReachable)
}
.store(in: &cancellables)
accessMethodsDataSource.sink { [weak self] in
self?.updateAccessMethods($0)
}.store(in: &cancellables)
}
private func saveLastReachable(_ lastReachable: PersistentAccessMethod) {
mullvad_api_use_access_method(apiContext.context, lastReachable.id.uuidString)
}
private func updateAccessMethods(_ accessMethods: [PersistentAccessMethod]) {
let settingsWrapper = initAccessMethodSettingsWrapper(methods: accessMethods)
mullvad_api_update_access_methods(apiContext.context, settingsWrapper)
}
}
|