From c7a1a92490561eb9be84c44675439ac7c28e2bba Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Fri, 15 Jul 2022 17:36:38 +0200 Subject: [PATCH] fix: fixed disks duplicating on startup (could also happen with Bluetooth and GPU devices) --- Modules/Bluetooth/popup.swift | 2 +- Modules/Disk/popup.swift | 7 +++---- Modules/GPU/popup.swift | 6 ++---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Modules/Bluetooth/popup.swift b/Modules/Bluetooth/popup.swift index abf105f2..93e5fe2d 100644 --- a/Modules/Bluetooth/popup.swift +++ b/Modules/Bluetooth/popup.swift @@ -49,7 +49,7 @@ internal class Popup: NSStackView, Popup_p { } list.reversed().forEach { (ble: BLEDevice) in - if let view = views.first(where: { $0.address == ble.address }) { + if let view = self.subviews.filter({ $0 is BLEView }).map({ $0 as! BLEView }).first(where: { $0.address == ble.address }) { view.update(ble.batteryLevel) } else { self.addArrangedSubview(BLEView( diff --git a/Modules/Disk/popup.swift b/Modules/Disk/popup.swift index 79303936..300a9771 100644 --- a/Modules/Disk/popup.swift +++ b/Modules/Disk/popup.swift @@ -43,15 +43,14 @@ internal class Popup: NSStackView, Popup_p { } } - let views = self.subviews.filter{ $0 is DiskView }.map{ $0 as! DiskView } - views.forEach { (v: DiskView) in - if !value.map({$0.mediaName}).contains(v.name) { + self.subviews.filter{ $0 is DiskView }.map{ $0 as! DiskView }.forEach { (v: DiskView) in + if !value.map({$0.BSDName}).contains(v.BSDName) { v.removeFromSuperview() } } value.forEach { (drive: drive) in - if let view = views.first(where: { $0.BSDName == drive.BSDName }) { + if let view = self.subviews.filter({ $0 is DiskView }).map({ $0 as! DiskView }).first(where: { $0.BSDName == drive.BSDName }) { view.updateFree(free: drive.free) } else { self.addArrangedSubview(DiskView( diff --git a/Modules/GPU/popup.swift b/Modules/GPU/popup.swift index 73411781..d504f4cd 100644 --- a/Modules/GPU/popup.swift +++ b/Modules/GPU/popup.swift @@ -27,14 +27,12 @@ internal class Popup: NSStackView, Popup_p { } internal func infoCallback(_ value: GPUs) { - let views = self.arrangedSubviews.filter{ $0 is GPUView }.map{ $0 as! GPUView } - - if views.count != value.list.count { + if self.arrangedSubviews.filter({ $0 is GPUView }).count != value.list.count { self.arrangedSubviews.forEach{ $0.removeFromSuperview() } } value.list.reversed().forEach { (gpu: GPU_Info) in - if let view = views.first(where: { $0.value.id == gpu.id }) { + if let view = self.arrangedSubviews.filter({ $0 is GPUView }).map({ $0 as! GPUView }).first(where: { $0.value.id == gpu.id }) { view.update(gpu) } else { self.addArrangedSubview(GPUView(