Skip to content

Commit

Permalink
[dashboard] Cleanup calling of updateOrganizationSettings
Browse files Browse the repository at this point in the history
Tool: gitpod/catfood.gitpod.cloud
  • Loading branch information
geropl committed Feb 13, 2025
1 parent 1254b88 commit 3634250
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,16 @@ import { useMutation } from "@tanstack/react-query";
import { useOrgSettingsQueryInvalidator } from "./org-settings-query";
import { useCurrentOrg } from "./orgs-query";
import { organizationClient } from "../../service/public-api";
import { OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb";
import {
OrganizationSettings,
UpdateOrganizationSettingsRequest,
} from "@gitpod/public-api/lib/gitpod/v1/organization_pb";
import { ErrorCode } from "@gitpod/gitpod-protocol/lib/messaging/error";
import { useOrgWorkspaceClassesQueryInvalidator } from "./org-workspace-classes-query";
import { PlainMessage } from "@bufbuild/protobuf";
import { useOrgRepoSuggestionsInvalidator } from "./suggested-repositories-query";
import { PartialMessage } from "@bufbuild/protobuf";

export type UpdateOrganizationSettingsArgs = Partial<
Omit<
Pick<
PlainMessage<OrganizationSettings>,
| "workspaceSharingDisabled"
| "defaultWorkspaceImage"
| "allowedWorkspaceClasses"
| "pinnedEditorVersions"
| "restrictedEditorNames"
| "defaultRole"
| "timeoutSettings"
| "roleRestrictions"
| "maxParallelRunningWorkspaces"
| "annotateGitCommits"
>,
never
> & {
onboardingSettings?: Partial<PlainMessage<OrganizationSettings>["onboardingSettings"]>; // this enables us to not have to specify all of the onboarding settings on every update
}
>;
export type UpdateOrganizationSettingsArgs = PartialMessage<UpdateOrganizationSettingsRequest>;

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

return useMutation<OrganizationSettings, Error, UpdateOrganizationSettingsArgs>({
mutationFn: async ({
workspaceSharingDisabled,
defaultWorkspaceImage,
allowedWorkspaceClasses,
pinnedEditorVersions,
restrictedEditorNames,
defaultRole,
timeoutSettings,
roleRestrictions,
maxParallelRunningWorkspaces,
onboardingSettings,
annotateGitCommits,
}) => {
const settings = await organizationClient.updateOrganizationSettings({
organizationId,
workspaceSharingDisabled: workspaceSharingDisabled ?? false,
defaultWorkspaceImage,
allowedWorkspaceClasses,
updatePinnedEditorVersions: !!pinnedEditorVersions,
pinnedEditorVersions,
restrictedEditorNames,
updateRestrictedEditorNames: !!restrictedEditorNames,
defaultRole,
timeoutSettings,
roleRestrictions,
updateRoleRestrictions: !!roleRestrictions,
maxParallelRunningWorkspaces,
onboardingSettings: {
...onboardingSettings,
updateRecommendedRepositories: !!onboardingSettings?.recommendedRepositories,
welcomeMessage: {
...onboardingSettings?.welcomeMessage,
featuredMemberResolvedAvatarUrl: undefined, // This field is not allowed to be set in the request.
},
},
annotateGitCommits,
});
mutationFn: async (partialUpdate) => {
const update: PartialMessage<UpdateOrganizationSettingsRequest> = {
...partialUpdate,
};
update.organizationId = organizationId;
update.updatePinnedEditorVersions = update.pinnedEditorVersions !== undefined;
update.updateRestrictedEditorNames = update.restrictedEditorNames !== undefined;
update.updateRoleRestrictions = update.roleRestrictions !== undefined;
if (update.onboardingSettings) {
update.onboardingSettings.updateRecommendedRepositories =
!!update.onboardingSettings.recommendedRepositories;
if (update.onboardingSettings.welcomeMessage) {
update.onboardingSettings.welcomeMessage.featuredMemberResolvedAvatarUrl = undefined; // This field is not allowed to be set in the request.
}
}

const settings = await organizationClient.updateOrganizationSettings(update);
return settings.settings!;
},
onSuccess: () => {
Expand Down
7 changes: 2 additions & 5 deletions components/dashboard/src/teams/TeamPolicies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,7 @@ export default function TeamPoliciesPage() {
throw new Error("no organization settings change permission");
}
try {
await updateTeamSettings.mutateAsync({
...settings,
...newSettings,
});
await updateTeamSettings.mutateAsync(newSettings);
setWorkspaceTimeoutSettingError(undefined);
toast("Organization settings updated");
} catch (error) {
Expand All @@ -69,7 +66,7 @@ export default function TeamPoliciesPage() {
console.error(error);
}
},
[updateTeamSettings, org?.id, isOwner, settings, toast],
[updateTeamSettings, org?.id, isOwner, toast],
);

useEffect(() => {
Expand Down

0 comments on commit 3634250

Please sign in to comment.