diff --git a/static/app/components/onboarding/platformOptionsControl.tsx b/static/app/components/onboarding/platformOptionsControl.tsx index fd1e004fb084aa..42dce53ea01b9e 100644 --- a/static/app/components/onboarding/platformOptionsControl.tsx +++ b/static/app/components/onboarding/platformOptionsControl.tsx @@ -8,7 +8,8 @@ import type { PlatformOption, SelectedPlatformOptions, } from 'sentry/components/onboarding/gettingStartedDoc/types'; -import {useRouter} from 'sentry/utils/useRouter'; +import {useLocation} from 'sentry/utils/useLocation'; +import {useNavigate} from 'sentry/utils/useNavigate'; /** * Hook that returns the currently selected platform option values from the URL @@ -17,8 +18,7 @@ import {useRouter} from 'sentry/utils/useRouter'; export function useUrlPlatformOptions( platformOptions?: PlatformOptions ): SelectedPlatformOptions { - const router = useRouter(); - const {query} = router.location; + const {query} = useLocation(); return useMemo(() => { if (!platformOptions) { @@ -28,9 +28,11 @@ export function useUrlPlatformOptions { const defaultValue = platformOptions[key]!.defaultValue; const values = platformOptions[key]!.items.map(({value}) => value); - acc[key as keyof PlatformOptions] = values.includes(query[key]) - ? query[key] - : (defaultValue ?? values[0]); + const queryValue = query[key]; + acc[key as keyof PlatformOptions] = + typeof queryValue === 'string' && values.includes(queryValue) + ? queryValue + : (defaultValue ?? values[0]!); return acc; }, {} as SelectedPlatformOptions); }, [platformOptions, query]); @@ -80,18 +82,22 @@ export function PlatformOptionsControl({ platformOptions, onChange, }: PlatformOptionsControlProps) { - const router = useRouter(); + const location = useLocation(); + const navigate = useNavigate(); const urlOptionValues = useUrlPlatformOptions(platformOptions); const handleChange = (key: string, value: string) => { onChange?.({[key]: value}); - router.replace({ - ...router.location, - query: { - ...router.location.query, - [key]: value, + navigate( + { + ...location, + query: { + ...location.query, + [key]: value, + }, }, - }); + {replace: true} + ); }; return (