mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 13:26:17 +00:00
trying to add a only show x thing
This commit is contained in:
@@ -18,6 +18,8 @@ class EmojiHoarder: ObservableObject {
|
|||||||
private let decoder = JSONDecoder()
|
private let decoder = JSONDecoder()
|
||||||
|
|
||||||
@Published var emojis: [Emoji] = []
|
@Published var emojis: [Emoji] = []
|
||||||
|
@Published var filteredEmojis: [Emoji] = []
|
||||||
|
@Published var prefix: Int = 100
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
guard let fetched = fetchRemoteDB() else {
|
guard let fetched = fetchRemoteDB() else {
|
||||||
@@ -26,6 +28,7 @@ class EmojiHoarder: ObservableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.emojis = fetched
|
self.emojis = fetched
|
||||||
|
self.filteredEmojis = emojis
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeStickers(_ toStore: [UUID]) {
|
func storeStickers(_ toStore: [UUID]) {
|
||||||
@@ -52,4 +55,22 @@ class EmojiHoarder: ObservableObject {
|
|||||||
let decoded: [SlackResponse] = try! decoder.decode([SlackResponse].self, from: data)
|
let decoded: [SlackResponse] = try! decoder.decode([SlackResponse].self, from: data)
|
||||||
return SlackResponse.toEmojis(from: decoded)
|
return SlackResponse.toEmojis(from: decoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setPrefix(to: Int) {
|
||||||
|
filterEmojis(by: "")
|
||||||
|
filteredEmojis = Array(filteredEmojis.prefix(prefix))
|
||||||
|
}
|
||||||
|
|
||||||
|
func filterEmojis(by searchTerm: String) {
|
||||||
|
guard !searchTerm.isEmpty else {
|
||||||
|
self.filteredEmojis = emojis
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Task {
|
||||||
|
let filtered = emojis.filter { $0.name.localizedCaseInsensitiveContains(searchTerm) }
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
self.filteredEmojis = filtered
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,19 @@ import Haptics
|
|||||||
struct ContentView: View {
|
struct ContentView: View {
|
||||||
@StateObject var hoarder: EmojiHoarder = EmojiHoarder()
|
@StateObject var hoarder: EmojiHoarder = EmojiHoarder()
|
||||||
|
|
||||||
|
@State var searchTerm: String = ""
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
TabView {
|
TabView {
|
||||||
List {
|
List {
|
||||||
ForEach($hoarder.emojis, id: \.self) { $emoji in
|
HStack {
|
||||||
|
Stepper("show?", value: $hoarder.prefix, step: 100) { $0 }
|
||||||
|
// Button("downloaded", systemImage: "arrow.down.circle.fill") {
|
||||||
|
// <#code#>
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
ForEach($hoarder.filteredEmojis, id: \.self) { $emoji in
|
||||||
HStack {
|
HStack {
|
||||||
EmojiPreview(emoji: emoji, image: emoji.image)
|
EmojiPreview(emoji: emoji, image: emoji.image)
|
||||||
.frame(maxWidth: 100)
|
.frame(maxWidth: 100)
|
||||||
@@ -39,6 +47,7 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// .searchable(text: $searchTerm, prompt: "Search")
|
||||||
}
|
}
|
||||||
.tabItem {
|
.tabItem {
|
||||||
Label("home", systemImage: "house")
|
Label("home", systemImage: "house")
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ struct EmojiPreview: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
Text(emoji.name)
|
Text(emoji.name)
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
if let localImage = try? Data(contentsOf: emoji.localImageURL),
|
if let localImage = try? Data(contentsOf: emoji.localImageURL),
|
||||||
let image = UIImage(data: localImage) {
|
let image = UIImage(data: localImage) {
|
||||||
|
|||||||
Reference in New Issue
Block a user