aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Suen <mathieu.suen@sonarsource.com>2024-09-17 15:12:16 +0200
committersonartech <sonartech@sonarsource.com>2024-09-17 20:02:39 +0000
commit901843e45e0fdd2ed216a745e8e06497b9a099c8 (patch)
tree1678566d1d1d5f008bd979ebab24f34e00e30ccd
parentb77ddcada3cdbef9daacf8cb18da96d44112ffbf (diff)
downloadsonarqube-901843e45e0fdd2ed216a745e8e06497b9a099c8.tar.gz
sonarqube-901843e45e0fdd2ed216a745e8e06497b9a099c8.zip
CODEFIX-92 Don't show the overlay when only one IDE and avoid calling twice the IDE when clicking View Fix in IDE
-rw-r--r--server/sonar-web/src/main/js/apps/issues/components/OpenFixInIde.tsx31
1 files changed, 19 insertions, 12 deletions
diff --git a/server/sonar-web/src/main/js/apps/issues/components/OpenFixInIde.tsx b/server/sonar-web/src/main/js/apps/issues/components/OpenFixInIde.tsx
index adfe1b0cbed..fb39a8655d0 100644
--- a/server/sonar-web/src/main/js/apps/issues/components/OpenFixInIde.tsx
+++ b/server/sonar-web/src/main/js/apps/issues/components/OpenFixInIde.tsx
@@ -39,7 +39,7 @@ export interface Props {
const DELAY_AFTER_TOKEN_CREATION = 3000;
export function OpenFixInIde({ aiSuggestion, issue }: Readonly<Props>) {
- const [ides, setIdes] = useState<Ide[]>([]);
+ const [ides, setIdes] = useState<Ide[] | undefined>(undefined);
const { component } = useComponent();
const { data: branchLike, isLoading: isBranchLoading } = useCurrentBranchQuery(component);
@@ -55,7 +55,7 @@ export function OpenFixInIde({ aiSuggestion, issue }: Readonly<Props>) {
const { mutateAsync: openFixInIde, isPending } = useOpenFixOrIssueInIdeMutation();
const closeDropdown = () => {
- setIdes([]);
+ setIdes(undefined);
};
const openFix = useCallback(
@@ -118,8 +118,22 @@ export function OpenFixInIde({ aiSuggestion, issue }: Readonly<Props>) {
return null;
}
- return (
+ const triggerButton = (
+ <Button
+ className="sw-whitespace-nowrap"
+ isDisabled={isPending}
+ onClick={onClick}
+ variety={ButtonVariety.Default}
+ >
+ {translate('view_fix_in_ide')}
+ </Button>
+ );
+
+ return ides === undefined ? (
+ triggerButton
+ ) : (
<DropdownMenu.Root
+ isOpenOnMount
items={ides.map((ide) => {
const { ideName, description } = ide;
@@ -137,18 +151,11 @@ export function OpenFixInIde({ aiSuggestion, issue }: Readonly<Props>) {
);
})}
onClose={() => {
- setIdes([]);
+ setIdes(undefined);
}}
onOpen={onClick}
>
- <Button
- className="sw-whitespace-nowrap"
- isDisabled={isPending}
- onClick={onClick}
- variety={ButtonVariety.Default}
- >
- {translate('view_fix_in_ide')}
- </Button>
+ {triggerButton}
</DropdownMenu.Root>
);
}