Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: update Renku 2.0 APIs #3299

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,14 @@
"storybook-wait-server": "wait-on http://127.0.0.1:6006",
"storybook-test": "test-storybook",
"storybook-compile-and-test": "concurrently -k -s first -n 'BUILD,TEST' -c 'magenta,blue' 'npm run storybook-build && npm run storybook-start-server' 'npm run storybook-wait-server && npm run storybook-test'",
"generate-api": "npm run generate-api:dataServicesUser && npm run generate-api:namespaceV2 && npm run generate-api:projectV2 && npm run generate-api:platform && npm run generate-api:searchV2 && npm run generate-api:storages",
"generate-api": "npm run generate-api:dataServicesUser && npm run generate-api:namespaceV2 && npm run generate-api:groupsV2 && npm run generate-api:projectsV2 && generate-api:platform && npm run generate-api:searchV2 && npm run generate-api:storagesV2",
"generate-api:dataServicesUser": "rtk-query-codegen-openapi src/features/user/dataServicesUser.api/dataServicesUser.api-config.ts",
"generate-api:namespaceV2": "rtk-query-codegen-openapi src/features/projectsV2/api/namespace.api-config.ts",
"generate-api:projectV2": "rtk-query-codegen-openapi src/features/projectsV2/api/projectV2.api-config.ts",
"generate-api:groupsV2": "rtk-query-codegen-openapi src/features/groupsV2/api/groupsV2.api-config.ts",
"generate-api:projectsV2": "rtk-query-codegen-openapi src/features/projectsV2/api/projectsV2.api-config.ts",
"generate-api:platform": "rtk-query-codegen-openapi src/features/platform/api/platform.api-config.ts",
"generate-api:searchV2": "rtk-query-codegen-openapi src/features/searchV2/api/searchV2.api-config.ts",
"generate-api:storages": "rtk-query-codegen-openapi src/features/projectsV2/api/storages.api-config.ts"
"generate-api:storagesV2": "rtk-query-codegen-openapi src/features/storagesV2/api/storagesV2.api-config.ts"
},
"type": "module",
"dependencies": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ import { Col, Row } from "reactstrap";

