FrontPageViewModel.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import SwiftUI
  2. @MainActor
  3. @Observable
  4. final class FrontPageViewModel {
  5. private static let redditHomeURL = URL(string: "https://www.reddit.com")!
  6. private(set) var redditLoadURL = redditHomeURL
  7. var selectedNavItem: SidebarNavItem?
  8. var isRedditActive = true
  9. var isSettingsActive = false
  10. private(set) var redditReloadTrigger = 0
  11. static let settingsItem = SidebarNavItem(
  12. title: "Settings",
  13. subtitle: "Preferences & API keys",
  14. iconKind: .settings
  15. )
  16. func openReddit(at url: URL? = nil) {
  17. selectedNavItem = nil
  18. isRedditActive = true
  19. isSettingsActive = false
  20. redditLoadURL = url ?? Self.redditHomeURL
  21. redditReloadTrigger += 1
  22. }
  23. func openSettings() {
  24. selectedNavItem = nil
  25. isRedditActive = false
  26. isSettingsActive = true
  27. }
  28. func selectNavItem(_ item: SidebarNavItem) {
  29. selectedNavItem = item
  30. isRedditActive = false
  31. isSettingsActive = false
  32. }
  33. let createItems: [SidebarNavItem] = [
  34. SidebarNavItem(title: "Post Generator", subtitle: "Generate engaging posts", iconKind: .postGenerator),
  35. SidebarNavItem(title: "Title Optimizer", subtitle: "Create viral titles", iconKind: .titleOptimizer),
  36. SidebarNavItem(title: "Comment Writer", subtitle: "Write smart replies", iconKind: .commentWriter),
  37. ]
  38. }