diff options
| author | Fuwn <[email protected]> | 2025-02-22 07:07:57 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-22 07:07:57 -0800 |
| commit | cafece91bae45194d64f4932bb04be018b82d21b (patch) | |
| tree | 02d727a13fe530550e3b29b28b7ee9980262eef2 /Sora/Views/Post/Grid/PostGridBookmarkButtonView.swift | |
| parent | feat: Development commit (diff) | |
| download | sora-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.swift | 37 |
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" + ) + } + } +} |