Skip to content

Commit c5b333f

Browse files
committed
update state selectors
1 parent 7a00b14 commit c5b333f

File tree

3 files changed

+40
-33
lines changed

3 files changed

+40
-33
lines changed

Samples/AnimalsData/Sources/AnimalsData/Listener.swift

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ extension Listener {
5252
if UserDefaults.standard.isDebug {
5353
print("[AnimalsData][Listener] Old State: \(oldState)")
5454
print("[AnimalsData][Listener] Action: \(action)")
55-
print("[AnimalsData][Listener] New State: \(store.state)")
55+
let newState = store.select({ state in state })
56+
print("[AnimalsData][Listener] New State: \(newState)")
5657
}
5758
#endif
5859
guard let self = self else { return }
@@ -103,10 +104,11 @@ extension Listener {
103104
oldState: AnimalsState,
104105
action: AnimalsAction.UI.CategoryList
105106
) async {
107+
let newState = store.select({ state in state })
106108
switch action {
107109
case .onAppear:
108110
if oldState.categories.status == nil,
109-
store.state.categories.status == .waiting {
111+
newState.categories.status == .waiting {
110112
do {
111113
try await store.dispatch(
112114
thunk: self.session.fetchCategoriesQuery()
@@ -117,9 +119,9 @@ extension Listener {
117119
}
118120
case .onTapReloadSampleDataButton:
119121
if oldState.categories.status != .waiting,
120-
store.state.categories.status == .waiting,
122+
newState.categories.status == .waiting,
121123
oldState.animals.status != .waiting,
122-
store.state.animals.status == .waiting {
124+
newState.animals.status == .waiting {
123125
do {
124126
try await store.dispatch(
125127
thunk: self.session.reloadSampleDataMutation()
@@ -138,10 +140,11 @@ extension Listener {
138140
oldState: AnimalsState,
139141
action: AnimalsAction.UI.AnimalList
140142
) async {
143+
let newState = store.select({ state in state })
141144
switch action {
142145
case .onAppear:
143146
if oldState.animals.status == nil,
144-
store.state.animals.status == .waiting {
147+
newState.animals.status == .waiting {
145148
do {
146149
try await store.dispatch(
147150
thunk: self.session.fetchAnimalsQuery()
@@ -152,7 +155,7 @@ extension Listener {
152155
}
153156
case .onTapDeleteSelectedAnimalButton(animalId: let animalId):
154157
if oldState.animals.queue[animalId] != .waiting,
155-
store.state.animals.queue[animalId] == .waiting {
158+
newState.animals.queue[animalId] == .waiting {
156159
do {
157160
try await store.dispatch(
158161
thunk: self.session.deleteAnimalMutation(animalId: animalId)
@@ -171,10 +174,11 @@ extension Listener {
171174
oldState: AnimalsState,
172175
action: AnimalsAction.UI.AnimalDetail
173176
) async {
177+
let newState = store.select({ state in state })
174178
switch action {
175179
case .onTapDeleteSelectedAnimalButton(animalId: let animalId):
176180
if oldState.animals.queue[animalId] != .waiting,
177-
store.state.animals.queue[animalId] == .waiting {
181+
newState.animals.queue[animalId] == .waiting {
178182
do {
179183
try await store.dispatch(
180184
thunk: self.session.deleteAnimalMutation(animalId: animalId)
@@ -193,10 +197,11 @@ extension Listener {
193197
oldState: AnimalsState,
194198
action: AnimalsAction.UI.AnimalEditor
195199
) async {
200+
let newState = store.select({ state in state })
196201
switch action {
197202
case .onTapAddAnimalButton(id: let id, name: let name, diet: let diet, categoryId: let categoryId):
198203
if oldState.animals.queue[id] != .waiting,
199-
store.state.animals.queue[id] == .waiting {
204+
newState.animals.queue[id] == .waiting {
200205
do {
201206
try await store.dispatch(
202207
thunk: self.session.addAnimalMutation(id: id, name: name, diet: diet, categoryId: categoryId)
@@ -207,7 +212,7 @@ extension Listener {
207212
}
208213
case .onTapUpdateAnimalButton(animalId: let animalId, name: let name, diet: let diet, categoryId: let categoryId):
209214
if oldState.animals.queue[animalId] != .waiting,
210-
store.state.animals.queue[animalId] == .waiting {
215+
newState.animals.queue[animalId] == .waiting {
211216
do {
212217
try await store.dispatch(
213218
thunk: self.session.updateAnimalMutation(animalId: animalId, name: name, diet: diet, categoryId: categoryId)

Samples/QuakesData/Sources/QuakesData/Listener.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,11 @@ extension Listener {
9191
oldState: QuakesState,
9292
action: QuakesAction.UI.QuakeList
9393
) async {
94+
let newState = store.select({ state in state })
9495
switch action {
9596
case .onAppear:
9697
if oldState.quakes.status == nil,
97-
store.state.quakes.status == .waiting {
98+
newState.quakes.status == .waiting {
9899
do {
99100
try await store.dispatch(
100101
thunk: self.session.fetchLocalQuakesQuery()
@@ -105,7 +106,7 @@ extension Listener {
105106
}
106107
case .onTapRefreshQuakesButton(range: let range):
107108
if oldState.quakes.status != .waiting,
108-
store.state.quakes.status == .waiting {
109+
newState.quakes.status == .waiting {
109110
do {
110111
try await store.dispatch(
111112
thunk: self.session.fetchRemoteQuakesQuery(range: range)
@@ -168,6 +169,7 @@ extension Listener {
168169
oldState: QuakesState,
169170
action: QuakesAction.Data.PersistentSession.RemoteStore
170171
) async {
172+
let newState = store.select({ state in state })
171173
switch action {
172174
case .didFetchQuakes(result: let result):
173175
switch result {
@@ -177,16 +179,16 @@ extension Listener {
177179
var deleted = Array<Quake>()
178180
for quake in quakes {
179181
if oldState.quakes.data[quake.id] == nil,
180-
store.state.quakes.data[quake.id] != nil {
182+
newState.quakes.data[quake.id] != nil {
181183
inserted.append(quake)
182184
}
183185
if let oldQuake = oldState.quakes.data[quake.id],
184-
let quake = store.state.quakes.data[quake.id],
186+
let quake = newState.quakes.data[quake.id],
185187
oldQuake != quake {
186188
updated.append(quake)
187189
}
188190
if oldState.quakes.data[quake.id] != nil,
189-
store.state.quakes.data[quake.id] == nil {
191+
newState.quakes.data[quake.id] == nil {
190192
deleted.append(quake)
191193
}
192194
}

Tests/ImmutableDataTests/StoreTests.swift

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ extension StoreTests {
102102
#expect(self.reducer.parameterState == nil)
103103
#expect(self.reducer.parameterAction == nil)
104104

105-
#expect(await store.state === self.state)
105+
#expect(await store.select({ state in state }) === self.state)
106106
}
107107
}
108108

@@ -118,7 +118,7 @@ extension StoreTests {
118118
#expect(self.reducer.parameterState == nil)
119119
#expect(self.reducer.parameterAction == nil)
120120

121-
#expect(await store.state === self.state)
121+
#expect(await store.select({ state in state }) === self.state)
122122

123123
do {
124124
try await store.dispatch(action: self.action)
@@ -131,7 +131,7 @@ extension StoreTests {
131131
#expect(self.reducer.parameterState === self.state)
132132
#expect(self.reducer.parameterAction === self.action)
133133

134-
#expect(await store.state === self.state)
134+
#expect(await store.select({ state in state }) === self.state)
135135
}
136136
}
137137

@@ -145,14 +145,14 @@ extension StoreTests {
145145
#expect(self.reducer.parameterState == nil)
146146
#expect(self.reducer.parameterAction == nil)
147147

148-
#expect(await store.state === self.state)
148+
#expect(await store.select({ state in state }) === self.state)
149149

150150
try await store.dispatch(action: self.action)
151151

152152
#expect(self.reducer.parameterState === self.state)
153153
#expect(self.reducer.parameterAction === self.action)
154154

155-
#expect(await store.state === self.reducer.returnState)
155+
#expect(await store.select({ state in state }) === self.reducer.returnState)
156156
}
157157
}
158158

@@ -168,7 +168,7 @@ extension StoreTests {
168168
#expect(self.reducer.parameterState == nil)
169169
#expect(self.reducer.parameterAction == nil)
170170

171-
#expect(await store.state === self.state)
171+
#expect(await store.select({ state in state }) === self.state)
172172

173173
do {
174174
try await store.dispatch(thunk: self.thunk.thunk)
@@ -181,7 +181,7 @@ extension StoreTests {
181181
#expect(self.reducer.parameterState == nil)
182182
#expect(self.reducer.parameterAction == nil)
183183

184-
#expect(await store.state === self.state)
184+
#expect(await store.select({ state in state }) === self.state)
185185

186186
let parameterDispatcher = try #require(self.thunk.parameterDispatcher)
187187
#expect(parameterDispatcher === store)
@@ -201,14 +201,14 @@ extension StoreTests {
201201
#expect(self.reducer.parameterState == nil)
202202
#expect(self.reducer.parameterAction == nil)
203203

204-
#expect(await store.state === self.state)
204+
#expect(await store.select({ state in state }) === self.state)
205205

206206
try await store.dispatch(thunk: self.thunk.thunk)
207207

208208
#expect(self.reducer.parameterState == nil)
209209
#expect(self.reducer.parameterAction == nil)
210210

211-
#expect(await store.state === self.state)
211+
#expect(await store.select({ state in state }) === self.state)
212212

213213
let parameterDispatcher = try #require(self.thunk.parameterDispatcher)
214214
#expect(parameterDispatcher === store)
@@ -230,7 +230,7 @@ extension StoreTests {
230230
#expect(self.reducer.parameterState == nil)
231231
#expect(self.reducer.parameterAction == nil)
232232

233-
#expect(await store.state === self.state)
233+
#expect(await store.select({ state in state }) === self.state)
234234

235235
do {
236236
try await store.dispatch(thunk: self.thunk.asyncThunk)
@@ -243,7 +243,7 @@ extension StoreTests {
243243
#expect(self.reducer.parameterState == nil)
244244
#expect(self.reducer.parameterAction == nil)
245245

246-
#expect(await store.state === self.state)
246+
#expect(await store.select({ state in state }) === self.state)
247247

248248
let parameterDispatcher = try #require(self.thunk.parameterDispatcher)
249249
#expect(parameterDispatcher === store)
@@ -263,14 +263,14 @@ extension StoreTests {
263263
#expect(self.reducer.parameterState == nil)
264264
#expect(self.reducer.parameterAction == nil)
265265

266-
#expect(await store.state === self.state)
266+
#expect(await store.select({ state in state }) === self.state)
267267

268268
try await store.dispatch(thunk: self.thunk.asyncThunk)
269269

270270
#expect(self.reducer.parameterState == nil)
271271
#expect(self.reducer.parameterAction == nil)
272272

273-
#expect(await store.state === self.state)
273+
#expect(await store.select({ state in state }) === self.state)
274274

275275
let parameterDispatcher = try #require(self.thunk.parameterDispatcher)
276276
#expect(parameterDispatcher === store)
@@ -291,7 +291,7 @@ extension StoreTests {
291291
#expect(self.reducer.parameterState == nil)
292292
#expect(self.reducer.parameterAction == nil)
293293

294-
#expect(await store.state === self.state)
294+
#expect(await store.select({ state in state }) === self.state)
295295

296296
let stream = await store.makeStream()
297297

@@ -314,7 +314,7 @@ extension StoreTests {
314314
#expect(self.reducer.parameterState === self.state)
315315
#expect(self.reducer.parameterAction === self.action)
316316

317-
#expect(await store.state === self.reducer.returnState)
317+
#expect(await store.select({ state in state }) === self.reducer.returnState)
318318

319319
group.cancelAll()
320320
try await group.waitForAll()
@@ -324,7 +324,7 @@ extension StoreTests {
324324
#expect(self.reducer.parameterState === self.reducer.returnState)
325325
#expect(self.reducer.parameterAction === self.action)
326326

327-
#expect(await store.state === self.reducer.returnState)
327+
#expect(await store.select({ state in state }) === self.reducer.returnState)
328328
}
329329
}
330330
}
@@ -340,7 +340,7 @@ extension StoreTests {
340340
#expect(self.reducer.parameterState == nil)
341341
#expect(self.reducer.parameterAction == nil)
342342

343-
#expect(await store.state === self.state)
343+
#expect(await store.select({ state in state }) === self.state)
344344

345345
let stream = await store.makeStream()
346346

@@ -363,14 +363,14 @@ extension StoreTests {
363363
#expect(self.reducer.parameterState === self.state)
364364
#expect(self.reducer.parameterAction === self.action)
365365

366-
#expect(await store.state === self.reducer.returnState)
366+
#expect(await store.select({ state in state }) === self.reducer.returnState)
367367

368368
try await store.dispatch(action: self.action)
369369

370370
#expect(self.reducer.parameterState === self.reducer.returnState)
371371
#expect(self.reducer.parameterAction === self.action)
372372

373-
#expect(await store.state === self.reducer.returnState)
373+
#expect(await store.select({ state in state }) === self.reducer.returnState)
374374
}
375375
}
376376
}

0 commit comments

Comments
 (0)