summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-20 20:22:26 -0800
committerFuwn <[email protected]>2025-02-20 20:22:26 -0800
commitcb5b25a98cf22c194736432ad4d27ca94a5b69be (patch)
tree57f371e7c7e7b4f77ae7ae7ca47a3926fca14b38
parentfeat: Development commit (diff)
downloadsora-testing-cb5b25a98cf22c194736432ad4d27ca94a5b69be.tar.xz
sora-testing-cb5b25a98cf22c194736432ad4d27ca94a5b69be.zip
feat: Development commit
-rw-r--r--Sora/Views/BookmarksView.swift6
-rw-r--r--Sora/Views/MainView.swift91
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
+ }
}
}