import SwiftUI @MainActor @Observable final class FrontPageViewModel { private static let redditHomeURL = URL(string: "https://www.reddit.com")! private(set) var redditLoadURL = redditHomeURL static let postGeneratorItem = SidebarNavItem( title: "Post Generator", subtitle: "Generate engaging posts", iconKind: .postGenerator ) var selectedNavItem: SidebarNavItem? = postGeneratorItem var isRedditActive = false var isSettingsActive = false var isHistoryActive = false var isPaywallPresented = false var authErrorMessage: String? var hasOpenedReddit = false private(set) var redditReloadTrigger = 0 private(set) var redditGoBackTrigger = 0 var redditCanGoBack = false static let historyItem = SidebarNavItem( title: "History", subtitle: "Saved AI responses", iconKind: .history ) static let settingsItem = SidebarNavItem( title: "Settings", subtitle: "Manage app preferences", iconKind: .settings ) func openReddit(at url: URL? = nil) { hasOpenedReddit = true selectedNavItem = nil isRedditActive = true isSettingsActive = false isHistoryActive = false guard let url else { return } redditLoadURL = url if RedditWebAuthHelper.isRedditHomeURL(url) { redditCanGoBack = false } redditReloadTrigger += 1 } func showAuthError(_ message: String) { authErrorMessage = message } func clearAuthError() { authErrorMessage = nil } func goBackInReddit() { guard redditCanGoBack else { return } redditGoBackTrigger += 1 } func updateRedditCanGoBack(_ canGoBack: Bool) { redditCanGoBack = canGoBack } func openSettings() { selectedNavItem = nil isRedditActive = false isSettingsActive = true isHistoryActive = false } func openHistory() { selectedNavItem = nil isRedditActive = false isSettingsActive = false isHistoryActive = true } func selectNavItem(_ item: SidebarNavItem) { selectedNavItem = item isRedditActive = false isSettingsActive = false isHistoryActive = false } func showPaywall() { isPaywallPresented = true } func dismissPaywall() { isPaywallPresented = false } let createItems: [SidebarNavItem] = [ postGeneratorItem, SidebarNavItem(title: "Title Optimizer", subtitle: "Create viral titles", iconKind: .titleOptimizer), SidebarNavItem(title: "Comment Writer", subtitle: "Write smart replies", iconKind: .commentWriter), ] }