diff options
| author | Fuwn <[email protected]> | 2025-02-20 20:22:26 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-20 20:22:26 -0800 |
| commit | cb5b25a98cf22c194736432ad4d27ca94a5b69be (patch) | |
| tree | 57f371e7c7e7b4f77ae7ae7ca47a3926fca14b38 | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-cb5b25a98cf22c194736432ad4d27ca94a5b69be.tar.xz sora-testing-cb5b25a98cf22c194736432ad4d27ca94a5b69be.zip | |
feat: Development commit
| -rw-r--r-- | Sora/Views/BookmarksView.swift | 6 | ||||
| -rw-r--r-- | Sora/Views/MainView.swift | 91 |
2 files changed, 41 insertions, 56 deletions
diff --git a/Sora/Views/BookmarksView.swift b/Sora/Views/BookmarksView.swift index 5d27b6a..7c206ac 100644 --- a/Sora/Views/BookmarksView.swift +++ b/Sora/Views/BookmarksView.swift @@ -34,9 +34,15 @@ struct BookmarksView: View { 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() + } }) { let badgeView = Text(bookmark.provider.rawValue.capitalized) diff --git a/Sora/Views/MainView.swift b/Sora/Views/MainView.swift index 60e0689..b8da4da 100644 --- a/Sora/Views/MainView.swift +++ b/Sora/Views/MainView.swift @@ -6,83 +6,62 @@ struct MainView: View { @State private var manager = BooruManager(.yandere) var body: some View { + platformSpecificContent + .environmentObject(settings) + .environmentObject(manager) + .onChange(of: settings.preferredBooru) { _, newState in + updateManager(newState) + } + .onAppear(perform: initialiseManager) + } + + @ViewBuilder + private var platformSpecificContent: some View { #if os(macOS) ContentView() - .environmentObject(settings) - .environmentObject(manager) - .onChange(of: settings.preferredBooru) { _, newState in - let previousSearchText = manager.searchText - - self.manager = BooruManager(newState) - self.manager.searchText = previousSearchText - - Task { - if self.manager.searchText.isEmpty { - await self.manager.fetchPosts() - } else { - self.manager.performSearch() - } - } - } - .onAppear { - self.manager = BooruManager(self.settings.preferredBooru) - - Task { - if manager.posts.isEmpty { - await self.manager.fetchPosts() - } - } - } #else TabView(selection: $selectedTab) { ContentView() - .environmentObject(manager) - .tabItem { - Label("Posts", systemImage: "rectangle.stack") - } + .tabItem { Label("Posts", systemImage: "rectangle.stack") } .tag(0) NavigationStack { BookmarksView(selectedTab: $selectedTab) - .environmentObject(manager) - } - .tabItem { - Label("Bookmarks", systemImage: "bookmark") } + .tabItem { Label("Bookmarks", systemImage: "bookmark") } .tag(1) NavigationStack { SettingsView() } - .tabItem { - Label("Settings", systemImage: "gear") - } + .tabItem { Label("Settings", systemImage: "gear") } .tag(2) } - .environmentObject(settings) - .onChange(of: settings.preferredBooru) { _, newState in - let previousSearchText = manager.searchText + #endif + } - self.manager = BooruManager(newState) - self.manager.searchText = previousSearchText + private func updateManager(_ provider: BooruProvider) { + let previousSearchText = manager.searchText - Task { - if self.manager.searchText.isEmpty { - await self.manager.fetchPosts() - } else { - self.manager.performSearch() - } - } + manager = BooruManager(provider) + manager.searchText = previousSearchText + + Task { + if self.manager.searchText.isEmpty { + await self.manager.fetchPosts() + } else { + self.manager.performSearch() } - .onAppear { - self.manager = BooruManager(self.settings.preferredBooru) + } + } - Task { - if manager.posts.isEmpty { - await self.manager.fetchPosts() - } - } + private func initialiseManager() { + manager = BooruManager(settings.preferredBooru) + + Task { + if manager.posts.isEmpty { + await manager.fetchPosts() } - #endif + } } } |