summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-07-10 06:49:07 -0700
committerFuwn <[email protected]>2025-07-10 06:49:07 -0700
commit67805e03546c2587da2273b6beae1941e15d818c (patch)
treea1c0f75840d7ff4428a274eed34b66f2fc8540dc
parentfeat: Development commit (diff)
downloadsora-testing-67805e03546c2587da2273b6beae1941e15d818c.tar.xz
sora-testing-67805e03546c2587da2273b6beae1941e15d818c.zip
feat: Development commit
-rw-r--r--Sora/Data/Settings/SettingsManager.swift31
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")