fix: prevent disk duplication in the list because of a data race. It causes the popup view or widget to stop updating the value (#1624)

This commit is contained in:
Serhiy Mytrovtsiy
2023-09-29 19:03:43 +02:00
parent 48322fc7e8
commit 0b15c14c10

View File

@@ -47,7 +47,7 @@ public struct drive: Codable {
}
public class Disks: Codable {
private var queue: DispatchQueue = DispatchQueue(label: "eu.exelban.Stats.Disk.SynchronizedArray", attributes: .concurrent)
private var queue: DispatchQueue = DispatchQueue(label: "eu.exelban.Stats.Disk.SynchronizedArray")
private var array: [drive] = []
enum CodingKeys: String, CodingKey {
@@ -108,7 +108,9 @@ public class Disks: Codable {
public func append( _ element: drive) {
self.queue.async(flags: .barrier) {
self.array.append(element)
if !self.array.contains(where: {$0.BSDName == element.BSDName}) {
self.array.append(element)
}
}
}