mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 13:26:17 +00:00
Merge remote-tracking branch 'refs/remotes/origin/main'
This commit is contained in:
@@ -22,8 +22,9 @@ class EmojiHoarder: ObservableObject {
|
|||||||
@Published var prefix: Int = 100
|
@Published var prefix: Int = 100
|
||||||
|
|
||||||
init(localOnly: Bool = false) {
|
init(localOnly: Bool = false) {
|
||||||
withAnimation { self.emojis = loadLocalDB() }
|
let localDB = loadLocalDB()
|
||||||
withAnimation { self.filteredEmojis = self.emojis }
|
withAnimation { self.emojis = localDB }
|
||||||
|
withAnimation { self.filteredEmojis = localDB }
|
||||||
|
|
||||||
guard !localOnly else { return }
|
guard !localOnly else { return }
|
||||||
Task.detached {
|
Task.detached {
|
||||||
@@ -85,28 +86,23 @@ 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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func filterEmojis(by searchTerm: String) {
|
func filterEmojis(by searchTerm: String) {
|
||||||
guard !searchTerm.isEmpty else {
|
guard !searchTerm.isEmpty else {
|
||||||
withAnimation(.interactiveSpring) { self.filteredEmojis = emojis }
|
withAnimation(.interactiveSpring) { self.filteredEmojis = Array(emojis) }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Task.detached {
|
Task.detached {
|
||||||
let filtered = await self.emojis.filter { $0.name.localizedCaseInsensitiveContains(searchTerm) }
|
let filtered = await self.emojis.filter { $0.name.localizedCaseInsensitiveContains(searchTerm) }
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
withAnimation(.interactiveSpring) { self.filteredEmojis = filtered }
|
withAnimation(.interactiveSpring) { self.filteredEmojis = Array(filtered) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user