diff options
Diffstat (limited to 'Sora/Views')
| -rw-r--r-- | Sora/Views/BookmarksView.swift | 7 | ||||
| -rw-r--r-- | Sora/Views/MainView.swift | 18 | ||||
| -rw-r--r-- | Sora/Views/Post/PostGridBookmarkButtonView.swift | 24 |
3 files changed, 36 insertions, 13 deletions
diff --git a/Sora/Views/BookmarksView.swift b/Sora/Views/BookmarksView.swift index d1c5776..5d27b6a 100644 --- a/Sora/Views/BookmarksView.swift +++ b/Sora/Views/BookmarksView.swift @@ -34,17 +34,20 @@ struct BookmarksView: View { ForEach(filteredBookmarks, id: \.self) { bookmark in Button(action: { + settings.preferredBooru = bookmark.provider manager.searchText = bookmark.tags.joined(separator: " ") - manager.performSearch() selectedTab = 0 }) { + let badgeView = Text(bookmark.provider.rawValue.capitalized) + HStack { Text(bookmark.tags.joined(separator: ", ")) + .foregroundStyle(.primary) Text(bookmark.createdAt.formatted()) .foregroundColor(.secondary) - .font(.caption) } + .badge(badgeView) } } .onDelete(perform: settings.removeBookmark) diff --git a/Sora/Views/MainView.swift b/Sora/Views/MainView.swift index 949e024..60e0689 100644 --- a/Sora/Views/MainView.swift +++ b/Sora/Views/MainView.swift @@ -11,10 +11,17 @@ struct MainView: View { .environmentObject(settings) .environmentObject(manager) .onChange(of: settings.preferredBooru) { _, newState in + let previousSearchText = manager.searchText + self.manager = BooruManager(newState) + self.manager.searchText = previousSearchText Task { - await self.manager.fetchPosts() + if self.manager.searchText.isEmpty { + await self.manager.fetchPosts() + } else { + self.manager.performSearch() + } } } .onAppear { @@ -54,10 +61,17 @@ struct MainView: View { } .environmentObject(settings) .onChange(of: settings.preferredBooru) { _, newState in + let previousSearchText = manager.searchText + self.manager = BooruManager(newState) + self.manager.searchText = previousSearchText Task { - await self.manager.fetchPosts() + if self.manager.searchText.isEmpty { + await self.manager.fetchPosts() + } else { + self.manager.performSearch() + } } } .onAppear { diff --git a/Sora/Views/Post/PostGridBookmarkButtonView.swift b/Sora/Views/Post/PostGridBookmarkButtonView.swift index 531eefe..90336f9 100644 --- a/Sora/Views/Post/PostGridBookmarkButtonView.swift +++ b/Sora/Views/Post/PostGridBookmarkButtonView.swift @@ -6,17 +6,23 @@ struct PostGridBookmarkButtonView: View { var contained: Bool { settings.bookmarks - .contains(where: { $0.tags == manager.tags.map { $0.lowercased() } }) + .contains(where: { $0.tags == manager.tags.map { $0.lowercased() } && $0.provider == manager.provider ?? settings.preferredBooru }) } var body: some View { - Button(action: { - contained ? settings.removeBookmark(withTags: manager.tags) : settings.addBookmark(tags: manager.tags) - }) { - Label("Bookmark", systemImage: - contained ? - "bookmark.fill" : - "bookmark") - } + 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") + } } } |