Skip to content

Commit ef7f59d

Browse files
committed
Fix filter-page interaction
1 parent 5eea639 commit ef7f59d

File tree

2 files changed

+121
-118
lines changed

2 files changed

+121
-118
lines changed

site/src/pages/WorkspacesPage/WorkspacesPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ const WorkspacesPage: FC = () => {
6565
onFilter={(query) => {
6666
setSearchParams({ filter: query })
6767
send({
68-
type: "GET_WORKSPACES",
68+
type: "UPDATE_FILTER",
6969
query,
7070
})
7171
}}

site/src/xServices/workspaces/workspacesXService.ts

Lines changed: 120 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -213,149 +213,149 @@ interface WorkspacesContext {
213213
}
214214

215215
type WorkspacesEvent =
216-
| { type: "GET_WORKSPACES"; query?: string }
216+
| { type: "UPDATE_FILTER"; query?: string }
217217
| { type: "UPDATE_VERSION"; workspaceId: string }
218218
| { type: "NEXT" }
219219
| { type: "PREVIOUS" }
220220
| { type: "GO_TO_PAGE"; page: number }
221221

222222
export const workspacesMachine =
223-
/** @xstate-layout N4IgpgJg5mDOIC5QHcD2AnA1rADgQwGM4BlAFz1LADpk8BLUgFVQCUwAzdOACwHUNs+IrADEAD1jlKVPO0roAFAFYADGoCUItFlyESU6rQbM2nHvx1C4AbRUBdRKBypYDOqgB2jkGMQBGAGYANgCqFQAmAE4-cIAOOPDwoIB2ZIAaEABPRHCVKljAv2S-EMiClSUAFliAXxqM7UE9WDIKanYwUgJuOg8oKgJUAFcPUioYUlJeqABhYdGRCE9qXoA3VExqCYsm4TmR0lsHJBBnVynPb18ESsq8uOLk2KCVSqVY4qUM7IQAyqoApElOFKskgpEUn5avUQI1dMJWtIOl0en0BvMxhMpn19gswOh0BgqDgADYUdgYAC2406O3hcFxh3s3jObkuJ2ufyUVEiAXi4QCySUAWBARF3xyaiowuqZShQSCiUidQaAnpLQMVGR3WmNDVVlgVCGOAgFGmdKsplESw8Kw8602RpNbQteitRxZLjZXg5iFitwByTKARUQVulQCiQlCBeeX9sWifihhXBKth+uaiPanR1aLhBppk3NGeEi2WVDWGy2tJLNmZJ1ZFx9oGub25f0jyQqSiUQvi0aUiqoiXCfnecT8kRUwTT+czmu1qP6c+EhexUFdpZtdod1dIm5sfmOTi9TauiFukWlCb5097-tD0cqQ57dw+8cCz9ntY1bS1OaXPVLGaNdi2A0t8UJdBiTJUgKXQalth-D0G1Pdxmx8fximHF5O1uVJKgFAJoxCZIqChPlIhBUMngib9wP0P9F2mMtbSoSQ-xXRikQA6YUJPc50PPBBAhSYcQWBJJcmBfsshyIpxNHLsCiUIFIyCejdm4sARAAcQAUUYAB9XgAHkWAAaWIAAFABBGZ9OIfjTjQ9kW0QABaQiwmKadkhDQjgmSSpow8gIx3Ivkg17KIwSUPxNPVLMRAAVWsgARWzGH0oyADV9JYYgAElTIAOWcxshN9BB4jIsdhReSpIgjJrwlCkU-CoYKlQqQVYniRKDWS0r9IADUYCrXIw64Sm5XsFSSHtR1BQJ2r8f5Xg+KIww+YogiUQb5zaERrJYfTcpKlKnPrATvWEwV-nBUdR0HZqRTDNaNuqZJtu+vaDphLjf0oPTTKMxgwbsgzJsEtzMIQd4gi6ypRNBO4BWeT6wm+37dtmuoYQ8VAIDgbwgazGh6CYVgOC4WA+B-T1Yem-wxUe3sij6uIOujUSeSCKF-MFXlAmBQ6EQXXi0UGA5QJxDEmbu6q-mHVT+oTEIYkIkK5N+K9ARUeIIlHNQRUqcXtP-FFdRl0YqG3RWz2qkIkdeP5XmKEEFujUckZ+0dnj5DGewCC3geza3pYV1DmeEjzAmRlQkz8acgg+ebQqqKhGqFCNIkiIUkmhVUGPDq3c2XH8nVNdcDytR2qvcmrIx5TmhUBJIk6+XXbliLrB369SDZTgGS60svmLzKusTA8eG7hzl-l7YoqKIxUShKJ83n7tOnnC7bwkHMOKcnyvS-t5Z55ZhBin+ajfIxsUIWjfy5pSXlFVDAfQ8Bn8T6ls+c8Y5KybvHUIhE4gqFSAqPqfIdY-HejvWIlFqh8gesfSWkcoBXzjgLROydU7pzBKFdaoQc6XjBOGEUGC2g4OqvHFQV5gpJyTIQoUxDdZeVeJFD4zUIypGKD-OoQA */
223+
/** @xstate-layout N4IgpgJg5mDOIC5QHcD2AnA1rADgQwGM4BlAFz1LADpk8BLUgFVQCUwAzdOACwHUNs+IrADEAD1jlKVPO0roAFAFYADGoCUItFlyESU6rQbM2nHvx1C4AbRUBdRKBypYDOqgB2jkGMQBGAGYANgCqFQAmAE4-cIAOOPDwoIB2ZIAaEABPRHCVKljAv2S-EMiClSUAFliAXxqM7UE9WDIKanYwUgJuOg8oKgJUAFcPUioYUlJeqABhYdGRCE9qXoA3VExqCYsm4TmR0lsHJBBnVynPb18ESsq8uOLk2KCVSqVY4qUM7IQAyqoApElOFKskgpEUn5avUQI1dMJWtIOl0en0BvMxhMpn19gswOh0BgqDgADYUdgYAC2406O3hcFxh3s3jObkuJ2ufyUVEiAXi4QCySUAWBARF3xyaiowuqZShQSCiUidQaAnpLQMVGR3WmNDVVlgVCGOAgFGmdKsplESw8Kw8602RpNbQteitRxZLjZXg5iFitwByTKARUQVulQCiQlCBeeX9sWifihhXBKth+uaiPanR1aLhBppk3NGeEi2WVDWGy2tJLNmZJ1ZFx9oGub25f0jyQqSiUQvi0aUiqoiXCfnecT8kRUwTT+czmu1qP6c+EhexUFdpZtdod1dIm5sfmOTi9TauiFukWlCb5097-tD0cqQ57dw+8cCz9ntY1bS1OaXPVLGaNdi2A0t8UJdBiTJUgKXQalth-D0G1Pdxmx8fximHF5O1uVJKgFAJoxCZIqChPlIhBUMngib9wP0P9F2mMtbSoSQ-xXRikQA6YUJPc50PPBBAhSYcQWBJJcmBfsshyIpxNHLsCiUIFIyCejdm4sARAAcQAUUYAB9XgAHkWAAaWIAAFABBGZ9OIfjTjQ9kW0QABaQiwmKadkhDQjgmSSpow8gIx3Ivkg17KIwSUPxNPVLMRAAVWsgARWzGH0oyADEAEkABlspYZzGyE30ECePwAVicLkiiJNKjHcJQvC-5Xg+Io+XHYFEoNZK0sy7KjIANX0lhiHy0yADkytcjDrj8NQyNHBUilUYplsiNrvJFJJVEHZqew0mEuN-SgRBm-SAA1GHmwS3MwkSgm5XsFQO4E-FBQI2u+sJqgaiFAeKV7+vnNoRGslh9NG6aUqc+sBO9YTBX+cFR1HQdIgjI6-o6wGojDD5QaUcGEQMPTTKMxhqbsgyHpRyr3iCKhgtE0E7gFZ58YBj4iZBkoybTDxUAgOBvHOrMaHoJhWA4LhYD4H9PUexb-DFdHe26p44hFPxo1EnkgihfzBV5QI+rOn9peYtFBgOUCcQxVWmfc35-nCVTYh9iFwpBEFo0BAEp3iCJRzUEVKnJ7T-xRXUHdGKht1ds9KpCVnXj+V5ihBD7ozWtnEnlPluZ7AIY4u7N4-tl3ULV4SPMCNm7iTZbgg+d7QqqKgXlBYIIxUSIcd5Svbd4vMfydU11wPK1U4q926vCHkdeFKiXjHJ9qjZwcffUwEVGW4XVQYqu49zZcp6xMCtPgeu3eev5pVSSdEjFRUShKbfuSFIJ339hCL2p1T533HjXK+Z9k7LAXk9a4xRPZ3F8tzMUEJoz+TeikXkipQx7wrtbM+4DL5ATvrA9WCAm6hEInEFQqQFSCjqv6IOg5d7-zeIEP4pQx4LgnlAMhjcTYtyPkmac-8hRglCt9UIfcGrdg+LQj43C2j8Mqk3IeQi26iM7hIuSFC7j-ECD7LOdVBRDzqHUIAA */
224224
createMachine(
225225
{
226-
tsTypes: {} as import("./workspacesXService.typegen").Typegen1,
227-
schema: {
228-
context: {} as WorkspacesContext,
229-
events: {} as WorkspacesEvent,
230-
services: {} as {
231-
getWorkspaces: {
232-
data: TypesGen.Workspace[]
233-
}
234-
getWorkspacesCount: {
235-
data: { count: number }
236-
}
237-
updateWorkspaceRefs: {
238-
data: {
239-
refsToKeep: WorkspaceItemMachineRef[]
240-
newWorkspaces: TypesGen.Workspace[]
241-
}
242-
}
243-
},
244-
},
245-
predictableActionArguments: true,
246-
id: "workspacesState",
247-
on: {
248-
GET_WORKSPACES: {
249-
target: ".fetching",
250-
actions: "assignFilter",
251-
},
252-
UPDATE_VERSION: {
253-
actions: "triggerUpdateVersion",
254-
},
255-
NEXT: {
256-
target: ".fetching",
257-
actions: ["assignNextPage", "onPageChange"],
258-
},
259-
PREVIOUS: {
260-
target: ".fetching",
261-
actions: ["assignPreviousPage", "onPageChange"],
262-
},
263-
GO_TO_PAGE: {
264-
target: ".fetching",
265-
actions: ["assignPage", "onPageChange"],
226+
tsTypes: {} as import("./workspacesXService.typegen").Typegen1,
227+
schema: {
228+
context: {} as WorkspacesContext,
229+
events: {} as WorkspacesEvent,
230+
services: {} as {
231+
getWorkspaces: {
232+
data: TypesGen.Workspace[]
233+
}
234+
getWorkspacesCount: {
235+
data: { count: number }
236+
}
237+
updateWorkspaceRefs: {
238+
data: {
239+
refsToKeep: WorkspaceItemMachineRef[]
240+
newWorkspaces: TypesGen.Workspace[]
241+
}
242+
}
243+
},
244+
},
245+
predictableActionArguments: true,
246+
id: "workspacesState",
247+
on: {
248+
UPDATE_FILTER: {
249+
target: ".fetching",
250+
actions: ["assignFilter", "resetPage"],
251+
},
252+
UPDATE_VERSION: {
253+
actions: "triggerUpdateVersion",
254+
},
255+
NEXT: {
256+
target: ".fetching",
257+
actions: ["assignNextPage", "onPageChange"],
258+
},
259+
PREVIOUS: {
260+
target: ".fetching",
261+
actions: ["assignPreviousPage", "onPageChange"],
262+
},
263+
GO_TO_PAGE: {
264+
target: ".fetching",
265+
actions: ["assignPage", "onPageChange"],
266+
},
267+
},
268+
initial: "fetching",
269+
states: {
270+
waitToRefreshWorkspaces: {
271+
after: {
272+
"5000": {
273+
target: "#workspacesState.fetching",
274+
actions: [],
275+
internal: false,
266276
},
267277
},
268-
initial: "fetching",
278+
},
279+
fetching: {
280+
type: "parallel",
269281
states: {
270-
waitToRefreshWorkspaces: {
271-
after: {
272-
"5000": {
273-
target: "#workspacesState.fetching",
274-
actions: [],
275-
internal: false,
282+
count: {
283+
initial: "gettingCount",
284+
states: {
285+
gettingCount: {
286+
entry: "clearGetCountError",
287+
invoke: {
288+
src: "getWorkspacesCount",
289+
id: "getWorkspacesCount",
290+
onDone: [
291+
{
292+
target: "done",
293+
actions: "assignCount",
294+
},
295+
],
296+
onError: [
297+
{
298+
target: "done",
299+
actions: "assignGetCountError",
300+
},
301+
],
302+
},
303+
},
304+
done: {
305+
type: "final",
276306
},
277307
},
278308
},
279-
fetching: {
280-
type: "parallel",
309+
workspaces: {
310+
initial: "gettingWorkspaces",
281311
states: {
282-
count: {
283-
initial: "gettingCount",
284-
states: {
285-
gettingCount: {
286-
entry: "clearGetCountError",
287-
invoke: {
288-
src: "getWorkspacesCount",
289-
id: "getWorkspacesCount",
290-
onDone: [
291-
{
292-
target: "done",
293-
actions: "assignCount",
294-
},
295-
],
296-
onError: [
297-
{
298-
target: "done",
299-
actions: "assignGetCountError",
300-
},
301-
],
312+
updatingWorkspaceRefs: {
313+
invoke: {
314+
src: "updateWorkspaceRefs",
315+
id: "updateWorkspaceRefs",
316+
onDone: [
317+
{
318+
target: "done",
319+
actions: "assignUpdatedWorkspaceRefs",
302320
},
303-
},
304-
done: {
305-
type: "final",
306-
},
321+
],
307322
},
308323
},
309-
workspaces: {
310-
initial: "gettingWorkspaces",
311-
states: {
312-
updatingWorkspaceRefs: {
313-
invoke: {
314-
src: "updateWorkspaceRefs",
315-
id: "updateWorkspaceRefs",
316-
onDone: [
317-
{
318-
target: "done",
319-
actions: "assignUpdatedWorkspaceRefs",
320-
},
321-
],
324+
gettingWorkspaces: {
325+
entry: "clearGetWorkspacesError",
326+
invoke: {
327+
src: "getWorkspaces",
328+
id: "getWorkspaces",
329+
onDone: [
330+
{
331+
target: "done",
332+
cond: "isEmpty",
333+
actions: "assignWorkspaceRefs",
322334
},
323-
},
324-
gettingWorkspaces: {
325-
entry: "clearGetWorkspacesError",
326-
invoke: {
327-
src: "getWorkspaces",
328-
id: "getWorkspaces",
329-
onDone: [
330-
{
331-
target: "done",
332-
cond: "isEmpty",
333-
actions: "assignWorkspaceRefs",
334-
},
335-
{
336-
target: "updatingWorkspaceRefs",
337-
},
338-
],
339-
onError: [
340-
{
341-
target: "done",
342-
actions: "assignGetWorkspacesError",
343-
},
344-
],
335+
{
336+
target: "updatingWorkspaceRefs",
345337
},
346-
},
347-
done: {
348-
type: "final",
349-
},
338+
],
339+
onError: [
340+
{
341+
target: "done",
342+
actions: "assignGetWorkspacesError",
343+
},
344+
],
350345
},
351346
},
352-
},
353-
onDone: {
354-
target: "waitToRefreshWorkspaces",
347+
done: {
348+
type: "final",
349+
},
355350
},
356351
},
357352
},
353+
onDone: {
354+
target: "waitToRefreshWorkspaces",
355+
},
358356
},
357+
},
358+
},
359359
{
360360
guards: {
361361
isEmpty: (context) => !context.workspaceRefs,
@@ -406,6 +406,9 @@ export const workspacesMachine =
406406
assignPage: assign({
407407
page: (_, event) => event.page,
408408
}),
409+
resetPage: assign({
410+
page: (_) => 1
411+
}),
409412
assignCount: assign({
410413
count: (_, event) => event.data.count,
411414
}),

0 commit comments

Comments
 (0)