// // SideMenuViewModel.swift // uSTADIUM // // Created by Omar Hegazy on 6/13/24. // Copyright © 2024 uSTADIUM. All rights reserved. // import SwiftUI import UIKit class SideMenuViewModel: ObservableObject { @Published var user: UserOBJ? @Published var profileOptions: [SideMenuOBJ] = SideMenuRepository.profile() @Published var coolStuffOptions: [SideMenuOBJ] = SideMenuRepository.coolStuff() @Published var adminOptions: [SideMenuOBJ] = SideMenuRepository.admin() @Published var isAdmin: Bool = AuthService.shared.isAdmin var navigateTo: ((UIViewController) -> Void)? init() { user = AuthService.shared.user } func handleProfileOptionTap(option: SideMenuOBJ) { switch option.label { case "My Profile": if let user = AuthService.shared.user { let profileView: UIViewController = UIHostingController(rootView: ProfileView(user: user)) profileView.extendedLayoutIncludesOpaqueBars = true profileView.hidesBottomBarWhenPushed = true navigateTo?(profileView) } case "Edit Profile": if let user = AuthService.shared.user { let editProfile = EditProfileTableViewController() editProfile.hidesBottomBarWhenPushed = true editProfile.service = UserPool.shared.request(for: user) navigateTo?(UINavigationController(rootViewController: editProfile)) } case "Saved": let savedView = UIHostingController(rootView: SavedPostsView()) navigateTo?(savedView) case "Account": if let vc = AccountSummaryFeature.getVC() as? UIViewController { navigateTo?(vc) } case "Settings": let settingsVC = UIHostingController(rootView: SettingsView()) settingsVC.isModalInPresentation = true navigateTo?(settingsVC) case "My Takes History": navigateTo?(UIHostingController(rootView: UserTakesHistoryView(historyVM: UserTakesHistoryViewModel(selectedContainer: .liveTakes)))) default: break } } func handleCoolStuffOptionTap(option: SideMenuOBJ) { if let vc = option.vc { navigateTo?(vc) } } func handleAdminOptionTap(option: SideMenuOBJ) { switch option.label { case "Users": let usersAdmin = UsersAdminViewController() navigateTo?(UINavigationController(rootViewController: usersAdmin)) case "Takes": let takesVC = AdminTakesVC() navigateTo?(UINavigationController(rootViewController: takesVC)) case "Cashout": let cashoutVC = CashoutAdminVC() navigateTo?(UINavigationController(rootViewController: cashoutVC)) case "Feature Toggles": let toggleView = FeatureTogglesView() navigateTo?(UIHostingController(rootView: toggleView)) case "Promo Codes": let promoCodeView = PromoCodeList() navigateTo?(UIHostingController(rootView: promoCodeView)) case "Live Odds": let oddsView = UIHostingController(rootView: TheOddsView(pickerVM: OddsPickerViewModel(selectedContainer: .nfl))) oddsView.hidesBottomBarWhenPushed = true oddsView.extendedLayoutIncludesOpaqueBars = true navigateTo?(oddsView) default: break } } }