From c9b7d28b509bd83d3f758c231cc1b69a994fcf94 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Wed, 6 Sep 2023 22:33:55 +0000 Subject: [PATCH] fix: [code-821]: redirect to space after creation (#408) --- .../NewSpaceModalButton/NewSpaceModalButton.tsx | 3 +++ web/src/components/SpaceSelector/SpaceSelector.tsx | 9 ++++++++- web/src/pages/Home/Home.tsx | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx b/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx index fe020d2a9..03ff239ee 100644 --- a/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx +++ b/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx @@ -54,6 +54,7 @@ export interface NewSpaceModalButtonProps extends Omit { submitButtonTitle?: string cancelButtonTitle?: string onRefetch: () => void + handleNavigation?: (value: string) => void } export interface OpenapiCreateSpaceRequestExtended extends OpenapiCreateSpaceRequest { parent_id?: number @@ -65,6 +66,7 @@ export const NewSpaceModalButton: React.FC = ({ submitButtonTitle, cancelButtonTitle, onRefetch, + handleNavigation, ...props }) => { const ModalComponent: React.FC = () => { @@ -90,6 +92,7 @@ export const NewSpaceModalButton: React.FC = ({ createSpace(payload) .then(() => { hideModal() + handleNavigation?.(formData.name) onRefetch() }) .catch(_error => { diff --git a/web/src/components/SpaceSelector/SpaceSelector.tsx b/web/src/components/SpaceSelector/SpaceSelector.tsx index 7b4d60ec3..6bd4409b2 100644 --- a/web/src/components/SpaceSelector/SpaceSelector.tsx +++ b/web/src/components/SpaceSelector/SpaceSelector.tsx @@ -43,7 +43,6 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { const [opened, setOpened] = React.useState(false) const [searchTerm, setSearchTerm] = useState('') // const [page, setPage] = usePageIndex(1) - const { data, error } = useGetSpace({ space_ref: encodeURIComponent(space), lazy: !space }) const { @@ -64,6 +63,14 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { [onSelect] ) + useEffect(() => { + //space is used in the api call to get data, so it'll always be the same + if (space && data) { + selectSpace(data, false) + refetch() + } + }, [data]) + useEffect(() => { if (space && !selectedSpace && data) { selectSpace(data, false) diff --git a/web/src/pages/Home/Home.tsx b/web/src/pages/Home/Home.tsx index 1c3d710ae..2ce141d40 100644 --- a/web/src/pages/Home/Home.tsx +++ b/web/src/pages/Home/Home.tsx @@ -2,6 +2,7 @@ import React from 'react' import { ButtonVariation, Container, Layout, PageBody, Text } from '@harnessio/uicore' import { FontVariation } from '@harnessio/design-system' import { useGet } from 'restful-react' +import { useHistory } from 'react-router-dom' // import type { TypesSpace } from 'services/code' import { useStrings } from 'framework/strings' // import { usePageIndex } from 'hooks/usePageIndex' @@ -13,6 +14,8 @@ import css from './Home.module.scss' export default function Home() { const { getString } = useStrings() + const history = useHistory() + const { routes } = useAppContext() // const [searchTerm, setSearchTerm] = useState('') // const [page, setPage] = usePageIndex(1) const { currentUser } = useAppContext() @@ -32,6 +35,9 @@ export default function Home() { width={173} height={48} onRefetch={refetch} + handleNavigation={spaceName => { + history.push(routes.toCODERepositories({ space: spaceName })) + }} /> ) return (