Skip to content

Commit aaa78fb

Browse files
committed
update apply declarations
Replace ``` func apply\(toState ([a-zA-Z0-9_]+): inout ([a-zA-Z0-9_\.<>, ]+|\(\))\) -> ([a-zA-Z0-9_\.<>, ]+)\? ``` with ``` func apply(toState $1: inout $2, workflow: WorkflowType) -> $3? ```
1 parent df36d4d commit aaa78fb

File tree

51 files changed

+160
-70
lines changed

Some content is hidden

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

51 files changed

+160
-70
lines changed

Samples/AsyncWorker/Sources/AsyncWorkerWorkflow.swift

+1-1
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, workflow: 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/SampleApp/Sources/DemoWorkflow.swift

+1-1
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, workflow: WorkflowType) -> DemoWorkflow.Output? {
8080
switch self {
8181
case .titleButtonTapped:
8282
switch state.colorState {

Samples/SampleApp/Sources/RootWorkflow.swift

+1-1
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, workflow: WorkflowType) -> RootWorkflow.Output? {
4949
switch self {
5050
case .login(name: let name):
5151
state = .demo(name: name)

Samples/SampleApp/Sources/WelcomeWorkflow.swift

+1-1
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, workflow: WorkflowType) -> WelcomeWorkflow.Output? {
5050
switch self {
5151
case .nameChanged(let updatedName):
5252
state.name = updatedName
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* Copyright 2020 Square Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import SwiftUI
18+
import Workflow
19+
import WorkflowSwiftUI
20+
21+
struct CounterView: View {
22+
var body: some View {
23+
WorkflowView(
24+
workflow: CounterWorkflow(),
25+
onOutput: { _ in }
26+
) { rendering in
27+
VStack {
28+
Text("The value is \(rendering.value)")
29+
Button(action: rendering.onIncrement) {
30+
Text("+")
31+
}
32+
Button(action: rendering.onDecrement) {
33+
Text("-")
34+
}
35+
}
36+
}
37+
}
38+
}
39+
40+
struct CounterScreen {
41+
let value: Int
42+
var onIncrement: () -> Void
43+
var onDecrement: () -> Void
44+
}
45+
46+
struct CounterWorkflow: Workflow {
47+
enum Action: WorkflowAction {
48+
case increment
49+
case decrement
50+
51+
func apply(toState state: inout Int, workflow: WorkflowType) -> Never? {
52+
switch self {
53+
case .increment:
54+
state += 1
55+
case .decrement:
56+
state -= 1
57+
}
58+
return nil
59+
}
60+
61+
typealias WorkflowType = CounterWorkflow
62+
}
63+
64+
func makeInitialState() -> Int {
65+
return 0
66+
}
67+
68+
func workflowDidChange(from previousWorkflow: CounterWorkflow, state: inout Int) {}
69+
70+
func render(state: Int, context: RenderContext<CounterWorkflow>) -> CounterScreen {
71+
let sink = context.makeSink(of: Action.self)
72+
return CounterScreen(
73+
value: state,
74+
onIncrement: {
75+
sink.send(.increment)
76+
},
77+
onDecrement: {
78+
sink.send(.decrement)
79+
}
80+
)
81+
}
82+
83+
typealias Output = Never
84+
}
85+
86+
struct ContentView_Previews: PreviewProvider {
87+
static var previews: some View {
88+
CounterView()
89+
}
90+
}

Samples/SplitScreenContainer/DemoApp/DemoWorkflow.swift

+1-1
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, workflow: WorkflowType) -> Never? {
4747
switch self {
4848
case .viewTapped:
4949
state += 1

Samples/TicTacToe/Sources/Authentication/AuthenticationWorkflow.swift

+1-1
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, workflow: WorkflowType) -> AuthenticationWorkflow.Output? {
6565
switch self {
6666
case .back:
6767
switch state {

Samples/TicTacToe/Sources/Authentication/LoginWorkflow.swift

+1-1
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, workflow: WorkflowType) -> LoginWorkflow.Output? {
5353
switch self {
5454
case .emailUpdated(let email):
5555
state.email = email

Samples/TicTacToe/Sources/Game/ConfirmQuitWorkflow.swift

+1-1
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, workflow: WorkflowType) -> ConfirmQuitWorkflow.Output? {
6060
switch self {
6161
case .cancel:
6262
return .cancel

Samples/TicTacToe/Sources/Game/RunGameWorkflow.swift

+1-1
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, workflow: WorkflowType) -> RunGameWorkflow.Output? {
6262
switch self {
6363
case .updatePlayerX(let name):
6464
state.playerX = name

Samples/TicTacToe/Sources/Game/TakeTurnsWorkflow.swift

+1-1
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, workflow: WorkflowType) -> TakeTurnsWorkflow.Output? {
5151
switch state.gameState {
5252
case .ongoing(turn: let turn):
5353
switch self {

Samples/TicTacToe/Sources/Main/MainWorkflow.swift

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+2-2
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, workflow: 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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+1-1
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, workflow: 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

+2-2
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, workflow: 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, workflow: 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

+1-1
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, workflow: WorkflowType) -> WelcomeWorkflow.Output? {
5454
switch self {
5555
case .nameChanged(name: let name):
5656
// Update our state with the updated name.

Samples/Tutorial/Tutorial1.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ extension WelcomeWorkflow {
221221

222222
case nameChanged(name: String)
223223

224-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
224+
func apply(toState state: inout WelcomeWorkflow.State, workflow: WorkflowType) -> WelcomeWorkflow.Output? {
225225

226226
switch self {
227227

@@ -267,7 +267,7 @@ If we run the app again, it will still behave the same but we are now capturing
267267

268268
To see this, change the `apply` method to append an extra letter on the name received, eg:
269269
```swift
270-
func apply(toState state: inout WelcomeWorkflow.State) -> WelcomeWorkflow.Output? {
270+
func apply(toState state: inout WelcomeWorkflow.State, workflow: WorkflowType) -> WelcomeWorkflow.Output? {
271271

272272
switch self {
273273
case .nameChanged(name: let name):

0 commit comments

Comments
 (0)