Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit90b64c5

Browse files
chore: remove unecessary API.getWorkspaceParameters (#20462)
I initially created `API.getWorkspaceParameters` to group two relatedrequests, but after revisiting the implementation, I realized thisabstraction doesn’t add much value. It also prevents us from taking fulladvantage of React Query’s built-in caching and invalidation.So instead of grouping them, I removed the helper and replaced it withseparate queries — this simplifies the flow and lets React Query handlecaching more efficiently.Related to#20431 (comment)
1 parentd0fb459 commit90b64c5

File tree

10 files changed

+160
-140
lines changed

10 files changed

+160
-140
lines changed

‎site/src/api/api.ts‎

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2385,19 +2385,6 @@ class ApiMethods {
23852385
returnresponse.data;
23862386
};
23872387

2388-
getWorkspaceParameters=async(workspace:TypesGen.Workspace)=>{
2389-
constlatestBuild=workspace.latest_build;
2390-
const[templateVersionRichParameters,buildParameters]=awaitPromise.all([
2391-
this.getTemplateVersionRichParameters(latestBuild.template_version_id),
2392-
this.getWorkspaceBuildParameters(latestBuild.id),
2393-
]);
2394-
2395-
return{
2396-
templateVersionRichParameters,
2397-
buildParameters,
2398-
};
2399-
};
2400-
24012388
getInsightsUserLatency=async(
24022389
filters:InsightsParams,
24032390
):Promise<TypesGen.UserLatencyInsightsResponse>=>{

‎site/src/api/queries/templates.ts‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,15 @@ export const templateVersionLogs = (versionId: string) => {
249249
};
250250
};
251251

252+
exportconstrichParametersKey=(versionId:string)=>[
253+
templateVersionRoot,
254+
versionId,
255+
"richParameters",
256+
];
257+
252258
exportconstrichParameters=(versionId:string)=>{
253259
return{
254-
queryKey:[templateVersionRoot,versionId,"richParameters"],
260+
queryKey:richParametersKey(versionId),
255261
queryFn:()=>API.getTemplateVersionRichParameters(versionId),
256262
};
257263
};

‎site/src/api/queries/workspaceBuilds.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
}from"api/typesGenerated";
77
importtype{QueryOptions,UseInfiniteQueryOptions}from"react-query";
88

