From 732041b6c4b5f1a7f75672d04415a43f8c8196de Mon Sep 17 00:00:00 2001 From: noppe Date: Sun, 30 May 2021 16:08:20 +0900 Subject: [PATCH] fix: data drop when out of table --- Example/Shared/CustomComplication.swift | 12 +++++++++--- .../DebugMenu/Entity/ComplicationPresentable.swift | 1 + .../Plugin/Complication/CPUGraphComplication.swift | 9 +++++---- .../Plugin/Complication/CPUUsageComplication.swift | 12 +++++++++--- .../Plugin/Complication/FPSComplication.swift | 8 ++++++-- .../Complication/GPUMemoryUsageComplication.swift | 12 +++++++++--- .../Plugin/Complication/IntervalComplication.swift | 5 +++++ .../Complication/MemoryUsageComplication.swift | 12 +++++++++--- .../Complication/NetworkUsageComplication.swift | 8 ++++++-- Sources/DebugMenu/View/WidgetView.swift | 1 + 10 files changed, 60 insertions(+), 20 deletions(-) diff --git a/Example/Shared/CustomComplication.swift b/Example/Shared/CustomComplication.swift index 23bb921..15ca304 100644 --- a/Example/Shared/CustomComplication.swift +++ b/Example/Shared/CustomComplication.swift @@ -9,12 +9,18 @@ import DebugMenu public class CustomComplication: ComplicationPresentable { public init() {} + public var title: String = "Date" + private var text: String = "" public func startMonitoring() {} public func stopMonitoring() {} - public let fetcher: MetricsFetcher = .text { + public func update() { let formatter = DateFormatter() formatter.dateFormat = "HH:mm:ss" - return formatter.string(from: Date()) + text = formatter.string(from: Date()) + } + public var fetcher: MetricsFetcher { + .text { [weak self] in + self?.text ?? "" + } } - public var title: String = "Date" } diff --git a/Sources/DebugMenu/Entity/ComplicationPresentable.swift b/Sources/DebugMenu/Entity/ComplicationPresentable.swift index 83cee7a..8351e8d 100644 --- a/Sources/DebugMenu/Entity/ComplicationPresentable.swift +++ b/Sources/DebugMenu/Entity/ComplicationPresentable.swift @@ -11,6 +11,7 @@ public protocol ComplicationPresentable { var title: String { get } func startMonitoring() func stopMonitoring() + func update() var fetcher: MetricsFetcher { get } } diff --git a/Sources/DebugMenu/Plugin/Complication/CPUGraphComplication.swift b/Sources/DebugMenu/Plugin/Complication/CPUGraphComplication.swift index 0a9fecc..c704218 100644 --- a/Sources/DebugMenu/Plugin/Complication/CPUGraphComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/CPUGraphComplication.swift @@ -13,12 +13,13 @@ public class CPUGraphComplication: ComplicationPresentable { private var data: [Double] = [] public func startMonitoring() {} public func stopMonitoring() {} + public func update() { + let metrics = Device.current.cpuUsage() + data.append(Double(metrics * 100.0)) + } public var fetcher: MetricsFetcher { .graph { [weak self] in - guard let self = self else { return [] } - let metrics = Device.current.cpuUsage() - self.data.append(Double(metrics * 100.0)) - return self.data + self?.data ?? [] } } } diff --git a/Sources/DebugMenu/Plugin/Complication/CPUUsageComplication.swift b/Sources/DebugMenu/Plugin/Complication/CPUUsageComplication.swift index 729f2dd..dec9f8f 100644 --- a/Sources/DebugMenu/Plugin/Complication/CPUUsageComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/CPUUsageComplication.swift @@ -7,13 +7,19 @@ import Foundation -public struct CPUUsageComplication: ComplicationPresentable { +public class CPUUsageComplication: ComplicationPresentable { public init() {} public let title: String = "CPU" + private var text: String = "" public func startMonitoring() {} public func stopMonitoring() {} - public let fetcher: MetricsFetcher = .text { - Device.current.localizedCPUUsage + public func update() { + text = Device.current.localizedCPUUsage + } + public var fetcher: MetricsFetcher { + .text { [weak self] in + self?.text ?? "" + } } } diff --git a/Sources/DebugMenu/Plugin/Complication/FPSComplication.swift b/Sources/DebugMenu/Plugin/Complication/FPSComplication.swift index e33c83c..56f7195 100644 --- a/Sources/DebugMenu/Plugin/Complication/FPSComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/FPSComplication.swift @@ -18,7 +18,7 @@ public class FPSComplication: ComplicationPresentable { public init() {} public func startMonitoring() { - displayLink = .init(target: self, selector: #selector(update)) + displayLink = .init(target: self, selector: #selector(updateDisplayLink)) displayLink?.preferredFramesPerSecond = 0 displayLink?.add(to: .main, forMode: .common) } @@ -29,7 +29,7 @@ public class FPSComplication: ComplicationPresentable { displayLink = nil } - @objc func update(_ displayLink: CADisplayLink) { + @objc func updateDisplayLink(_ displayLink: CADisplayLink) { if displayLink.timestamp - lastupdated > 1.0 { currentFPS = updateCount updateCount = 1 @@ -39,6 +39,10 @@ public class FPSComplication: ComplicationPresentable { } } + public func update() { + + } + public var fetcher: MetricsFetcher { .text { [weak self] in guard let self = self else { return "-" } diff --git a/Sources/DebugMenu/Plugin/Complication/GPUMemoryUsageComplication.swift b/Sources/DebugMenu/Plugin/Complication/GPUMemoryUsageComplication.swift index 9ceede1..b781186 100644 --- a/Sources/DebugMenu/Plugin/Complication/GPUMemoryUsageComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/GPUMemoryUsageComplication.swift @@ -7,13 +7,19 @@ import Foundation -public struct GPUMemoryUsageComplication: ComplicationPresentable { +public class GPUMemoryUsageComplication: ComplicationPresentable { public init() {} public let title: String = "GPU MEM" + private var text: String = "" public func startMonitoring() {} public func stopMonitoring() {} - public let fetcher: MetricsFetcher = .text { - Device.current.localizedGPUMemory + public func update() { + text = Device.current.localizedGPUMemory + } + public var fetcher: MetricsFetcher { + .text { [weak self] in + self?.text ?? "" + } } } diff --git a/Sources/DebugMenu/Plugin/Complication/IntervalComplication.swift b/Sources/DebugMenu/Plugin/Complication/IntervalComplication.swift index bff1e16..583fb03 100644 --- a/Sources/DebugMenu/Plugin/Complication/IntervalComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/IntervalComplication.swift @@ -26,10 +26,15 @@ public class IntervalComplication: ComplicationPresentable { } }.store(in: &cancellables) } + public func stopMonitoring() { cancellables = [] } + public func update() { + + } + public var fetcher: MetricsFetcher { .interval { [weak self] in guard let self = self else { return [] } diff --git a/Sources/DebugMenu/Plugin/Complication/MemoryUsageComplication.swift b/Sources/DebugMenu/Plugin/Complication/MemoryUsageComplication.swift index 9c2c538..3d527e6 100644 --- a/Sources/DebugMenu/Plugin/Complication/MemoryUsageComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/MemoryUsageComplication.swift @@ -7,12 +7,18 @@ import Foundation -public struct MemoryUsageComplication: ComplicationPresentable { +public class MemoryUsageComplication: ComplicationPresentable { public init() {} public let title: String = "MEM" + private var text: String = "" public func startMonitoring() {} public func stopMonitoring() {} - public let fetcher: MetricsFetcher = .text { - Device.current.localizedMemoryUsage + public func update() { + text = Device.current.localizedMemoryUsage + } + public var fetcher: MetricsFetcher { + .text { [weak self] in + self?.text ?? "" + } } } diff --git a/Sources/DebugMenu/Plugin/Complication/NetworkUsageComplication.swift b/Sources/DebugMenu/Plugin/Complication/NetworkUsageComplication.swift index 16b6dd7..a9d8e25 100644 --- a/Sources/DebugMenu/Plugin/Complication/NetworkUsageComplication.swift +++ b/Sources/DebugMenu/Plugin/Complication/NetworkUsageComplication.swift @@ -19,7 +19,7 @@ public class NetworkUsageComplication: ComplicationPresentable { public func startMonitoring() { Timer.publish(every: 1, on: .main, in: .default).autoconnect().sink { [weak self] _ in - self?.update() + self?.updateNetworkUsage() }.store(in: &cancellables) } @@ -27,7 +27,7 @@ public class NetworkUsageComplication: ComplicationPresentable { cancellables = [] } - private func update() { + private func updateNetworkUsage() { let networkUsage = Device.current.networkUsage() if let lastUsage = lastNetworkUsage, let newUsage = networkUsage { sendPerSec = newUsage.sent - lastUsage.sent @@ -36,6 +36,10 @@ public class NetworkUsageComplication: ComplicationPresentable { lastNetworkUsage = networkUsage } + public func update() { + + } + public var fetcher: MetricsFetcher { .text { [weak self] in guard let self = self else { return "-" } diff --git a/Sources/DebugMenu/View/WidgetView.swift b/Sources/DebugMenu/View/WidgetView.swift index fd8a63f..31440ce 100644 --- a/Sources/DebugMenu/View/WidgetView.swift +++ b/Sources/DebugMenu/View/WidgetView.swift @@ -61,6 +61,7 @@ class WidgetView: UIVisualEffectView { } private func reloadData() { + complications.forEach({ $0.update() }) tableView.reloadData() } }