mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 21:36:17 +00:00
organised the project for the first time
This commit is contained in:
73
StickerSlack/SwiftUI/ContentView.swift
Normal file
73
StickerSlack/SwiftUI/ContentView.swift
Normal file
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// ContentView.swift
|
||||
// StickerSlack
|
||||
//
|
||||
// Created by neon443 on 15/10/2025.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Haptics
|
||||
|
||||
struct ContentView: View {
|
||||
@StateObject var hoarder: EmojiHoarder = EmojiHoarder()
|
||||
|
||||
@State var searchTerm: String = ""
|
||||
|
||||
var body: some View {
|
||||
TabView {
|
||||
List {
|
||||
ForEach(hoarder.downloadedEmojis, id: \.self) { name in
|
||||
if let emoji = hoarder.trie.dict[name] {
|
||||
EmojiRow(hoarder: hoarder, emoji: emoji)
|
||||
}
|
||||
}
|
||||
}
|
||||
.tabItem {
|
||||
Label("Downloaded", systemImage: "arrow.down.circle.fill")
|
||||
}
|
||||
|
||||
List {
|
||||
ForEach(hoarder.emojis, id: \.self) { emoji in
|
||||
EmojiRow(hoarder: hoarder, emoji: emoji)
|
||||
}
|
||||
}
|
||||
.tabItem {
|
||||
Label("Browse", systemImage: "square.grid.2x2.fill")
|
||||
}
|
||||
|
||||
List {
|
||||
Text("\(searchTerm.isEmpty ? hoarder.emojis.count : hoarder.filteredEmojis.count) Emoji")
|
||||
|
||||
ForEach(hoarder.filteredEmojis, id: \.self) { name in
|
||||
if let emoji = hoarder.trie.dict[name] {
|
||||
EmojiRow(hoarder: hoarder, emoji: emoji)
|
||||
}
|
||||
}
|
||||
}
|
||||
.onChange(of: searchTerm) { _ in
|
||||
hoarder.filterEmojis(by: searchTerm)
|
||||
}
|
||||
.refreshable {
|
||||
Task.detached {
|
||||
await hoarder.refreshDB()
|
||||
}
|
||||
searchTerm = ""
|
||||
}
|
||||
.tabItem {
|
||||
Label("Search", systemImage: "magnifyingglass")
|
||||
}
|
||||
|
||||
TrieTestingView(
|
||||
hoarder: hoarder,
|
||||
)
|
||||
.tabItem {
|
||||
Label("Tree", systemImage: "tree.fill")
|
||||
}
|
||||
}
|
||||
.searchable(text: $searchTerm, placement: .automatic)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
ContentView(hoarder: EmojiHoarder(localOnly: true))
|
||||
}
|
||||
Reference in New Issue
Block a user