diff options
author | Mathieu Suen <mathieu.suen@sonarsource.com> | 2024-09-17 15:12:16 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2024-09-17 20:02:39 +0000 |
commit | 901843e45e0fdd2ed216a745e8e06497b9a099c8 (patch) | |
tree | 1678566d1d1d5f008bd979ebab24f34e00e30ccd | |
parent | b77ddcada3cdbef9daacf8cb18da96d44112ffbf (diff) | |
download | sonarqube-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.tsx | 31 |
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> ); } |