import SwiftUI struct BookmarksView: View { @EnvironmentObject var settings: Settings @EnvironmentObject var manager: BooruManager @Binding var selectedTab: Int @State private var bookmarksSearchText: String = "" var filteredBookmarks: [Bookmark] { guard !bookmarksSearchText.isEmpty else { return settings.bookmarks } return settings.bookmarks .filter { $0.tags.joined(separator: " ").lowercased().contains(bookmarksSearchText.lowercased()) } } var body: some View { NavigationStack { VStack { if settings.bookmarks.isEmpty { ContentUnavailableView("No Bookmarks", systemImage: "bookmark", description: Text("Add a bookmark by tapping the bookmark button on a search page.")) } else { List { if filteredBookmarks.isEmpty && !bookmarksSearchText.isEmpty { Text("No bookmarks match your search") } ForEach( filteredBookmarks, id: \.self ) { bookmark in Button(action: { let previousProvider = settings.preferredBooru settings.preferredBooru = bookmark.provider manager.searchText = bookmark.tags.joined(separator: " ") selectedTab = 0 if previousProvider == settings.preferredBooru { manager.performSearch() } }) { BookmarkListItemView(bookmark: bookmark) } #if os(macOS) .buttonStyle(.plain) #endif } .onDelete(perform: settings.removeBookmark) } #if os(macOS) .listStyle(.plain) #endif } } } .navigationTitle("Bookmarks") .searchable(text: $bookmarksSearchText) } } #Preview { BookmarksView(selectedTab: .constant(1)) .environmentObject(Settings()) .environmentObject(BooruManager(.yandere)) }