summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-22 07:07:57 -0800
committerFuwn <[email protected]>2025-02-22 07:07:57 -0800
commitcafece91bae45194d64f4932bb04be018b82d21b (patch)
tree02d727a13fe530550e3b29b28b7ee9980262eef2 /Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift
parentfeat: Development commit (diff)
downloadsora-testing-cafece91bae45194d64f4932bb04be018b82d21b.tar.xz
sora-testing-cafece91bae45194d64f4932bb04be018b82d21b.zip
feat: Development commit
Diffstat (limited to 'Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift')
-rw-r--r--Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift37
1 files changed, 37 insertions, 0 deletions
diff --git a/Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift b/Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift
new file mode 100644
index 0000000..9f85a20
--- /dev/null
+++ b/Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift
@@ -0,0 +1,37 @@
+import SwiftUI
+
+struct PostGridBookmarkButtonView: View {
+ @EnvironmentObject private var manager: BooruManager
+ @EnvironmentObject private var settings: Settings
+
+ var contained: Bool {
+ let lowercaseTags = manager.tags.map { $0.lowercased() }
+
+ return settings.bookmarks
+ .contains { bookmark in
+ bookmark.tags == lowercaseTags
+ && bookmark.provider == manager.provider ?? settings.preferredBooru
+ }
+ }
+
+ var body: some View {
+ Button(
+ action: {
+ contained
+ ? settings
+ .removeBookmark(withTags: manager.tags)
+ : settings
+ .addBookmark(
+ provider: manager.provider ?? settings.preferredBooru,
+ tags: manager.tags
+ )
+ }
+ ) {
+ Label(
+ "Bookmark",
+ systemImage:
+ contained ? "bookmark.fill" : "bookmark"
+ )
+ }
+ }
+}