9-
functionworkspaceBuildParametersKey(workspaceBuildId:string){
9+
exportfunctionworkspaceBuildParametersKey(workspaceBuildId:string){
1010
return["workspaceBuilds",workspaceBuildId,"parameters"]asconst;
1111
}
1212

‎site/src/pages/TaskPage/TaskPage.tsx‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import{API}from"api/api";
22
import{getErrorDetail,getErrorMessage,isApiError}from"api/errors";
33
import{templateastemplateQueryOptions}from"api/queries/templates";
4+
import{workspaceBuildParameters}from"api/queries/workspaceBuilds";
45
import{
56
startWorkspace,
67
workspaceByOwnerAndName,
@@ -198,10 +199,9 @@ type WorkspaceNotRunningProps = {
198199
constWorkspaceNotRunning:FC<WorkspaceNotRunningProps>=({ workspace})=>{
199200
constqueryClient=useQueryClient();
200201

201-
const{data:parameters}=useQuery({
202-
queryKey:["workspace",workspace.id,"parameters"],
203-
queryFn:()=>API.getWorkspaceParameters(workspace),
204-
});
202+
const{data:buildParameters}=useQuery(
203+
workspaceBuildParameters(workspace.latest_build.id),
204+
);
205205

206206
constmutateStartWorkspace=useMutation({
207207
...startWorkspace(workspace,queryClient),
@@ -237,7 +237,7 @@ const WorkspaceNotRunning: FC<WorkspaceNotRunningProps> = ({ workspace }) => {
237237
disabled={isWaitingForStart}
238238
onClick={()=>{
239239
mutateStartWorkspace.mutate({
240-
buildParameters:parameters?.buildParameters,
240+
buildParameters,
241241
});
242242
}}
243243
>

‎site/src/pages/WorkspacePage/WorkspaceActions/BuildParametersPopover.tsx‎

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import{useTheme}from"@emotion/react";
22
importvisuallyHiddenfrom"@mui/utils/visuallyHidden";
3-
import{API}from"api/api";
3+
import{richParameters}from"api/queries/templates";
4+
import{workspaceBuildParameters}from"api/queries/workspaceBuilds";
45
importtype{
56
TemplateVersionParameter,
67
Workspace,
@@ -48,12 +49,15 @@ export const BuildParametersPopover: FC<BuildParametersPopoverProps> = ({
4849
onSubmit,
4950
})=>{
5051
const[isOpen,setIsOpen]=useState(false);
51-
const{data:parameters}=useQuery({
52-
queryKey:["workspace",workspace.id,"parameters"],
53-
queryFn:()=>API.getWorkspaceParameters(workspace),
54-
});
55-
constephemeralParameters=parameters
56-
?parameters.templateVersionRichParameters.filter((p)=>p.ephemeral)
52+
constbuild=workspace.latest_build;
53+
const{data:templateVersionParameters}=useQuery(
54+
richParameters(build.template_version_id),
55+
);
56+
const{data:buildParameters}=useQuery(
57+
workspaceBuildParameters(build.id),
58+
);
59+
constephemeralParameters=templateVersionParameters
60+
?templateVersionParameters.filter((p)=>p.ephemeral)
5761
:undefined;
5862

5963
return(
@@ -75,7 +79,7 @@ export const BuildParametersPopover: FC<BuildParametersPopoverProps> = ({
7579
<BuildParametersPopoverContent
7680
workspace={workspace}
7781
ephemeralParameters={ephemeralParameters}
78-
buildParameters={parameters?.buildParameters}
82+
buildParameters={buildParameters}
7983
onSubmit={onSubmit}
8084
setIsOpen={setIsOpen}
8185
/>

‎site/src/pages/WorkspacePage/WorkspaceActions/DebugButton.stories.tsx‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import{MockWorkspace}from"testHelpers/entities";
1+
import{
2+
MockTemplateVersionParameter1,
3+
MockWorkspace,
4+
}from"testHelpers/entities";
25
importtype{Meta,StoryObj}from"@storybook/react-vite";
6+
import{richParametersKey}from"api/queries/templates";
7+
import{workspaceBuildParametersKey}from"api/queries/workspaceBuilds";
38
import{expect,screen,userEvent,waitFor}from"storybook/test";
49
import{DebugButton}from"./DebugButton";
510

@@ -21,8 +26,12 @@ export const WithBuildParameters: Story = {
2126
parameters:{
2227
queries:[
2328
{
24-
key:["workspace",MockWorkspace.id,"parameters"],
25-
data:{templateVersionRichParameters:[],buildParameters:[]},
29+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
30+
data:[],
31+
},
32+
{
33+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
34+
data:[],
2635
},
2736
],
2837
},
@@ -36,8 +45,12 @@ export const WithOpenBuildParameters: Story = {
3645
parameters:{
3746
queries:[
3847
{
39-
key:["workspace",MockWorkspace.id,"parameters"],
40-
data:{templateVersionRichParameters:[],buildParameters:[]},
48+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
49+
data:[MockTemplateVersionParameter1],
50+
},
51+
{
52+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
53+
data:[],
4154
},
4255
],
4356
},

‎site/src/pages/WorkspacePage/WorkspaceActions/RetryButton.stories.tsx‎

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import{
22
MockNonClassicParameterFlowWorkspace,
3+
MockTemplateVersionParameter1,
34
MockTemplateVersionParameter6,
45
MockWorkspace,
56
}from"testHelpers/entities";
67
importtype{Meta,StoryObj}from"@storybook/react-vite";
8+
import{richParametersKey}from"api/queries/templates";
9+
import{workspaceBuildParametersKey}from"api/queries/workspaceBuilds";
710
import{expect,screen,userEvent,waitFor}from"storybook/test";
811
import{RetryButton}from"./RetryButton";
912

@@ -25,8 +28,12 @@ export const WithBuildParameters: Story = {
2528
parameters:{
2629
queries:[
2730
{
28-
key:["workspace",MockWorkspace.id,"parameters"],
29-
data:{templateVersionRichParameters:[],buildParameters:[]},
31+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
32+
data:[],
33+
},
34+
{
35+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
36+
data:[],
3037
},
3138
],
3239
},
@@ -40,8 +47,12 @@ export const WithOpenBuildParameters: Story = {
4047
parameters:{
4148
queries:[
4249
{
43-
key:["workspace",MockWorkspace.id,"parameters"],
44-
data:{templateVersionRichParameters:[],buildParameters:[]},
50+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
51+
data:[MockTemplateVersionParameter1],
52+
},
53+
{
54+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
55+
data:[],
4556
},
4657
],
4758
},
@@ -63,11 +74,12 @@ export const WithOpenEphemeralBuildParameters: Story = {
6374
parameters:{
6475
queries:[
6576
{
66-
key:["workspace",MockWorkspace.id,"parameters"],
67-
data:{
68-
templateVersionRichParameters:[MockTemplateVersionParameter6],
69-
buildParameters:[],
70-
},
77+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
78+
data:[MockTemplateVersionParameter6],
79+
},
80+
{
81+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
82+
data:[],
7183
},
7284
],
7385
},
@@ -91,15 +103,12 @@ export const WithOpenEphemeralBuildParametersNotClassic: Story = {
91103
parameters:{
92104
queries:[
93105
{
94-
key:[
95-
"workspace",
96-
MockNonClassicParameterFlowWorkspace.id,
97-
"parameters",
98-
],
99-
data:{
100-
templateVersionRichParameters:[MockTemplateVersionParameter6],
101-
buildParameters:[],
102-
},
106+
key:richParametersKey(MockWorkspace.latest_build.template_version_id),
107+
data:[MockTemplateVersionParameter6],
108+
},
109+
{
110+
key:workspaceBuildParametersKey(MockWorkspace.latest_build.id),
111+
data:[],
103112
},
104113
],
105114
},

‎site/src/pages/WorkspacePage/WorkspacePage.test.tsx‎

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ const renderWorkspacePage = async (
4747
)=>{
4848
jest.spyOn(API,"getWorkspaceByOwnerAndName").mockResolvedValue(workspace);
4949
jest.spyOn(API,"getTemplate").mockResolvedValueOnce(MockTemplate);
50-
jest.spyOn(API,"getTemplateVersionRichParameters").mockResolvedValueOnce([]);
5150
jest
5251
.spyOn(API,"getDeploymentConfig")
5352
.mockResolvedValueOnce(MockDeploymentConfig);
@@ -380,18 +379,18 @@ describe("WorkspacePage", () => {
380379

381380
it("restart the workspace with one time parameters when having the confirmation dialog",async()=>{
382381
localStorage.removeItem(`${MockUserOwner.id}_ignoredWarnings`);
383-
jest.spyOn(API,"getWorkspaceParameters").mockResolvedValue({
384-
templateVersionRichParameters:[
385-
{
386-
...MockTemplateVersionParameter1,
387-
ephemeral:true,
388-
name:"rebuild",
389-
description:"Rebuild",
390-
required:false,
391-
},
392-
],
393-
buildParameters:[{name:"rebuild",value:"false"}],
394-
});
382+
jest.spyOn(API,"getTemplateVersionRichParameters").mockResolvedValue([
383+
{
384+
...MockTemplateVersionParameter1,
385+
ephemeral:true,
386+
name:"rebuild",
387+
description:"Rebuild",
388+
required:false,
389+
},
390+
]);
391+
jest
392+
.spyOn(API,"getWorkspaceBuildParameters")
393+
.mockResolvedValue([{name:"rebuild",value:"false"}]);
395394
constrestartWorkspaceSpy=jest.spyOn(API,"restartWorkspace");
396395
constuser=userEvent.setup();
397396
awaitrenderWorkspacePage(MockWorkspace);

‎site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.stories.tsx‎

Lines changed: 41 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,19 @@ const meta: Meta<typeof WorkspaceParametersPageView> = {
2121
workspace:MockWorkspace,
2222
canChangeVersions:true,
2323
onCancel:action("onCancel"),
24-
25-
data:{
26-
buildParameters:[
27-
MockWorkspaceBuildParameter1,
28-
MockWorkspaceBuildParameter2,
29-
MockWorkspaceBuildParameter3,
30-
],
31-
templateVersionRichParameters:[
32-
MockTemplateVersionParameter1,
33-
MockTemplateVersionParameter2,
34-
{
35-
...MockTemplateVersionParameter3,
36-
mutable:false,
37-
},
38-
],
39-
},
24+
buildParameters:[
25+
MockWorkspaceBuildParameter1,
26+
MockWorkspaceBuildParameter2,
27+
MockWorkspaceBuildParameter3,
28+
],
29+
templateVersionParameters:[
30+
MockTemplateVersionParameter1,
31+
MockTemplateVersionParameter2,
32+
{
33+
...MockTemplateVersionParameter3,
34+
mutable:false,
35+
},
36+
],
4037
},
4138
};
4239

@@ -47,54 +44,48 @@ const Example: Story = {};
4744

4845
exportconstEmpty:Story={
4946
args:{
50-
data:{
51-
buildParameters:[],
52-
templateVersionRichParameters:[],
53-
},
47+
buildParameters:[],
48+
templateVersionParameters:[],
5449
},
5550
};
5651

5752
exportconstRequireActiveVersionNoChangeVersion:Story={
5853
args:{
5954
workspace:MockOutdatedStoppedWorkspaceRequireActiveVersion,
6055
canChangeVersions:false,
61-
data:{
62-
buildParameters:[
63-
MockWorkspaceBuildParameter1,
64-
MockWorkspaceBuildParameter2,
65-
MockWorkspaceBuildParameter3,
66-
],
67-
templateVersionRichParameters:[
68-
MockTemplateVersionParameter1,
69-
MockTemplateVersionParameter2,
70-
{
71-
...MockTemplateVersionParameter3,
72-
mutable:false,
73-
},
74-
],
75-
},
56+
buildParameters:[
57+
MockWorkspaceBuildParameter1,
58+
MockWorkspaceBuildParameter2,
59+
MockWorkspaceBuildParameter3,
60+
],
61+
templateVersionParameters:[
62+
MockTemplateVersionParameter1,
63+
MockTemplateVersionParameter2,
64+
{
65+
...MockTemplateVersionParameter3,
66+
mutable:false,
67+
},
68+
],
7669
},
7770
};
7871

7972
exportconstRequireActiveVersionCanChangeVersion:Story={
8073
args:{
8174
workspace:MockOutdatedStoppedWorkspaceRequireActiveVersion,
8275
canChangeVersions:true,
83-
data:{
84-
buildParameters:[
85-
MockWorkspaceBuildParameter1,
86-
MockWorkspaceBuildParameter2,
87-
MockWorkspaceBuildParameter3,
88-
],
89-
templateVersionRichParameters:[
90-
MockTemplateVersionParameter1,
91-
MockTemplateVersionParameter2,
92-
{
93-
...MockTemplateVersionParameter3,
94-
mutable:false,
95-
},
96-
],
97-
},
76+
buildParameters:[
77+
MockWorkspaceBuildParameter1,
78+
MockWorkspaceBuildParameter2,
79+
MockWorkspaceBuildParameter3,
80+
],
81+
templateVersionParameters:[
82+
MockTemplateVersionParameter1,
83+
MockTemplateVersionParameter2,
84+
{
85+
...MockTemplateVersionParameter3,
86+
mutable:false,
87+
},
88+
],
9889
},
9990
};
10091

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp