Skip to content

Commit 876e575

Browse files
authored
[BREAKING CHANGE]: update WorkflowAction API to expose access to Workflow instance values (#349)
this BREAKING change updates the WorkflowAction API to pass through a new parameter in the `apply()` method that allows reading values off the corresponding node's current Workflow instance. the new method signature is: ```swift func apply(toState state: inout State, context: ApplyContext<WorkflowType>) -> Output? ``` which mirrors the `render()` API, but uses a new `ApplyContext` parameter to expose access to the runtime-managed data. the public API for `ApplyContext` exposes a read-only subscript for accessing Workflow values via keypath: ```swift public struct ApplyContext<WorkflowType: Workflow> { public subscript<Value>( workflowValue keyPath: KeyPath<WorkflowType, Value> ) -> Value } ``` --- for reviewing purposes, i'd suggest using the 'commit filter' function to exclude the commit labeled 'AUTOMATED' as that one is essentially just noise where a bunch of new parameters were added. also, there's definitely some more documentation to be written here, but i've currently punted on that somewhat. do feel free to point out places you'd like to see anything specific though.
1 parent e3a157c commit 876e575

File tree

58 files changed

+536
-93
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+536
-93
lines changed

Samples/AsyncWorker/Sources/AsyncWorkerWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extension AsyncWorkerWorkflow {
3434

3535
typealias WorkflowType = AsyncWorkerWorkflow
3636

37-
func apply(toState state: inout AsyncWorkerWorkflow.State) -> AsyncWorkerWorkflow.Output? {
37+
func apply(toState state: inout AsyncWorkerWorkflow.State, context: ApplyContext<WorkflowType>) -> AsyncWorkerWorkflow.Output? {
3838
switch self {
3939
// Update state and produce an optional output based on which action was received.
4040
case .fakeNetworkRequestLoaded(let result):

Samples/ObservableComposition/Sources/CounterWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ struct CounterWorkflow: Workflow {
4949
case increment
5050
case decrement
5151

52-
func apply(toState state: inout CounterWorkflow.State) -> CounterWorkflow.Output? {
52+
func apply(toState state: inout CounterWorkflow.State, context: ApplyContext<WorkflowType>) -> CounterWorkflow.Output? {
5353
switch self {
5454
case .increment:
5555
state.count += state.info.stepSize

Samples/ObservableComposition/Sources/MultiCounterWorkflow.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ struct MultiCounterWorkflow: Workflow {
3131
struct ResetAction: WorkflowAction {
3232
typealias WorkflowType = MultiCounterWorkflow
3333

34-
func apply(toState state: inout MultiCounterWorkflow.State) -> Never? {
34+
func apply(toState state: inout MultiCounterWorkflow.State, context: ApplyContext<WorkflowType>) -> Never? {
3535
state.resetToken = .init()
3636
return nil
3737
}
@@ -43,7 +43,7 @@ struct MultiCounterWorkflow: Workflow {
4343

4444
case showSum(Bool)
4545

46-
func apply(toState state: inout MultiCounterWorkflow.State) -> Never? {
46+
func apply(toState state: inout MultiCounterWorkflow.State, context: ApplyContext<WorkflowType>) -> Never? {
4747
switch self {
4848
case .showSum(let showSum):
4949
state.showSum = showSum
@@ -58,7 +58,7 @@ struct MultiCounterWorkflow: Workflow {
5858
case addCounter
5959
case removeCounter(UUID)
6060

61-
func apply(toState state: inout MultiCounterWorkflow.State) -> Never? {
61+
func apply(toState state: inout MultiCounterWorkflow.State, context: ApplyContext<WorkflowType>) -> Never? {
6262
switch self {
6363
case .addCounter:
6464
state.addCounter()

Samples/SampleApp/Sources/DemoWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ extension DemoWorkflow {
7676
case refreshComplete(String)
7777
case refreshError(Error)
7878

79-
func apply(toState state: inout DemoWorkflow.State) -> DemoWorkflow.Output? {
79+
func apply(toState state: inout DemoWorkflow.State, context: ApplyContext<WorkflowType>) -> DemoWorkflow.Output? {
8080
switch self {
8181
case .titleButtonTapped:
8282
switch state.colorState {

Samples/SampleApp/Sources/RootWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ extension RootWorkflow {
4545

4646
case login(name: String)
4747

48-
func apply(toState state: inout RootWorkflow.State) -> RootWorkflow.Output? {
48+
func apply(toState state: inout RootWorkflow.State, context: ApplyContext<WorkflowType>) -> RootWorkflow.Output? {
4949
switch self {
5050
case .login(name: let name):
5151
state = .demo(name: name)

Samples/SampleApp/Sources/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ extension WelcomeWorkflow {
4646
case nameChanged(String)
4747
case login
4848

49-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
49+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5050
switch self {
5151
case .nameChanged(let updatedName):
5252
state.name = updatedName

Samples/SplitScreenContainer/DemoApp/DemoWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ extension DemoWorkflow {
4343

4444
case viewTapped
4545

46-
func apply(toState state: inout DemoWorkflow.State) -> Never? {
46+
func apply(toState state: inout DemoWorkflow.State, context: ApplyContext<WorkflowType>) -> Never? {
4747
switch self {
4848
case .viewTapped:
4949
state += 1

Samples/TicTacToe/Sources/Authentication/AuthenticationWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ extension AuthenticationWorkflow {
6161
case authenticationError(AuthenticationService.AuthenticationError)
6262
case dismissAuthenticationAlert
6363

64-
func apply(toState state: inout AuthenticationWorkflow.State) -> AuthenticationWorkflow.Output? {
64+
func apply(toState state: inout AuthenticationWorkflow.State, context: ApplyContext<WorkflowType>) -> AuthenticationWorkflow.Output? {
6565
switch self {
6666
case .back:
6767
switch state {

Samples/TicTacToe/Sources/Authentication/LoginWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ extension LoginWorkflow {
4949
case passwordUpdated(String)
5050
case login
5151

52-
func apply(toState state: inout LoginWorkflow.State) -> LoginWorkflow.Output? {
52+
func apply(toState state: inout LoginWorkflow.State, context: ApplyContext<WorkflowType>) -> LoginWorkflow.Output? {
5353
switch self {
5454
case .emailUpdated(let email):
5555
state.email = email

Samples/TicTacToe/Sources/Game/ConfirmQuitWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ extension ConfirmQuitWorkflow {
5656

5757
typealias WorkflowType = ConfirmQuitWorkflow
5858

59-
func apply(toState state: inout ConfirmQuitWorkflow.State) -> ConfirmQuitWorkflow.Output? {
59+
func apply(toState state: inout ConfirmQuitWorkflow.State, context: ApplyContext<WorkflowType>) -> ConfirmQuitWorkflow.Output? {
6060
switch self {
6161
case .cancel:
6262
return .cancel

Samples/TicTacToe/Sources/Game/RunGameWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ extension RunGameWorkflow {
5858
case back
5959
case confirmQuit
6060

61-
func apply(toState state: inout RunGameWorkflow.State) -> RunGameWorkflow.Output? {
61+
func apply(toState state: inout RunGameWorkflow.State, context: ApplyContext<WorkflowType>) -> RunGameWorkflow.Output? {
6262
switch self {
6363
case .updatePlayerX(let name):
6464
state.playerX = name

Samples/TicTacToe/Sources/Game/TakeTurnsWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ extension TakeTurnsWorkflow {
4747

4848
case selected(row: Int, col: Int)
4949

50-
func apply(toState state: inout TakeTurnsWorkflow.State) -> TakeTurnsWorkflow.Output? {
50+
func apply(toState state: inout TakeTurnsWorkflow.State, context: ApplyContext<WorkflowType>) -> TakeTurnsWorkflow.Output? {
5151
switch state.gameState {
5252
case .ongoing(turn: let turn):
5353
switch self {

Samples/TicTacToe/Sources/Main/MainWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ extension MainWorkflow {
4848
case authenticated(sessionToken: String)
4949
case logout
5050

51-
func apply(toState state: inout MainWorkflow.State) -> MainWorkflow.Output? {
51+
func apply(toState state: inout MainWorkflow.State, context: ApplyContext<WorkflowType>) -> MainWorkflow.Output? {
5252
switch self {
5353
case .authenticated(sessionToken: let sessionToken):
5454
state = .runningGame(sessionToken: sessionToken)

Samples/Tutorial/Frameworks/Tutorial1Complete/Sources/Welcome/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ extension WelcomeWorkflow {
4747

4848
case nameChanged(name: String)
4949

50-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
50+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5151
switch self {
5252
case .nameChanged(name: let name):
5353
// Update our state with the updated name.

Samples/Tutorial/Frameworks/Tutorial2Complete/Sources/RootWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ extension RootWorkflow {
5454
case logIn(name: String)
5555
case logOut
5656

57-
func apply(toState state: inout RootWorkflow.State) -> RootWorkflow.Output? {
57+
func apply(toState state: inout RootWorkflow.State, context: ApplyContext<WorkflowType>) -> RootWorkflow.Output? {
5858
switch self {
5959
case .logIn(name: let name):
6060
// When the `login` action is received, change the state to `todo`.

Samples/Tutorial/Frameworks/Tutorial2Complete/Sources/Todo/List/TodoListWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ extension TodoListWorkflow {
4545
enum Action: WorkflowAction {
4646
typealias WorkflowType = TodoListWorkflow
4747

48-
func apply(toState state: inout TodoListWorkflow.State) -> TodoListWorkflow.Output? {
48+
func apply(toState state: inout TodoListWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoListWorkflow.Output? {
4949
switch self {
5050
// Update state and produce an optional output based on which action was received.
5151
}

Samples/Tutorial/Frameworks/Tutorial2Complete/Sources/Welcome/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extension WelcomeWorkflow {
5050
case nameChanged(name: String)
5151
case didLogIn
5252

53-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
53+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5454
switch self {
5555
case .nameChanged(name: let name):
5656
// Update our state with the updated name.

Samples/Tutorial/Frameworks/Tutorial3Complete/Sources/RootWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ extension RootWorkflow {
5454
case logIn(name: String)
5555
case logOut
5656

57-
func apply(toState state: inout RootWorkflow.State) -> RootWorkflow.Output? {
57+
func apply(toState state: inout RootWorkflow.State, context: ApplyContext<WorkflowType>) -> RootWorkflow.Output? {
5858
switch self {
5959
case .logIn(name: let name):
6060
state = .todo(name: name)

Samples/Tutorial/Frameworks/Tutorial3Complete/Sources/Todo/Edit/TodoEditWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ extension TodoEditWorkflow {
6666
case discardChanges
6767
case saveChanges
6868

69-
func apply(toState state: inout TodoEditWorkflow.State) -> TodoEditWorkflow.Output? {
69+
func apply(toState state: inout TodoEditWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoEditWorkflow.Output? {
7070
switch self {
7171
case .titleChanged(let title):
7272
state.todo.title = title

Samples/Tutorial/Frameworks/Tutorial3Complete/Sources/Todo/List/TodoListWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ extension TodoListWorkflow {
7373
case discardChanges
7474
case saveChanges(todo: TodoModel, index: Int)
7575

76-
func apply(toState state: inout TodoListWorkflow.State) -> TodoListWorkflow.Output? {
76+
func apply(toState state: inout TodoListWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoListWorkflow.Output? {
7777
switch self {
7878
case .onBack:
7979
// When a `.onBack` action is received, emit a `.back` output

Samples/Tutorial/Frameworks/Tutorial3Complete/Sources/Welcome/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extension WelcomeWorkflow {
5050
case nameChanged(name: String)
5151
case didLogIn
5252

53-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
53+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5454
switch self {
5555
case .nameChanged(name: let name):
5656
// Update our state with the updated name.

Samples/Tutorial/Frameworks/Tutorial4Complete/Sources/RootWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ extension RootWorkflow {
5454
case logIn(name: String)
5555
case logOut
5656

57-
func apply(toState state: inout RootWorkflow.State) -> RootWorkflow.Output? {
57+
func apply(toState state: inout RootWorkflow.State, context: ApplyContext<WorkflowType>) -> RootWorkflow.Output? {
5858
switch self {
5959
case .logIn(name: let name):
6060
// When the `login` action is received, change the state to `todo`.

Samples/Tutorial/Frameworks/Tutorial4Complete/Sources/Todo/Edit/TodoEditWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ extension TodoEditWorkflow {
6666
case discardChanges
6767
case saveChanges
6868

69-
func apply(toState state: inout TodoEditWorkflow.State) -> TodoEditWorkflow.Output? {
69+
func apply(toState state: inout TodoEditWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoEditWorkflow.Output? {
7070
switch self {
7171
case .titleChanged(let title):
7272
state.todo.title = title

Samples/Tutorial/Frameworks/Tutorial4Complete/Sources/Todo/List/TodoListWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ extension TodoListWorkflow {
5858
case selectTodo(index: Int)
5959
case new
6060

61-
func apply(toState state: inout TodoListWorkflow.State) -> TodoListWorkflow.Output? {
61+
func apply(toState state: inout TodoListWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoListWorkflow.Output? {
6262
switch self {
6363
case .onBack:
6464
// When a `.onBack` action is received, emit a `.back` output

Samples/Tutorial/Frameworks/Tutorial4Complete/Sources/Todo/TodoWorkflow.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ extension TodoWorkflow {
7171
case editTodo(index: Int)
7272
case newTodo
7373

74-
func apply(toState state: inout TodoWorkflow.State) -> TodoWorkflow.Output? {
74+
func apply(toState state: inout TodoWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoWorkflow.Output? {
7575
switch self {
7676
case .back:
7777
return .back
@@ -97,7 +97,7 @@ extension TodoWorkflow {
9797
case discardChanges
9898
case saveChanges(todo: TodoModel, index: Int)
9999

100-
func apply(toState state: inout TodoWorkflow.State) -> TodoWorkflow.Output? {
100+
func apply(toState state: inout TodoWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoWorkflow.Output? {
101101
guard case .edit = state.step else {
102102
fatalError("Received edit action when state was not `.edit`.")
103103
}

Samples/Tutorial/Frameworks/Tutorial4Complete/Sources/Welcome/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extension WelcomeWorkflow {
5050
case nameChanged(name: String)
5151
case didLogIn
5252

53-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
53+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5454
switch self {
5555
case .nameChanged(name: let name):
5656
// Update our state with the updated name.

Samples/Tutorial/Frameworks/Tutorial5Complete/Sources/RootWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ extension RootWorkflow {
5454
case logIn(name: String)
5555
case logOut
5656

57-
func apply(toState state: inout RootWorkflow.State) -> RootWorkflow.Output? {
57+
func apply(toState state: inout RootWorkflow.State, context: ApplyContext<WorkflowType>) -> RootWorkflow.Output? {
5858
switch self {
5959
case .logIn(name: let name):
6060
state = .todo(name: name)

Samples/Tutorial/Frameworks/Tutorial5Complete/Sources/Todo/Edit/TodoEditWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ extension TodoEditWorkflow {
6666
case discardChanges
6767
case saveChanges
6868

69-
func apply(toState state: inout TodoEditWorkflow.State) -> TodoEditWorkflow.Output? {
69+
func apply(toState state: inout TodoEditWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoEditWorkflow.Output? {
7070
switch self {
7171
case .titleChanged(let title):
7272
state.todo.title = title

Samples/Tutorial/Frameworks/Tutorial5Complete/Sources/Todo/List/TodoListWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ extension TodoListWorkflow {
5858
case selectTodo(index: Int)
5959
case new
6060

61-
func apply(toState state: inout TodoListWorkflow.State) -> TodoListWorkflow.Output? {
61+
func apply(toState state: inout TodoListWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoListWorkflow.Output? {
6262
switch self {
6363
case .onBack:
6464
// When a `.onBack` action is received, emit a `.back` output

Samples/Tutorial/Frameworks/Tutorial5Complete/Sources/Todo/TodoWorkflow.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ extension TodoWorkflow {
7171
case editTodo(index: Int)
7272
case newTodo
7373

74-
func apply(toState state: inout TodoWorkflow.State) -> TodoWorkflow.Output? {
74+
func apply(toState state: inout TodoWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoWorkflow.Output? {
7575
switch self {
7676
case .back:
7777
return .back
@@ -97,7 +97,7 @@ extension TodoWorkflow {
9797
case discardChanges
9898
case saveChanges(todo: TodoModel, index: Int)
9999

100-
func apply(toState state: inout TodoWorkflow.State) -> TodoWorkflow.Output? {
100+
func apply(toState state: inout TodoWorkflow.State, context: ApplyContext<WorkflowType>) -> TodoWorkflow.Output? {
101101
guard case .edit = state.step else {
102102
fatalError("Received edit action when state was not `.edit`.")
103103
}

Samples/Tutorial/Frameworks/Tutorial5Complete/Sources/Welcome/WelcomeWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extension WelcomeWorkflow {
5050
case nameChanged(name: String)
5151
case didLogIn
5252

53-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
53+
func apply(toState state: inout WelcomeWorkflow.State, context: ApplyContext<WorkflowType>) -> WelcomeWorkflow.Output? {
5454
switch self {
5555
case .nameChanged(name: let name):
5656
// Update our state with the updated name.

Samples/WorkflowCombineSampleApp/WorkflowCombineSampleApp/DemoWorkflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ extension DemoWorkflow {
3737

3838
let publishedDate: Date
3939

40-
func apply(toState state: inout DemoWorkflow.State) -> DemoWorkflow.Output? {
40+
func apply(toState state: inout DemoWorkflow.State, context: ApplyContext<WorkflowType>) -> DemoWorkflow.Output? {
4141
state.date = publishedDate
4242
return nil
4343
}

Tooling/Templates/Workflow (Verbose).xctemplate/Default/___FILEBASENAME___Workflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension ___VARIABLE_productName___Workflow {
2525
enum Action: WorkflowAction {
2626
typealias WorkflowType = ___VARIABLE_productName___Workflow
2727

28-
func apply(toState state: inout ___VARIABLE_productName___Workflow.State) -> ___VARIABLE_productName___Workflow.Output? {
28+
func applytoState state: inout ___VARIABLE_productName___Workflow.State, context: ApplyContext<WorkflowType> -> ___VARIABLE_productName___Workflow.Output? {
2929
switch self {
3030
// Update state and produce an optional output based on which action was received.
3131
}

Tooling/Templates/Workflow (Verbose).xctemplate/generateWorkerReactiveSwift/___FILEBASENAME___Workflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension ___VARIABLE_productName___Workflow {
2525
enum Action: WorkflowAction {
2626
typealias WorkflowType = ___VARIABLE_productName___Workflow
2727

28-
func apply(toState state: inout ___VARIABLE_productName___Workflow.State) -> ___VARIABLE_productName___Workflow.Output? {
28+
func apply(toState state: inout ___VARIABLE_productName___Workflow.State, context: ApplyContext<WorkflowType>) -> ___VARIABLE_productName___Workflow.Output? {
2929
switch self {
3030
// Update state and produce an optional output based on which action was received.
3131
}

Tooling/Templates/Workflow (Verbose).xctemplate/generateWorkerRxSwift/___FILEBASENAME___Workflow.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension ___VARIABLE_productName___Workflow {
2525
enum Action: WorkflowAction {
2626
typealias WorkflowType = ___VARIABLE_productName___Workflow
2727

28-
func apply(toState state: inout ___VARIABLE_productName___Workflow.State) -> ___VARIABLE_productName___Workflow.Output? {
28+
func apply(toState state: inout ___VARIABLE_productName___Workflow.State, context: ApplyContext<WorkflowType>) -> ___VARIABLE_productName___Workflow.Output? {
2929
switch self {
3030
// Update state and produce an optional output based on which action was received.
3131
}

Workflow/Sources/AnyWorkflowConvertible.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,12 @@ extension AnyWorkflowConvertible {
115115
/// Process an `Output`
116116
///
117117
/// - Parameter apply: On `Output`, mutate `State` as necessary and return new `Output` (or `nil`).
118-
public func onOutput<Parent>(_ apply: @escaping ((inout Parent.State, Output) -> Parent.Output?)) -> AnyWorkflow<Rendering, AnyWorkflowAction<Parent>> {
118+
public func onOutput<Parent>(
119+
_ apply: @escaping (inout Parent.State, Output) -> Parent.Output?
120+
) -> AnyWorkflow<Rendering, AnyWorkflowAction<Parent>> {
119121
asAnyWorkflow()
120122
.mapOutput { output in
121-
AnyWorkflowAction { state -> Parent.Output? in
123+
AnyWorkflowAction { state, _ -> Parent.Output? in
122124
apply(&state, output)
123125
}
124126
}

0 commit comments

Comments
 (0)