diff --git a/Templates/Flow Coordinator.xctemplate/___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator.swift b/Templates/Flow Coordinator.xctemplate/___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator.swift index 8f9a9b5..ee3b245 100644 --- a/Templates/Flow Coordinator.xctemplate/___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator.swift +++ b/Templates/Flow Coordinator.xctemplate/___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator.swift @@ -31,7 +31,7 @@ final class ___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator: NavigationS extension ___VARIABLE_flowCoordinatorIdentifier___FlowCoordinator { @EnumIdentable - enum Destination: Hashable, Identifiable { + enum Destination { case destination } } diff --git a/Templates/Scene.xctemplate/Resource Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift b/Templates/Scene.xctemplate/Resource Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift index 59d9a68..d26c0c1 100644 --- a/Templates/Scene.xctemplate/Resource Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift +++ b/Templates/Scene.xctemplate/Resource Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift @@ -9,7 +9,7 @@ protocol ___VARIABLE_sceneIdentifier___ComponentModelProtocol: ComponentModel { final class ___VARIABLE_sceneIdentifier___ComponentModel: ___VARIABLE_sceneIdentifier___ComponentModelProtocol { - let onEvent: (Event) -> Void + let onEvent: @MainActor (Event) -> Void private let dataCache: DataCache private let resource: ___VARIABLE_sceneIdentifier___Resource @@ -38,7 +38,7 @@ extension ___VARIABLE_sceneIdentifier___ComponentModel { final class ___VARIABLE_sceneIdentifier___ComponentModelMock: ___VARIABLE_sceneIdentifier___ComponentModelProtocol { typealias Event = ___VARIABLE_sceneIdentifier___ComponentModel.Event - var onEvent: (Event) -> Void = { _ in } + var onEvent: @MainActor (Event) -> Void = { _ in } func onAppear() async {} } diff --git a/Templates/Scene.xctemplate/Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift b/Templates/Scene.xctemplate/Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift index 6df1470..d22bb7b 100644 --- a/Templates/Scene.xctemplate/Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift +++ b/Templates/Scene.xctemplate/Scene/___VARIABLE_sceneIdentifier___ComponentModel.swift @@ -9,7 +9,7 @@ protocol ___VARIABLE_sceneIdentifier___ComponentModelProtocol: ComponentModel { final class ___VARIABLE_sceneIdentifier___ComponentModel: ___VARIABLE_sceneIdentifier___ComponentModelProtocol { - let onEvent: (Event) -> Void + let onEvent: @MainActor (Event) -> Void private let dataCache: DataCache @@ -35,7 +35,7 @@ extension ___VARIABLE_sceneIdentifier___ComponentModel { final class ___VARIABLE_sceneIdentifier___ComponentModelMock: ___VARIABLE_sceneIdentifier___ComponentModelProtocol { typealias Event = ___VARIABLE_sceneIdentifier___ComponentModel.Event - var onEvent: (Event) -> Void = { _ in } + var onEvent: @MainActor (Event) -> Void = { _ in } func onAppear() async {} } diff --git a/Templates/SceneFlowProvider.xctemplate/___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider.swift b/Templates/SceneFlowProvider.xctemplate/___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider.swift index 0513b74..7edbf1d 100644 --- a/Templates/SceneFlowProvider.xctemplate/___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider.swift +++ b/Templates/SceneFlowProvider.xctemplate/___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider.swift @@ -8,7 +8,7 @@ import SwiftUI final class ___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider: CoordinatorSceneFlowProvider { let navigateTo: (Destination) -> Void let pop: () -> Void - let present: ((Destination, ModalCoverModel.Style) -> Void)? = nil + let present: ((Destination, ModalCoverModelStyle) -> Void)? = nil let dismissModal: (() -> Void)? = nil let onModalDismiss: (() -> Void)? = nil let popTo: ((Destination?) -> Void)? = nil @@ -39,7 +39,7 @@ final class ___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider: Coordin extension ___VARIABLE_sceneFlowProviderIdentifier___SceneFlowProvider { @EnumIdentable - enum Destination: Hashable, Identifiable { + enum Destination { case someDestination case otherDestination // Uncomment 'end' case if the coordinator may present additional scenes following those defined by the flow provider. diff --git a/Templates/SwiftUI App.xctemplate/AppCoordinator.swift b/Templates/SwiftUI App.xctemplate/AppCoordinator.swift index a9eb2c5..d3ad20f 100644 --- a/Templates/SwiftUI App.xctemplate/AppCoordinator.swift +++ b/Templates/SwiftUI App.xctemplate/AppCoordinator.swift @@ -9,6 +9,7 @@ final class AppCoordinator: ObservableObject { self.container = container } + @MainActor var rootView: some View { ExampleFlowCoordinator.rootView( with: ExampleFlowCoordinator(container: container) diff --git a/Templates/SwiftUI App.xctemplate/ExampleComponentModel.swift b/Templates/SwiftUI App.xctemplate/ExampleComponentModel.swift index d9566f8..0278a1a 100644 --- a/Templates/SwiftUI App.xctemplate/ExampleComponentModel.swift +++ b/Templates/SwiftUI App.xctemplate/ExampleComponentModel.swift @@ -4,12 +4,12 @@ import FuturedArchitecture protocol ExampleComponentModelProtocol: ComponentModel { func onAppear() async - func onTouchUpInside() + @MainActor func onTouchUpInside() } final class ExampleComponentModel: ExampleComponentModelProtocol { - let onEvent: (Event) -> Void + let onEvent: @MainActor (Event) -> Void private let dataCache: DataCache @@ -26,6 +26,7 @@ final class ExampleComponentModel: ExampleComponentModelProtocol { // Fetch fresh data } + @MainActor func onTouchUpInside() { onEvent(.touchEvent) } @@ -41,7 +42,7 @@ extension ExampleComponentModel { final class ExampleComponentModelMock: ExampleComponentModelProtocol { typealias Event = ExampleComponentModel.Event - var onEvent: (Event) -> Void = { _ in } + var onEvent: @MainActor (Event) -> Void = { _ in } func onAppear() async { } diff --git a/Templates/SwiftUI App.xctemplate/ExampleFlowCoordinator.swift b/Templates/SwiftUI App.xctemplate/ExampleFlowCoordinator.swift index 71e713d..721640c 100644 --- a/Templates/SwiftUI App.xctemplate/ExampleFlowCoordinator.swift +++ b/Templates/SwiftUI App.xctemplate/ExampleFlowCoordinator.swift @@ -14,6 +14,7 @@ final class ExampleFlowCoordinator: NavigationStackCoordinator { self.container = container } + @MainActor static func rootView(with instance: ExampleFlowCoordinator) -> some View { NavigationStackFlow(coordinator: instance) { ExampleComponent( @@ -28,7 +29,7 @@ final class ExampleFlowCoordinator: NavigationStackCoordinator { } } - @ViewBuilder + @MainActor @ViewBuilder func scene(for destination: Destination) -> some View { switch destination { case .destination: @@ -39,7 +40,7 @@ final class ExampleFlowCoordinator: NavigationStackCoordinator { extension ExampleFlowCoordinator { @EnumIdentable - enum Destination: Hashable, Identifiable { + enum Destination { case destination } } diff --git a/Templates/Tab Coordinator.xctemplate/___VARIABLE_tabCoordinatorIdentifier___TabCoordinator.swift b/Templates/Tab Coordinator.xctemplate/___VARIABLE_tabCoordinatorIdentifier___TabCoordinator.swift index d7e963d..1c81259 100644 --- a/Templates/Tab Coordinator.xctemplate/___VARIABLE_tabCoordinatorIdentifier___TabCoordinator.swift +++ b/Templates/Tab Coordinator.xctemplate/___VARIABLE_tabCoordinatorIdentifier___TabCoordinator.swift @@ -15,6 +15,7 @@ final class ___VARIABLE_tabCoordinatorIdentifier___TabCoordinator: TabCoordinato @Published var selectedTab: Tab @Published var modalCover: ModalCoverModel? + @MainActor init(container: Container, selectedTab: Tab) { self.container = container self.selectedTab = selectedTab @@ -47,7 +48,7 @@ final class ___VARIABLE_tabCoordinatorIdentifier___TabCoordinator: TabCoordinato extension ___VARIABLE_tabCoordinatorIdentifier___TabCoordinator { @EnumIdentable - enum Destination: Hashable, Identifiable { + enum Destination { case destination } }