@@ -8,32 +8,16 @@ import { useMutation } from "@tanstack/react-query";
88import { useOrgSettingsQueryInvalidator } from "./org-settings-query" ;
99import { useCurrentOrg } from "./orgs-query" ;
1010import { 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" ;
1215import { ErrorCode } from "@gitpod/gitpod-protocol/lib/messaging/error" ;
1316import { useOrgWorkspaceClassesQueryInvalidator } from "./org-workspace-classes-query" ;
14- import { PlainMessage } from "@bufbuild/protobuf" ;
1517import { 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
3822export 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 : ( ) => {
0 commit comments