import SwiftUI struct MainView: View { @EnvironmentObject var settings: Settings @State private var selectedTab: Int = 0 @State private var manager = BooruManager(.yandere) var body: some View { #if os(macOS) ContentView() .environmentObject(settings) .environmentObject(manager) .onChange(of: settings.preferredBooru) { _, newState in self.manager = BooruManager(newState) Task { await self.manager.fetchPosts() } } .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") } .tag(0) NavigationStack { BookmarksView(selectedTab: $selectedTab) .environmentObject(manager) } .tabItem { Label("Bookmarks", systemImage: "bookmark") } .tag(1) NavigationStack { SettingsView() } .tabItem { Label("Settings", systemImage: "gear") } .tag(2) } .environmentObject(settings) .onChange(of: settings.preferredBooru) { _, newState in self.manager = BooruManager(newState) Task { await self.manager.fetchPosts() } } .onAppear { self.manager = BooruManager(self.settings.preferredBooru) Task { if manager.posts.isEmpty { await self.manager.fetchPosts() } } } #endif } }