AuthotizedRootViewModel.swift 834 B

123456789101112131415161718192021222324252627
  1. import SwiftUI
  2. import Swinject
  3. extension AuthotizedRoot {
  4. class ViewModel<Provider>: BaseViewModel<Provider>, ObservableObject where Provider: AuthotizedRootProvider {
  5. @Published private(set) var tabs: [Tab] = []
  6. @Published var selectedTab = Config.initialTab
  7. @Published private(set) var isAuthotized = true
  8. required init(provider: Provider, resolver: Resolver) {
  9. super.init(provider: provider, resolver: resolver)
  10. setupTabs()
  11. }
  12. private func setupTabs() {
  13. tabs = router.tabs.map { $0.tab(resolver: self.resolver) }
  14. }
  15. override func subscribe() {
  16. router.selectTab
  17. .receive(on: RunLoop.main)
  18. .assign(to: \.selectedTab, on: self)
  19. .store(in: &lifetime)
  20. }
  21. }
  22. }