Skip to content

Commit 25ec9e9

Browse files
committed
[dashboard] add org setting for commit annotation
1 parent b131e0e commit 25ec9e9

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type UpdateOrganizationSettingsArgs = Partial<
2626
| "roleRestrictions"
2727
| "maxParallelRunningWorkspaces"
2828
| "onboardingSettings"
29+
| "annotateGitCommits"
2930
>
3031
>;
3132

@@ -47,6 +48,7 @@ export const useUpdateOrgSettingsMutation = () => {
4748
roleRestrictions,
4849
maxParallelRunningWorkspaces,
4950
onboardingSettings,
51+
annotateGitCommits,
5052
}) => {
5153
const settings = await organizationClient.updateOrganizationSettings({
5254
organizationId: teamId,
@@ -63,6 +65,7 @@ export const useUpdateOrgSettingsMutation = () => {
6365
updateRoleRestrictions: !!roleRestrictions,
6466
maxParallelRunningWorkspaces,
6567
onboardingSettings,
68+
annotateGitCommits,
6669
});
6770
return settings.settings!;
6871
},

components/dashboard/src/teams/TeamSettings.tsx

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { InputWithCopy } from "../components/InputWithCopy";
1212
import Modal, { ModalBody, ModalFooter, ModalHeader } from "../components/Modal";
1313
import { InputField } from "../components/forms/InputField";
1414
import { TextInputField } from "../components/forms/TextInputField";
15-
import { Heading2, Heading3, Subheading } from "../components/typography/headings";
1615
import { useIsOwner } from "../data/organizations/members-query";
1716
import { useOrgSettingsQuery } from "../data/organizations/org-settings-query";
1817
import { useCurrentOrg, useOrganizationsInvalidator } from "../data/organizations/orgs-query";
@@ -32,6 +31,8 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@
3231
import { useDocumentTitle } from "../hooks/use-document-title";
3332
import { PlainMessage } from "@bufbuild/protobuf";
3433
import { useToast } from "../components/toasts/Toasts";
34+
import { SwitchInputField } from "@podkit/switch/Switch";
35+
import { Heading2, Heading3, Subheading } from "@podkit/typography/Headings";
3536

3637
export default function TeamSettingsPage() {
3738
useDocumentTitle("Organization Settings - General");
@@ -122,6 +123,17 @@ export default function TeamSettingsPage() {
122123
[updateTeamSettings, org?.id, isOwner, settings, toast],
123124
);
124125

126+
const handleUpdateAnnotatedCommits = useCallback(
127+
async (value: boolean) => {
128+
try {
129+
await handleUpdateTeamSettings({ annotateGitCommits: value });
130+
} catch (error) {
131+
console.error(error);
132+
}
133+
},
134+
[handleUpdateTeamSettings],
135+
);
136+
125137
return (
126138
<>
127139
<OrgSettingsPage>
@@ -207,6 +219,31 @@ export default function TeamSettingsPage() {
207219
/>
208220
</ConfigurationSettingsField>
209221

222+
<ConfigurationSettingsField>
223+
<Heading3>Insights</Heading3>
224+
<Subheading className="mb-4">
225+
Configure insights into usage of Gitpod in your organization.
226+
</Subheading>
227+
228+
<InputField
229+
label="Annotate git commits"
230+
hint={
231+
<>
232+
Add a <code>Tool:</code> field to all git commit messages created from workspaces in
233+
your organization to associate them with the Gitpod instance.
234+
</>
235+
}
236+
>
237+
<SwitchInputField
238+
id="prebuild-full-clone-enabled"
239+
checked={settings?.annotateGitCommits || false}
240+
disabled={!isOwner || isLoading}
241+
onCheckedChange={handleUpdateAnnotatedCommits}
242+
label=""
243+
/>
244+
</InputField>
245+
</ConfigurationSettingsField>
246+
210247
{showImageEditModal && (
211248
<OrgDefaultWorkspaceImageModal
212249
settings={settings}

0 commit comments

Comments
 (0)