BaseView.swift 650 B

123456789101112131415161718192021222324252627282930
  1. import SwiftUI
  2. import Swinject
  3. protocol BaseView: View {
  4. associatedtype StateModelType: StateModel
  5. var resolver: Resolver { get }
  6. var state: StateModelType { get }
  7. var router: Router { get }
  8. func configureView()
  9. func configureView(_ configure: (() -> Void)?)
  10. }
  11. extension BaseView {
  12. var router: Router { resolver.resolve(Router.self)! }
  13. }
  14. extension BaseView {
  15. func configureView() {
  16. configureView(nil)
  17. }
  18. func configureView(_ configure: (() -> Void)?) {
  19. if state.isInitial {
  20. configure?()
  21. state.resolver = resolver
  22. state.isInitial = false
  23. }
  24. }
  25. }