diff --git a/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx b/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx index 3edd7d7fc..a2f6ede04 100644 --- a/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx +++ b/web/src/components/NewSpaceModalButton/NewSpaceModalButton.tsx @@ -53,7 +53,7 @@ export interface NewSpaceModalButtonProps extends Omit { modalTitle: string submitButtonTitle?: string cancelButtonTitle?: string - // onSubmit: (data: TypesRepository) => void + onRefetch: () => void } export interface OpenapiCreateSpaceRequestExtended extends OpenapiCreateSpaceRequest { parent_id?: number @@ -64,7 +64,7 @@ export const NewSpaceModalButton: React.FC = ({ modalTitle, submitButtonTitle, cancelButtonTitle, - // onSubmit, + onRefetch, ...props }) => { const ModalComponent: React.FC = () => { @@ -90,6 +90,7 @@ export const NewSpaceModalButton: React.FC = ({ createSpace(payload) .then(() => { hideModal() + onRefetch() }) .catch(_error => { showError(getErrorMessage(_error), 0, getString('failedToCreateSpace')) diff --git a/web/src/components/SpaceSelector/SpaceSelector.tsx b/web/src/components/SpaceSelector/SpaceSelector.tsx index e7d835ff8..7d75cea97 100644 --- a/web/src/components/SpaceSelector/SpaceSelector.tsx +++ b/web/src/components/SpaceSelector/SpaceSelector.tsx @@ -14,13 +14,14 @@ import { } from '@harness/uicore' import cx from 'classnames' import Keywords from 'react-keywords' +import { useGet } from 'restful-react' import { Classes, Popover, Position } from '@blueprintjs/core' import { useGetRepositoryMetadata } from 'hooks/useGetRepositoryMetadata' import { useStrings } from 'framework/strings' -import { ButtonRoleProps, LIST_FETCHING_LIMIT } from 'utils/Utils' +import { ButtonRoleProps } from 'utils/Utils' import { useShowRequestError } from 'hooks/useShowRequestError' -import { TypesRepository, TypesSpace, useGetSpace } from 'services/code' +import { TypesSpace, useGetSpace } from 'services/code' import { SearchInputWithSpinner } from 'components/SearchInputWithSpinner/SearchInputWithSpinner' import { NewSpaceModalButton } from 'components/NewSpaceModalButton/NewSpaceModalButton' // import { ResourceListingPagination } from 'components/ResourceListingPagination/ResourceListingPagination' @@ -43,74 +44,11 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { // const [page, setPage] = usePageIndex(1) const { data, error } = useGetSpace({ space_ref: encodeURIComponent(space), lazy: !space }) - // const { - // data: t, - // // loading, - // // refetch, - // response - // } = useGet({ - // path: `/api/v1/spaces/testspace`, - // queryParams: { page, limit: LIST_FETCHING_LIMIT, query: searchTerm } - // }) - const spaces = [ - { - id: 79, - parent_id: 11, - uid: 'root', - path: 'root', - description: 'This is a root description', - is_public: false, - created_by: 6, - created: 1687816598981, - updated: 1687816598981, - default_branch: 'main', - fork_id: 0, - num_forks: 0, - num_pulls: 0, - num_closed_pulls: 0, - num_open_pulls: 0, - num_merged_pulls: 0, - git_url: 'test.com/1' - }, - { - id: 8, - parent_id: 11, - uid: 'rootChild1', - path: 'root/rootChild1', - description: 'This is a rootchild1 description', - is_public: false, - created_by: 6, - created: 1678875305900, - updated: 1678875305900, - default_branch: 'main', - fork_id: 0, - num_forks: 0, - num_pulls: 0, - num_closed_pulls: 0, - num_open_pulls: 0, - num_merged_pulls: 0, - git_url: 'test.com/2' - }, - { - id: 80, - parent_id: 11, - uid: 'home', - path: 'home', - description: 'This is a home description', - is_public: false, - created_by: 6, - created: 1687816598981, - updated: 1687816598981, - default_branch: 'main', - fork_id: 0, - num_forks: 0, - num_pulls: 0, - num_closed_pulls: 0, - num_open_pulls: 0, - num_merged_pulls: 0, - git_url: 'test.com/3' - } - ] + + const { data: spaces, refetch } = useGet({ + path: '/api/v1/user/memberships' + }) + const selectSpace = useCallback( (_space: TypesSpace, isUserAction: boolean) => { setSelectedSpace(_space) @@ -133,15 +71,16 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { text={getString('newSpace')} variation={ButtonVariation.PRIMARY} icon="plus" + onRefetch={refetch} /> ) - const columns: Column[] = useMemo( + const columns: Column<{ space: TypesSpace }>[] = useMemo( () => [ { Header: getString('spaces'), width: 'calc(100% - 180px)', - Cell: ({ row }: CellProps) => { + Cell: ({ row }: CellProps<{ space: TypesSpace }>) => { const record = row.original return ( @@ -154,11 +93,11 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { /> - {record.uid} + {record.space.uid} - {record.description && ( + {record.space.description && ( - {record.description} + {record.space.description} )} @@ -227,17 +166,16 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { {!!spaces?.length && ( - + hideHeaders className={css.table} columns={columns} data={spaces || []} onRowClick={data => { - console.log(data) setOpened(false) - selectSpace({ uid: data?.uid, path: data?.path }, true) + selectSpace({ uid: data?.space?.uid, path: data?.space?.path }, true) }} - getRowClassName={row => cx(css.row, !row.original.description && css.noDesc)} + getRowClassName={row => cx(css.row, !row.original.space.description && css.noDesc)} /> )} {spaces?.length === 0 && ( @@ -249,7 +187,7 @@ export const SpaceSelector: React.FC = ({ onSelect }) => { text={getString('createSpace')} variation={ButtonVariation.PRIMARY} icon="plus" - // onSubmit={() => {}} + onRefetch={refetch} /> } message={ {getString('emptySpaceText')}} diff --git a/web/src/pages/Home/Home.tsx b/web/src/pages/Home/Home.tsx index b1b1cbd54..b05397325 100644 --- a/web/src/pages/Home/Home.tsx +++ b/web/src/pages/Home/Home.tsx @@ -1,15 +1,14 @@ import React from 'react' import { ButtonVariation, Container, FontVariation, Layout, PageBody, Text } from '@harness/uicore' -// import { useGet } from 'restful-react' +import { useGet } from 'restful-react' // import type { TypesSpace } from 'services/code' import { useStrings } from 'framework/strings' -import { voidFn } from 'utils/Utils' // import { usePageIndex } from 'hooks/usePageIndex' -import css from './Home.module.scss' import { LoadingSpinner } from 'components/LoadingSpinner/LoadingSpinner' import { useAppContext } from 'AppContext' import { useGetRepositoryMetadata } from 'hooks/useGetRepositoryMetadata' import { NewSpaceModalButton } from 'components/NewSpaceModalButton/NewSpaceModalButton' +import css from './Home.module.scss' export default function Home() { const { getString } = useStrings() @@ -19,16 +18,9 @@ export default function Home() { const { space } = useGetRepositoryMetadata() const spaces = [] - // const { - // // data: noSpaceYet, - // // loading, - // refetch - // // response, - // // error - // } = useGet({ - // path: `/api/v1/spaces/testspace`, - // queryParams: { page, limit: LIST_FETCHING_LIMIT } - // }) + const { refetch } = useGet({ + path: '/api/v1/user/memberships' + }) const NewSpaceButton = ( {}} + onRefetch={refetch} /> ) return ( diff --git a/web/src/pages/RepositoriesListing/RepositoriesListing.tsx b/web/src/pages/RepositoriesListing/RepositoriesListing.tsx index 29eaea210..220ce50ea 100644 --- a/web/src/pages/RepositoriesListing/RepositoriesListing.tsx +++ b/web/src/pages/RepositoriesListing/RepositoriesListing.tsx @@ -41,7 +41,6 @@ export default function RepositoriesListing() { const [searchTerm, setSearchTerm] = useState() const { routes } = useAppContext() const { updateQueryParams } = useUpdateQueryParams() - const pageBrowser = useQueryParams() const pageInit = pageBrowser.page ? parseInt(pageBrowser.page) : 1 const [page, setPage] = usePageIndex(pageInit)