From 67805e03546c2587da2273b6beae1941e15d818c Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 10 Jul 2025 06:49:07 -0700 Subject: feat: Development commit --- Sora/Data/Settings/SettingsManager.swift | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index b63c7b3..58583f1 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -326,13 +326,11 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l iCloudValues = Self.decode([T].self, from: iCloudData) ?? [] } - let filteredICloudValues = iCloudValues.filter { iCloudItem in - sortedValues.contains { identifier($0) == identifier(iCloudItem) } + let sortedValueIDs = Set(sortedValues.map { identifier($0) }) + let uniqueICloudValues = iCloudValues.filter { iCloudItem in + !sortedValueIDs.contains(identifier(iCloudItem)) } - let newLocalItems = sortedValues.filter { localItem in - !filteredICloudValues.contains { identifier($0) == identifier(localItem) } - } - let mergedValues = filteredICloudValues + newLocalItems + let mergedValues = sortedValues + uniqueICloudValues let sortedMergedValues = sort(mergedValues) NSUbiquitousKeyValueStore.default.set(Self.encode(sortedMergedValues), forKey: key) @@ -482,12 +480,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } let localBookmarks = Self.decode([SettingsBookmark].self, from: bookmarksData) ?? [] - let mergedBookmarks = (localBookmarks + iCloudBookmarks) - .reduce(into: [SettingsBookmark]()) { result, value in - if !result.contains(where: { $0.id == value.id }) { - result.append(value) - } - } + let mergedBookmarks = Array(Set(localBookmarks + iCloudBookmarks)) .sorted { $0.date > $1.date } NSUbiquitousKeyValueStore.default.set(Self.encode(mergedBookmarks), forKey: "bookmarks") @@ -502,12 +495,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } let localHistory = Self.decode([BooruSearchQuery].self, from: searchHistoryData) ?? [] - let mergedHistory = (localHistory + iCloudHistory) - .reduce(into: [BooruSearchQuery]()) { result, value in - if !result.contains(where: { $0.id == value.id }) { - result.append(value) - } - } + let mergedHistory = Array(Set(localHistory + iCloudHistory)) .sorted { $0.date > $1.date } NSUbiquitousKeyValueStore.default.set(Self.encode(mergedHistory), forKey: "searchHistory") @@ -522,12 +510,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } let localProviders = Self.decode([BooruProviderCustom].self, from: customProvidersData) ?? [] - let mergedProviders = (localProviders + iCloudProviders) - .reduce(into: [BooruProviderCustom]()) { result, value in - if !result.contains(where: { $0.id == value.id }) { - result.append(value) - } - } + let mergedProviders = Array(Set(localProviders + iCloudProviders)) NSUbiquitousKeyValueStore.default.set(Self.encode(mergedProviders), forKey: "customProviders") -- cgit v1.2.3