diff options
| author | Fuwn <[email protected]> | 2025-07-10 06:49:07 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-07-10 06:49:07 -0700 |
| commit | 67805e03546c2587da2273b6beae1941e15d818c (patch) | |
| tree | a1c0f75840d7ff4428a274eed34b66f2fc8540dc | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-67805e03546c2587da2273b6beae1941e15d818c.tar.xz sora-testing-67805e03546c2587da2273b6beae1941e15d818c.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 31 |
1 files 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") |