rewrote refreshDB

using a task.detached to refresh the db
sets werent a good idea
This commit is contained in:
neon443
2025-10-31 23:06:41 +00:00
parent 46204aa9c2
commit f1f65d4e36
2 changed files with 11 additions and 15 deletions

View File

@@ -17,13 +17,13 @@ class EmojiHoarder: ObservableObject {
private let encoder = JSONEncoder() private let encoder = JSONEncoder()
private let decoder = JSONDecoder() private let decoder = JSONDecoder()
@Published var emojis: Set<Emoji> = [] @Published var emojis: [Emoji] = []
@Published var filteredEmojis: [Emoji] = [] @Published var filteredEmojis: [Emoji] = []
@Published var prefix: Int = 100 @Published var prefix: Int = 100
init(localOnly: Bool = false) { init(localOnly: Bool = false) {
let localDB = loadLocalDB() let localDB = loadLocalDB()
withAnimation { self.emojis = Set(localDB) } withAnimation { self.emojis = localDB }
withAnimation { self.filteredEmojis = localDB } withAnimation { self.filteredEmojis = localDB }
guard !localOnly else { return } guard !localOnly else { return }
@@ -68,7 +68,7 @@ class EmojiHoarder: ObservableObject {
func loadRemoteDB() async { func loadRemoteDB() async {
async let fetched = self.fetchRemoteDB() async let fetched = self.fetchRemoteDB()
if let fetched = await fetched { if let fetched = await fetched {
withAnimation { self.emojis = Set(fetched) } withAnimation { self.emojis = fetched }
withAnimation { self.filteredEmojis = fetched } withAnimation { self.filteredEmojis = fetched }
} }
} }
@@ -86,16 +86,11 @@ class EmojiHoarder: ObservableObject {
} }
} }
func refreshDB(withCallback callback: (() -> Void)? = nil) { func refreshDB() async {
Task.detached { guard let fetched = await self.fetchRemoteDB() else { return }
guard let fetched = await self.fetchRemoteDB() else { return } DispatchQueue.main.async {
DispatchQueue.main.async { withAnimation { self.emojis = fetched }
withAnimation { self.emojis = fetched } withAnimation { self.filteredEmojis = fetched }
withAnimation { self.filteredEmojis = fetched }
if let callback {
callback()
}
}
} }
} }

View File

@@ -89,8 +89,9 @@ struct ContentView: View {
} }
} }
.refreshable { .refreshable {
hoarder.refreshDB() { Task.detached {
hoarder.filterEmojis(by: searchTerm) await hoarder.refreshDB()
await hoarder.filterEmojis(by: searchTerm)
} }
} }
.searchable(text: $searchTerm) .searchable(text: $searchTerm)