Skip to content

Commit 3634250

Browse files
committed
[dashboard] Cleanup calling of updateOrganizationSettings
Tool: gitpod/catfood.gitpod.cloud
1 parent 1254b88 commit 3634250

File tree

2 files changed

+25
-64
lines changed

2 files changed

+25
-64
lines changed

components/dashboard/src/data/organizations/update-org-settings-mutation.ts

Lines changed: 23 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,16 @@ import { useMutation } from "@tanstack/react-query";
88
import { useOrgSettingsQueryInvalidator } from "./org-settings-query";
99
import { useCurrentOrg } from "./orgs-query";
1010
import { organizationClient } from "../../service/public-api";
11-
import { OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb";
11+
import {
12+
OrganizationSettings,
13+
UpdateOrganizationSettingsRequest,
14+
} from "@gitpod/public-api/lib/gitpod/v1/organization_pb";
1215
import { ErrorCode } from "@gitpod/gitpod-protocol/lib/messaging/error";
1316
import { useOrgWorkspaceClassesQueryInvalidator } from "./org-workspace-classes-query";
14-
import { PlainMessage } from "@bufbuild/protobuf";
1517
import { useOrgRepoSuggestionsInvalidator } from "./suggested-repositories-query";
18+
import { PartialMessage } from "@bufbuild/protobuf";
1619

17-
export type UpdateOrganizationSettingsArgs = Partial<
18-
Omit<
19-
Pick<
20-
PlainMessage<OrganizationSettings>,
21-
| "workspaceSharingDisabled"
22-
| "defaultWorkspaceImage"
23-
| "allowedWorkspaceClasses"
24-
| "pinnedEditorVersions"
25-
| "restrictedEditorNames"
26-
| "defaultRole"
27-
| "timeoutSettings"
28-
| "roleRestrictions"
29-
| "maxParallelRunningWorkspaces"
30-
| "annotateGitCommits"
31-
>,
32-
never
33-
> & {
34-
onboardingSettings?: Partial<PlainMessage<OrganizationSettings>["onboardingSettings"]>; // this enables us to not have to specify all of the onboarding settings on every update
35-
}
36-
>;
20+
export type UpdateOrganizationSettingsArgs = PartialMessage<UpdateOrganizationSettingsRequest>;
3721

3822
export const useUpdateOrgSettingsMutation = () => {
3923
const org = useCurrentOrg().data;
@@ -43,43 +27,23 @@ export const useUpdateOrgSettingsMutation = () => {
4327
const organizationId = org?.id ?? "";
4428

4529
return useMutation<OrganizationSettings, Error, UpdateOrganizationSettingsArgs>({
46-
mutationFn: async ({
47-
workspaceSharingDisabled,
48-
defaultWorkspaceImage,
49-
allowedWorkspaceClasses,
50-
pinnedEditorVersions,
51-
restrictedEditorNames,
52-
defaultRole,
53-
timeoutSettings,
54-
roleRestrictions,
55-
maxParallelRunningWorkspaces,
56-
onboardingSettings,
57-
annotateGitCommits,
58-
}) => {
59-
const settings = await organizationClient.updateOrganizationSettings({
60-
organizationId,
61-
workspaceSharingDisabled: workspaceSharingDisabled ?? false,
62-
defaultWorkspaceImage,
63-
allowedWorkspaceClasses,
64-
updatePinnedEditorVersions: !!pinnedEditorVersions,
65-
pinnedEditorVersions,
66-
restrictedEditorNames,
67-
updateRestrictedEditorNames: !!restrictedEditorNames,
68-
defaultRole,
69-
timeoutSettings,
70-
roleRestrictions,
71-
updateRoleRestrictions: !!roleRestrictions,
72-
maxParallelRunningWorkspaces,
73-
onboardingSettings: {
74-
...onboardingSettings,
75-
updateRecommendedRepositories: !!onboardingSettings?.recommendedRepositories,
76-
welcomeMessage: {
77-
...onboardingSettings?.welcomeMessage,
78-
featuredMemberResolvedAvatarUrl: undefined, // This field is not allowed to be set in the request.
79-
},
80-
},
81-
annotateGitCommits,
82-
});
30+
mutationFn: async (partialUpdate) => {
31+
const update: PartialMessage<UpdateOrganizationSettingsRequest> = {
32+
...partialUpdate,
33+
};
34+
update.organizationId = organizationId;
35+
update.updatePinnedEditorVersions = update.pinnedEditorVersions !== undefined;
36+
update.updateRestrictedEditorNames = update.restrictedEditorNames !== undefined;
37+
update.updateRoleRestrictions = update.roleRestrictions !== undefined;
38+
if (update.onboardingSettings) {
39+
update.onboardingSettings.updateRecommendedRepositories =
40+
!!update.onboardingSettings.recommendedRepositories;
41+
if (update.onboardingSettings.welcomeMessage) {
42+
update.onboardingSettings.welcomeMessage.featuredMemberResolvedAvatarUrl = undefined; // This field is not allowed to be set in the request.
43+
}
44+
}
45+
46+
const settings = await organizationClient.updateOrganizationSettings(update);
8347
return settings.settings!;
8448
},
8549
onSuccess: () => {

components/dashboard/src/teams/TeamPolicies.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,7 @@ export default function TeamPoliciesPage() {
5555
throw new Error("no organization settings change permission");
5656
}
5757
try {
58-
await updateTeamSettings.mutateAsync({
59-
...settings,
60-
...newSettings,
61-
});
58+
await updateTeamSettings.mutateAsync(newSettings);
6259
setWorkspaceTimeoutSettingError(undefined);
6360
toast("Organization settings updated");
6461
} catch (error) {
@@ -69,7 +66,7 @@ export default function TeamPoliciesPage() {
6966
console.error(error);
7067
}
7168
},
72-
[updateTeamSettings, org?.id, isOwner, settings, toast],
69+
[updateTeamSettings, org?.id, isOwner, toast],
7370
);
7471

7572
useEffect(() => {

0 commit comments

Comments
 (0)