From 3043d106d3478c4dabb8729a2ba129e7171f5ba5 Mon Sep 17 00:00:00 2001 From: JunBook Date: Mon, 30 Sep 2024 17:26:11 +0900 Subject: [PATCH] Fix issue #3417: Add unique ID for independent timer operation --- .../02-AddingSideEffects/01-02-03-code-0005.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Sources/ComposableArchitecture/Documentation.docc/Tutorials/MeetTheComposableArchitecture/01-Essentials/02-AddingSideEffects/01-02-03-code-0005.swift b/Sources/ComposableArchitecture/Documentation.docc/Tutorials/MeetTheComposableArchitecture/01-Essentials/02-AddingSideEffects/01-02-03-code-0005.swift index 0b5ef8a21e8d..3ef74df40a8d 100644 --- a/Sources/ComposableArchitecture/Documentation.docc/Tutorials/MeetTheComposableArchitecture/01-Essentials/02-AddingSideEffects/01-02-03-code-0005.swift +++ b/Sources/ComposableArchitecture/Documentation.docc/Tutorials/MeetTheComposableArchitecture/01-Essentials/02-AddingSideEffects/01-02-03-code-0005.swift @@ -8,6 +8,7 @@ struct CounterFeature { var fact: String? var isLoading = false var isTimerRunning = false + let timerID = UUID() } enum Action { @@ -19,7 +20,7 @@ struct CounterFeature { case toggleTimerButtonTapped } - enum CancelID { case timer } + enum CancelID: Hashable { case timer(UUID) } var body: some ReducerOf { Reduce { state, action in @@ -56,6 +57,7 @@ struct CounterFeature { case .toggleTimerButtonTapped: state.isTimerRunning.toggle() + let cancelID = CancelID.timer(state.timerID) if state.isTimerRunning { return .run { send in while true { @@ -63,9 +65,9 @@ struct CounterFeature { await send(.timerTick) } } - .cancellable(id: CancelID.timer) + .cancellable(id: cancelID) } else { - return .cancel(id: CancelID.timer) + return .cancel(id: cancelID) } } }