BaseModuleBuilder.swift 695 B

1234567891011121314151617181920212223242526
  1. import SwiftUI
  2. import Swinject
  3. protocol ModuleBuilder {
  4. associatedtype View: SwiftUI.View
  5. func buildView() -> View
  6. }
  7. class BaseModuleBuilder<View: BaseView, ViewModel: ObservableObject, Provider: FreeAPS.Provider>: ModuleBuilder
  8. where ViewModel: BaseViewModel<Provider>, View.ViewModel == ViewModel {
  9. let resolver: Resolver
  10. lazy var viewModel: ViewModel = { buildViewModel() }()
  11. init(resolver: Resolver) {
  12. self.resolver = resolver
  13. }
  14. func buildViewModel() -> ViewModel {
  15. ViewModel(provider: Provider(resolver: resolver), resolver: resolver)
  16. }
  17. func buildView() -> some SwiftUI.View {
  18. View().environmentObject(viewModel)
  19. }
  20. }