浏览代码

Simplified coordinators building

Pavel Yurchenko 1 年之前
父节点
当前提交
de172afa3d

+ 3 - 3
CoordinatorSUIExamples/CoordinatorSUIExamples/Application/SUIExamplesApp.swift

@@ -20,15 +20,15 @@ struct SUIExamplesApp: App {
         WindowGroup {
             TabView(selection: $appCoordinator.tabSelection) {
                 Tab(ApplicationTab.main.rawValue, systemImage: "tray.and.arrow.down.fill", value: ApplicationTab.main) {
-                    MainNavigationView.build(with: appCoordinator.mainCoordinator)
+                    MainNavigationView(appCoordinator.mainCoordinator)
                 }
 
                 Tab(ApplicationTab.products.rawValue, systemImage: "tray.and.arrow.down.fill", value: ApplicationTab.products) {
-                    ProductsNavigationView.build(with: appCoordinator.productsCoordinator)
+                    ProductsNavigationView(appCoordinator.productsCoordinator)
                 }
 
                 Tab(ApplicationTab.feedback.rawValue, systemImage: "tray.and.arrow.down.fill", value: ApplicationTab.feedback) {
-                    FeedbackNavigationView.build(with: appCoordinator.feedbackCoordinator)
+                    FeedbackNavigationView(appCoordinator.feedbackCoordinator)
                 }
             }
         }

+ 7 - 7
CoordinatorSUIExamples/CoordinatorSUIExamples/Flows/ModalProductsCoordinator.swift

@@ -53,8 +53,13 @@ final class ModalProductsCoordinator: BaseCoordinator {
 
 struct ModalProductsNavigationView: View {
 
-    let coordinator: ModalProductsCoordinator
-    @StateObject var router: Router
+    @StateObject private var coordinator: ModalProductsCoordinator
+    @StateObject private var router: Router
+
+    init(_ coordinator: ModalProductsCoordinator) {
+        _coordinator = StateObject(wrappedValue: coordinator)
+        _router = StateObject(wrappedValue: coordinator.currentRouter)
+    }
 
     var body: some View {
         NavigationStack(path: $router.path) {
@@ -65,9 +70,4 @@ struct ModalProductsNavigationView: View {
             )
         }
     }
-
-    @ViewBuilder
-    static func build(with coordinator: ModalProductsCoordinator) -> some View {
-        ModalProductsNavigationView(coordinator: coordinator, router: coordinator.currentRouter)
-    }
 }

+ 5 - 4
CoordinatorSUIExamples/CoordinatorSUIExamples/Flows/Tabs/FeedbackCoordinator.swift

@@ -33,6 +33,11 @@ struct FeedbackNavigationView: View {
     @StateObject private var coordinator: FeedbackCoordinator
     @StateObject private var router: Router
 
+    init(_ coordinator: FeedbackCoordinator) {
+        _coordinator = StateObject(wrappedValue: coordinator)
+        _router = StateObject(wrappedValue: coordinator.currentRouter)
+    }
+
     var body: some View {
         NavigationStack(path: $router.path) {
             coordinator.run()
@@ -42,9 +47,5 @@ struct FeedbackNavigationView: View {
             )
         }
     }
-
-    static func build(with coordinator: FeedbackCoordinator) -> some View {
-        FeedbackNavigationView(coordinator: coordinator, router: coordinator.currentRouter)
-    }
 }
 

+ 7 - 6
CoordinatorSUIExamples/CoordinatorSUIExamples/Flows/Tabs/MainCoordinator.swift

@@ -37,7 +37,7 @@ final class MainCoordinator: BaseCoordinator {
     func buildPresentation(_ route: Route) -> some View {
         switch route {
         case .products:
-            ModalProductsNavigationView.build(with: ModalProductsCoordinator())
+            ModalProductsNavigationView(ModalProductsCoordinator())
         case .cart:
             showCartModule()
         default:
@@ -129,7 +129,12 @@ struct MainNavigationView: View {
 
     @StateObject private var coordinator: MainCoordinator
     @StateObject private var router: Router
-    
+
+    init(_ coordinator: MainCoordinator) {
+        _coordinator = StateObject(wrappedValue: coordinator)
+        _router = StateObject(wrappedValue: coordinator.currentRouter)
+    }
+
     var body: some View {
         NavigationStack(path: $router.path) {
             coordinator.run()
@@ -143,8 +148,4 @@ struct MainNavigationView: View {
             content: coordinator.buildPresentation
         )
     }
-
-    static func build(with coordinator: MainCoordinator) -> some View {
-        MainNavigationView(coordinator: coordinator, router: coordinator.currentRouter)
-    }
 }

+ 5 - 4
CoordinatorSUIExamples/CoordinatorSUIExamples/Flows/Tabs/ProductsCoordinator.swift

@@ -80,6 +80,11 @@ struct ProductsNavigationView: View {
     @StateObject private var coordinator: ProductsCoordinator
     @StateObject private var router: Router
 
+    init(_ coordinator: ProductsCoordinator) {
+        _coordinator = StateObject(wrappedValue: coordinator)
+        _router = StateObject(wrappedValue: coordinator.currentRouter)
+    }
+
     var body: some View {
         NavigationStack(path: $router.path) {
             coordinator.run()
@@ -89,8 +94,4 @@ struct ProductsNavigationView: View {
             )
         }
     }
-
-    static func build(with coordinator: ProductsCoordinator) -> some View {
-        ProductsNavigationView(coordinator: coordinator, router: coordinator.currentRouter)
-    }
 }