summaryrefslogtreecommitdiffhomepage
path: root/ios/SpeedConnection/SpeedConnectionViewModel.swift
diff options
context:
space:
mode:
Diffstat (limited to 'ios/SpeedConnection/SpeedConnectionViewModel.swift')
-rw-r--r--ios/SpeedConnection/SpeedConnectionViewModel.swift41
1 files changed, 41 insertions, 0 deletions
diff --git a/ios/SpeedConnection/SpeedConnectionViewModel.swift b/ios/SpeedConnection/SpeedConnectionViewModel.swift
new file mode 100644
index 0000000000..a06e857cc4
--- /dev/null
+++ b/ios/SpeedConnection/SpeedConnectionViewModel.swift
@@ -0,0 +1,41 @@
+//
+// SpeedConnectionViewModel.swift
+// MullvadVPN
+//
+// Created by Mojgan on 2026-04-23.
+// Copyright © 2026 Mullvad VPN AB. All rights reserved.
+//
+
+import Combine
+
+protocol SpeedConnectionViewModelProtocol: ObservableObject {
+ var uploadValue: Double { get }
+ var downloadValue: Double { get }
+
+ func startMonitoring()
+ func stopMonitoring()
+}
+
+
+class SpeedConnectionViewModel: SpeedConnectionViewModelProtocol,@unchecked Sendable {
+ @Published var uploadValue: Double = 0.0
+ @Published var downloadValue: Double = 0.0
+ var networkSpeedMonitor : NetworkSpeedMonitorProtocol
+
+ init(networkSpeedMonitor : NetworkSpeedMonitorProtocol) {
+ self.networkSpeedMonitor = networkSpeedMonitor
+ self.networkSpeedMonitor.onUpdateTrafficSummery = { [weak self] trafficSummery in
+ Task { @MainActor in
+ self?.uploadValue = trafficSummery.speed.sent
+ self?.downloadValue = trafficSummery.speed.received
+ }
+ }
+ }
+ func startMonitoring() {
+ self.networkSpeedMonitor.start(timeInterval: 1.0)
+ }
+
+ func stopMonitoring() {
+ self.networkSpeedMonitor.stop()
+ }
+}