mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 13:26:17 +00:00
68 lines
1.8 KiB
Swift
68 lines
1.8 KiB
Swift
//
|
|
// DownloadedView.swift
|
|
// StickerSlack
|
|
//
|
|
// Created by neon443 on 10/11/2025.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct DownloadedView: View {
|
|
@ObservedObject var hoarder: EmojiHoarder
|
|
|
|
@Environment(\.colorScheme) var colorScheme
|
|
var isDark: Bool { colorScheme == .dark }
|
|
|
|
var minColWidth: CGFloat { 75 }
|
|
var spacing: CGFloat { 5 }
|
|
var col: GridItem {
|
|
GridItem(
|
|
.flexible(minimum: minColWidth, maximum: 100),
|
|
spacing: spacing,
|
|
alignment: .center
|
|
)
|
|
}
|
|
|
|
var body: some View {
|
|
ScrollView {
|
|
let columns: Int = max(1, Int((UIScreen.main.bounds.width - 2*spacing) / (minColWidth + spacing)))
|
|
let layout = Array(repeating: col, count: columns)
|
|
LazyVGrid(columns: layout, spacing: spacing) {
|
|
ForEach(hoarder.downloadedEmojisArr, id: \.self) { name in
|
|
if let emoji = hoarder.trie.dict[name] {
|
|
ZStack {
|
|
Rectangle()
|
|
.foregroundStyle(isDark ? .black : .white)
|
|
EmojiPreview(hoarder: hoarder, emoji: emoji)
|
|
RoundedRectangle(cornerRadius: 15)
|
|
.stroke(.gray, lineWidth: 1)
|
|
}
|
|
.aspectRatio(1, contentMode: .fit)
|
|
.clipShape(RoundedRectangle(cornerRadius: 15))
|
|
.contextMenu {
|
|
Text(emoji.name)
|
|
Button("Copy Name", systemImage: "doc.on.clipboard") {
|
|
UIPasteboard.general.string = emoji.name
|
|
}
|
|
Button("Copy Image", systemImage: "photo.fill.on.rectangle.fill") {
|
|
UIPasteboard.general.image = emoji.image
|
|
}
|
|
Divider()
|
|
ShareLink("Share", item: emoji.remoteImageURL, subject: nil, message: nil)
|
|
Divider()
|
|
Button("Delete", systemImage: "trash.fill", role: .destructive) {
|
|
hoarder.delete(emoji: emoji)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.padding(.horizontal, spacing)
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
DownloadedView(hoarder: EmojiHoarder(localOnly: true))
|
|
}
|