import { Loader } from "../../../components/Loader";
import ContainerWrap from "../../../components/container/ContainerWrap";
import type { Project } from "../../projectsV2/api/projectV2.api";
import { useGetProjectsByNamespaceAndSlugQuery } from "../../projectsV2/api/projectV2.api";
import type { Project } from "../../projectsV2/api/projectsV2.api";
import { useGetProjectBySlugQuery } from "../../projectsV2/api/projectsV2.api";
import ProjectNotFound from "../../projectsV2/notFound/ProjectNotFound";
import ProjectPageHeader from "../ProjectPageHeader/ProjectPageHeader";
import ProjectPageNav from "../ProjectPageNav/ProjectPageNav";
Expand All @@ -37,7 +37,7 @@ export default function ProjectPageContainer() {
namespace: string | undefined;
slug: string | undefined;
}>();
const { data, isLoading, error } = useGetProjectsByNamespaceAndSlugQuery({
const { data, isLoading, error } = useGetProjectBySlugQuery({
namespace: namespace ?? "",
slug: slug ?? "",
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ import {
import { Loader } from "../../../../components/Loader";
import { RtkOrNotebooksError } from "../../../../components/errors/RtkErrorAlert";
import BootstrapGitLabIcon from "../../../../components/icons/BootstrapGitLabIcon";
import { Project } from "../../../projectsV2/api/projectV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectV2.enhanced-api";
import type { Project } from "../../../projectsV2/api/projectsV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectsV2.api";

interface AddCodeRepositoryModalProps {
project: Project;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ import { skipToken } from "@reduxjs/toolkit/query";
import { Loader } from "../../../../components/Loader";
import { RtkOrNotebooksError } from "../../../../components/errors/RtkErrorAlert";
import { safeNewUrl } from "../../../../utils/helpers/safeNewUrl.utils";
import { Project } from "../../../projectsV2/api/projectV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectV2.enhanced-api";
import type { Project } from "../../../projectsV2/api/projectsV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectsV2.api";
import {
ErrorAlert,
RenkuAlert,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,6 @@
import cx from "classnames";
import { useCallback, useState } from "react";
import { FileCode, PlusLg } from "react-bootstrap-icons";

import { Project } from "../../../projectsV2/api/projectV2.api.ts";
import { AddCodeRepositoryStep1Modal } from "./AddCodeRepositoryModal.tsx";
import AccessGuard from "../../utils/AccessGuard.tsx";
import useProjectAccess from "../../utils/useProjectAccess.hook";
import { RepositoryItem } from "./CodeRepositoryDisplay.tsx";
import {
Badge,
Button,
Expand All @@ -33,6 +27,12 @@ import {
ListGroup,
} from "reactstrap";

import { Project } from "../../../projectsV2/api/projectsV2.api";
import AccessGuard from "../../utils/AccessGuard";
import useProjectAccess from "../../utils/useProjectAccess.hook";
import { AddCodeRepositoryStep1Modal } from "./AddCodeRepositoryModal";
import { RepositoryItem } from "./CodeRepositoryDisplay";

export function CodeRepositoriesDisplay({ project }: { project: Project }) {
const { userRole } = useProjectAccess({ projectId: project.id });
const [isOpen, setIsOpen] = useState(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@

import cx from "classnames";
import { useCallback, useEffect } from "react";
import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from "reactstrap";
import { XLg } from "react-bootstrap-icons";
import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from "reactstrap";

import { RtkErrorAlert } from "../../../../components/errors/RtkErrorAlert";
import CloudStorageSecretsModal from "../../../sessionsV2/CloudStorageSecretsModal";
import type { SessionStartCloudStorageConfiguration } from "../../../sessionsV2/startSessionOptionsV2.types";
import {
useDeleteStoragesV2ByStorageIdSecretsMutation,
usePostStoragesV2ByStorageIdSecretsMutation,
} from "../../../projectsV2/api/projectV2.enhanced-api";
import type { CloudStorageGetRead } from "../../../projectsV2/api/storagesV2.api";
import type { SessionStartCloudStorageConfiguration } from "../../../sessionsV2/startSessionOptionsV2.types";
import CloudStorageSecretsModal from "../../../sessionsV2/CloudStorageSecretsModal";
type CloudStorageGetRead,
} from "../../../storagesV2/api/storagesV2.api";

import useDataSourceConfiguration from "./useDataSourceConfiguration.hook";
import { Loader } from "../../../../components/Loader";
import useDataSourceConfiguration from "./useDataSourceConfiguration.hook";

interface DataSourceCredentialsModalProps {
isOpen: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ import {
Row,
} from "reactstrap";

import { Loader } from "../../../../components/Loader.tsx";
import AddCloudStorageModal from "../../../project/components/cloudStorage/CloudStorageModal.tsx";
import { ButtonWithMenuV2 } from "../../../../components/buttons/Button";
import { Loader } from "../../../../components/Loader";
import AddCloudStorageModal from "../../../project/components/cloudStorage/CloudStorageModal";
import {
CloudStorageGetRead,
useDeleteStoragesV2ByStorageIdMutation,
} from "../../../projectsV2/api/storagesV2.api";
type CloudStorageGetRead,
} from "../../../storagesV2/api/storagesV2.api";
import DataSourceCredentialsModal from "./DataSourceCredentialsModal.tsx";
import { DataSourceView } from "./DataSourceView.tsx";
import { ButtonWithMenuV2 } from "../../../../components/buttons/Button.tsx";
import { DataSourceView } from "./DataSourceView";

interface DataSourceDeleteModalProps {
storage: CloudStorageGetRead;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import { Offcanvas, OffcanvasBody } from "reactstrap";
import { CredentialMoreInfo } from "../../../project/components/cloudStorage/CloudStorageItem";
import { CLOUD_STORAGE_SAVED_SECRET_DISPLAY_VALUE } from "../../../project/components/cloudStorage/projectCloudStorage.constants";
import { getCredentialFieldDefinitions } from "../../../project/utils/projectCloudStorage.utils";
import type { CloudStorageGetV2Read } from "../../../projectsV2/api/storagesV2.api";
import { storageSecretNameToFieldName } from "../../../secrets/secrets.utils";
import type { CloudStorageGetV2Read } from "../../../storagesV2/api/storagesV2.api";
import { DataSourceActions } from "./DataSourceDisplay";

interface DataSourceViewProps {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,6 @@
import cx from "classnames";
import { useCallback, useState } from "react";
import { Database, PlusLg } from "react-bootstrap-icons";
import { Loader } from "../../../../components/Loader.tsx";
import AddCloudStorageModal from "../../../project/components/cloudStorage/CloudStorageModal.tsx";
import { Project } from "../../../projectsV2/api/projectV2.api";
import { useGetStoragesV2Query } from "../../../projectsV2/api/storagesV2.api";
import AccessGuard from "../../utils/AccessGuard.tsx";
import useProjectAccess from "../../utils/useProjectAccess.hook";
import { DataSourceDisplay } from "./DataSourceDisplay.tsx";
import {
Badge,
Button,
Expand All @@ -34,6 +27,14 @@ import {
ListGroup,
} from "reactstrap";

import { Loader } from "../../../../components/Loader";
import AddCloudStorageModal from "../../../project/components/cloudStorage/CloudStorageModal";
import type { Project } from "../../../projectsV2/api/projectsV2.api";
import { useGetStoragesV2Query } from "../../../storagesV2/api/storagesV2.api";
import AccessGuard from "../../utils/AccessGuard";
import useProjectAccess from "../../utils/useProjectAccess.hook";
import { DataSourceDisplay } from "./DataSourceDisplay";

export function DataSourcesDisplay({ project }: { project: Project }) {
const [isOpen, setIsOpen] = useState(false);
const { userRole } = useProjectAccess({ projectId: project.id });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,12 @@
import { useMemo } from "react";

import { CLOUD_OPTIONS_OVERRIDE } from "../../../project/components/cloudStorage/projectCloudStorage.constants";
import { RCloneOption } from "../../../projectsV2/api/storagesV2.api";
import type { SessionStartCloudStorageConfiguration } from "../../../sessionsV2/startSessionOptionsV2.types";
import type {
CloudStorageGetV2Read,
CloudStorageSecretGet,
} from "../../../projectsV2/api/storagesV2.api";

import type { SessionStartCloudStorageConfiguration } from "../../../sessionsV2/startSessionOptionsV2.types";
RCloneOption,
} from "../../../storagesV2/api/storagesV2.generated-api";

interface UseDataSourceConfigurationArgs {
storages: CloudStorageGetV2Read[] | undefined;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,17 @@ import {
UnderlineArrowLink,
} from "../../../../components/buttons/Button";
import { ABSOLUTE_ROUTES } from "../../../../routing/routes.constants";
import projectPreviewImg from "../../../../styles/assets/projectImagePreview.svg";
import { useGetNamespacesByNamespaceSlugQuery } from "../../../groupsV2/api/groupsV2.api";
import type {
ProjectMemberListResponse,
ProjectMemberResponse,
} from "../../../projectsV2/api/projectV2.api";
import {
useGetNamespacesByNamespaceSlugQuery,
useGetProjectsByProjectIdMembersQuery,
} from "../../../projectsV2/api/projectV2.enhanced-api";
} from "../../../projectsV2/api/projectsV2.api";
import { useGetProjectsByProjectIdMembersQuery } from "../../../projectsV2/api/projectsV2.api";
import { useProject } from "../../ProjectPageContainer/ProjectPageContainer";
import MembershipGuard from "../../utils/MembershipGuard";
import { getMemberNameToDisplay, toSortedMembers } from "../../utils/roleUtils";

import projectPreviewImg from "../../../../styles/assets/projectImagePreview.svg";
import styles from "./ProjectInformation.module.scss";

const MAX_MEMBERS_DISPLAYED = 5;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ import { NOTIFICATION_TOPICS } from "../../../../notifications/Notifications.con
import { NotificationsManager } from "../../../../notifications/notifications.types";
import { ABSOLUTE_ROUTES } from "../../../../routing/routes.constants";
import AppContext from "../../../../utils/context/appContext";
import { Project } from "../../../projectsV2/api/projectV2.api";
import { useDeleteProjectsByProjectIdMutation } from "../../../projectsV2/api/projectV2.enhanced-api";
import type { Project } from "../../../projectsV2/api/projectsV2.api";
import { useDeleteProjectsByProjectIdMutation } from "../../../projectsV2/api/projectsV2.api";

export function notificationProjectDeleted(
notifications: NotificationsManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ import { NOTIFICATION_TOPICS } from "../../../../notifications/Notifications.con
import { NotificationsManager } from "../../../../notifications/notifications.types";
import { ABSOLUTE_ROUTES } from "../../../../routing/routes.constants";
import AppContext from "../../../../utils/context/appContext";
import type { Project } from "../../../projectsV2/api/projectV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectV2.enhanced-api";
import type { Project } from "../../../projectsV2/api/projectsV2.api";
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectsV2.api";
import ProjectDescriptionFormField from "../../../projectsV2/fields/ProjectDescriptionFormField";
import ProjectNameFormField from "../../../projectsV2/fields/ProjectNameFormField";
import ProjectNamespaceFormField from "../../../projectsV2/fields/ProjectNamespaceFormField";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,23 @@ import {
Row,
UncontrolledTooltip,
} from "reactstrap";
import { ButtonWithMenuV2 } from "../../../../components/buttons/Button.tsx";

import { ButtonWithMenuV2 } from "../../../../components/buttons/Button";
import { RtkErrorAlert } from "../../../../components/errors/RtkErrorAlert";
import { Loader } from "../../../../components/Loader";

import type {
Project,
ProjectMemberResponse,
} from "../../../projectsV2/api/projectV2.api";
import { useGetProjectsByProjectIdMembersQuery } from "../../../projectsV2/api/projectV2.enhanced-api";
} from "../../../projectsV2/api/projectsV2.api";
import { useGetProjectsByProjectIdMembersQuery } from "../../../projectsV2/api/projectsV2.api";
import AddProjectMemberModal from "../../../projectsV2/fields/AddProjectMemberModal";
import EditProjectMemberModal from "../../../projectsV2/fields/EditProjectMemberModal.tsx";
import EditProjectMemberModal from "../../../projectsV2/fields/EditProjectMemberModal";
import RemoveProjectMemberModal from "../../../projectsV2/fields/RemoveProjectMemberModal";
import { ProjectMemberDisplay } from "../../../projectsV2/shared/ProjectMemberDisplay";
import MembershipGuard from "../../utils/MembershipGuard.tsx";
import { toSortedMembers } from "../../utils/roleUtils.ts";

import MembershipGuard from "../../utils/MembershipGuard";
import { toSortedMembers } from "../../utils/roleUtils";

type MemberActionMenuProps = Omit<
ProjectPageSettingsMembersListItemProps,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { Col, Row } from "reactstrap";

import { UnderlineArrowLink } from "../../../components/buttons/Button";
import { ABSOLUTE_ROUTES } from "../../../routing/routes.constants";
import { Project } from "../../projectsV2/api/projectV2.api";
import { Project } from "../../projectsV2/api/projectsV2.api";
import { ProjectImageView } from "../ProjectPageContent/ProjectInformation/ProjectInformation";

interface ProjectPageHeaderProps {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { Nav, NavItem } from "reactstrap";

import RenkuNavLinkV2 from "../../../components/RenkuNavLinkV2";
import { ABSOLUTE_ROUTES } from "../../../routing/routes.constants";
import type { Project } from "../../projectsV2/api/projectV2.api";
import type { Project } from "../../projectsV2/api/projectsV2.api";

export default function ProjectPageNav({ project }: { project: Project }) {
const { namespace = "", slug = "" } = project;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ import { ABSOLUTE_ROUTES } from "../../../routing/routes.constants";
import AppContext from "../../../utils/context/appContext";

import { notificationProjectDeleted } from "../../ProjectPageV2/ProjectPageContent/Settings/ProjectDelete";
import type { Project } from "../../projectsV2/api/projectV2.api";
import { useDeleteProjectsByProjectIdMutation } from "../../projectsV2/api/projectV2.enhanced-api";
import type { Project } from "../../projectsV2/api/projectsV2.api";
import { useDeleteProjectsByProjectIdMutation } from "../../projectsV2/api/projectsV2.api";

interface ProjectDeleteConfirmationProps {
isOpen: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
* limitations under the License.
*/

import type { ProjectPatch } from "../../projectsV2/api/projectV2.api";
import type { ProjectPatch } from "../../projectsV2/api/projectsV2.api";

export type ProjectV2Metadata = Omit<ProjectPatch, "repositories">;
2 changes: 1 addition & 1 deletion client/src/features/ProjectPageV2/utils/AccessGuard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

import type { Role } from "../../projectsV2/api/projectV2.api.ts";
import type { Role } from "../../projectsV2/api/projectsV2.api.ts";

import { toNumericRole } from "./roleUtils.ts";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import useLegacySelector from "../../../utils/customHooks/useLegacySelector.hook
import type {
ProjectMemberListResponse,
ProjectMemberResponse,
} from "../../projectsV2/api/projectV2.api.ts";
} from "../../projectsV2/api/projectsV2.api.ts";
import AccessGuard from "./AccessGuard.tsx";
import { toNumericRole } from "./roleUtils.ts";

Expand Down
2 changes: 1 addition & 1 deletion client/src/features/ProjectPageV2/utils/roleUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import type {
ProjectMemberListResponse,
ProjectMemberResponse,
Role,
} from "../../projectsV2/api/projectV2.api";
} from "../../projectsV2/api/projectsV2.api";

export type RoleOrNone = Role | "none";
const ROLE_MAP: Record<RoleOrNone, number> = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@
*/

import { skipToken } from "@reduxjs/toolkit/query";
import { useGetUserQuery } from "../../user/dataServicesUser.api/index.ts";
import useLegacySelector from "../../../utils/customHooks/useLegacySelector.hook.ts";
import type { Role } from "../../projectsV2/api/projectV2.api.ts";
import { useGetProjectsByProjectIdMembersQuery } from "../../projectsV2/api/projectV2.enhanced-api.ts";

import useLegacySelector from "../../../utils/customHooks/useLegacySelector.hook";
import {
useGetProjectsByProjectIdMembersQuery,
type Role,
} from "../../projectsV2/api/projectsV2.api";
import { useGetUserQuery } from "../../user/dataServicesUser.api/index";

interface UseProjectAccessArgs {
projectId: string;
Expand Down
22 changes: 12 additions & 10 deletions client/src/features/dashboardV2/DashboardV2.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,15 @@ import {
} from "reactstrap";

import { WarnAlert } from "../../components/Alert";
import { RtkOrNotebooksError } from "../../components/errors/RtkErrorAlert";
import { ExternalLink } from "../../components/ExternalLinks";
import { Loader } from "../../components/Loader";
import {
useGetGroupsQuery,
useGetProjectsQuery,
} from "../projectsV2/api/projectV2.enhanced-api";
import { useGetGroupsQuery } from "../groupsV2/api/groupsV2.api";
import { useGetProjectsQuery } from "../projectsV2/api/projectsV2.api";
import BackToV1Button from "../projectsV2/shared/BackToV1Button";
import { RtkOrNotebooksError } from "../../components/errors/RtkErrorAlert";
import DashboardV2Sessions from "./DashboardV2Sessions";
import GroupShortHandDisplay from "../projectsV2/show/GroupShortHandDisplay";
import ProjectShortHandDisplay from "../projectsV2/show/ProjectShortHandDisplay";
import DashboardV2Sessions from "./DashboardV2Sessions";

export default function DashboardV2() {
return (
Expand Down Expand Up @@ -137,8 +135,10 @@ function ProjectsDashboard() {

function ProjectList() {
const { data, error, isLoading } = useGetProjectsQuery({
page: 1,
perPage: 5,
params: {
page: 1,
per_page: 5,
},
});

const noProjects = isLoading ? (
Expand Down Expand Up @@ -207,8 +207,10 @@ function GroupsDashboard() {

function GroupsList() {
const { data, error, isLoading } = useGetGroupsQuery({
page: 1,
perPage: 5,
params: {
page: 1,
per_page: 5,
},
});

const noGroups = isLoading ? (
Expand Down
Loading
Loading