Skip to content

Commit 846ca0f

Browse files
committed
on_command_phrase always on prelim
1 parent 2bdfbef commit 846ca0f

File tree

1 file changed

+47
-5
lines changed

1 file changed

+47
-5
lines changed

static/gsApp/views/seerAutomation/components/repoDetails/repoDetailsForm.tsx

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import {useMemo} from 'react';
2+
3+
import {components as SelectComponents} from 'sentry/components/forms/controls/reactSelectWrapper';
14
import Form from 'sentry/components/forms/form';
25
import JsonForm from 'sentry/components/forms/jsonForm';
36
import {t} from 'sentry/locale';
@@ -15,9 +18,40 @@ interface Props {
1518
repoWithSettings: RepositoryWithSettings;
1619
}
1720

21+
function ensureOnCommandPhraseTrigger(triggers: string[] | null | undefined): string[] {
22+
if (!triggers || !Array.isArray(triggers)) {
23+
return ['on_command_phrase'];
24+
}
25+
if (!triggers.includes('on_command_phrase')) {
26+
return ['on_command_phrase', ...triggers];
27+
}
28+
return triggers;
29+
}
30+
31+
// Custom MultiValueRemove component that hides the remove button for immutable values
32+
function ImmutableMultiValueRemove(
33+
props: React.ComponentProps<typeof SelectComponents.MultiValueRemove>
34+
) {
35+
if (props.data?.value === 'on_command_phrase') {
36+
return null;
37+
}
38+
return <SelectComponents.MultiValueRemove {...props} />;
39+
}
40+
1841
export default function RepoDetailsForm({organization, repoWithSettings}: Props) {
1942
const canWrite = useCanWriteSettings();
2043

44+
const codeReviewTriggers = useMemo(() => {
45+
const triggers =
46+
repoWithSettings?.settings?.codeReviewTriggers ??
47+
organization.defaultCodeReviewTriggers ??
48+
DEFAULT_CODE_REVIEW_TRIGGERS;
49+
return ensureOnCommandPhraseTrigger(triggers);
50+
}, [
51+
repoWithSettings?.settings?.codeReviewTriggers,
52+
organization.defaultCodeReviewTriggers,
53+
]);
54+
2155
return (
2256
<Form
2357
allowUndo
@@ -30,16 +64,19 @@ export default function RepoDetailsForm({organization, repoWithSettings}: Props)
3064
repoWithSettings?.settings?.enabledCodeReview ??
3165
organization.autoEnableCodeReview ??
3266
true,
33-
codeReviewTriggers:
34-
repoWithSettings?.settings?.codeReviewTriggers ??
35-
organization.defaultCodeReviewTriggers ??
36-
DEFAULT_CODE_REVIEW_TRIGGERS,
67+
codeReviewTriggers,
3768
repositoryIds: [repoWithSettings.id],
3869
} satisfies RepositorySettings
3970
}
4071
>
4172
<JsonForm
4273
disabled={!canWrite}
74+
additionalFieldProps={{
75+
components: {
76+
MultiValueRemove: ImmutableMultiValueRemove,
77+
},
78+
isOptionDisabled: (option: any) => option.value === 'on_command_phrase',
79+
}}
4380
forms={[
4481
{
4582
title: t('AI Code Review'),
@@ -67,8 +104,13 @@ export default function RepoDetailsForm({organization, repoWithSettings}: Props)
67104
['on_ready_for_review', t('On Ready for Review')],
68105
['on_new_commit', t('On New Commit')],
69106
],
107+
setValue: (value: string[] | null | undefined) => {
108+
return ensureOnCommandPhraseTrigger(value);
109+
},
70110
getData: data => ({
71-
codeReviewTriggers: data.codeReviewTriggers,
111+
codeReviewTriggers: ensureOnCommandPhraseTrigger(
112+
data.codeReviewTriggers as string[] | null | undefined
113+
),
72114
repositoryIds: [repoWithSettings.id],
73115
}),
74116
},

0 commit comments

Comments
 (0)