mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 13:26:17 +00:00
add emojiRow
not using uikit cos i cba with the refreshing and stuff added test emojii static var
This commit is contained in:
@@ -91,4 +91,9 @@ struct Emoji: Codable, Identifiable, Hashable {
|
||||
mutating func refresh() {
|
||||
withAnimation { self.uiID = UUID() }
|
||||
}
|
||||
|
||||
static var test: Emoji = Emoji(
|
||||
name: "s?",
|
||||
url: URL(string: "https://neon443.github.io/images/fav.ico")!
|
||||
)
|
||||
}
|
||||
|
||||
51
StickerSlack/Emoji/EmojiRow.swift
Normal file
51
StickerSlack/Emoji/EmojiRow.swift
Normal file
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// EmojiRow.swift
|
||||
// StickerSlack
|
||||
//
|
||||
// Created by neon443 on 03/11/2025.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
import Haptics
|
||||
|
||||
struct EmojiRow: View {
|
||||
@ObservedObject var hoarder: EmojiHoarder
|
||||
@State var emoji: Emoji
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
EmojiPreview(
|
||||
hoarder: hoarder,
|
||||
emoji: emoji
|
||||
)
|
||||
.frame(maxWidth: 100, maxHeight: 100)
|
||||
Spacer()
|
||||
if emoji.isLocal {
|
||||
Button("", systemImage: "trash") {
|
||||
emoji.deleteImage()
|
||||
emoji.refresh()
|
||||
Haptic.heavy.trigger()
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
} else {
|
||||
Button("", systemImage: "arrow.down.circle") {
|
||||
Task.detached {
|
||||
try? await emoji.downloadImage()
|
||||
await MainActor.run {
|
||||
emoji.refresh()
|
||||
Haptic.success.trigger()
|
||||
}
|
||||
}
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
EmojiRow(
|
||||
hoarder: EmojiHoarder(localOnly: true),
|
||||
emoji: Emoji.test
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user