diff options
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 39dbfee..8c8f495 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -261,12 +261,10 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l if let iCloudData = NSUbiquitousKeyValueStore.default.data(forKey: key) { if let iCloudValues = Self.decode([T].self, from: iCloudData) { let localValues = Self.decode([T].self, from: localData) ?? [] - let mergedValues = (localValues + iCloudValues) - .reduce(into: [T]()) { result, value in - if !result.contains(where: { identifier($0) == identifier(value) }) { - result.append(value) - } - } + var seenValues = Set<UUID>() + let mergedValues = (localValues + iCloudValues).filter { value in + seenValues.insert(identifier(value)).inserted + } return sort(mergedValues) } |