diff --git a/package.json b/package.json index bb04bf589..f6612eda9 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@eslint/compat": "^2.0.3", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "^9.0.0", - "@meshery/schemas": "^1.0.4", + "@meshery/schemas": "^1.0.5", "@mui/icons-material": "^7.3.9", "@reduxjs/toolkit": "^2.11.2", "@testing-library/dom": "^10.4.1", diff --git a/src/custom/Workspaces/hooks/useViewsAssignment.tsx b/src/custom/Workspaces/hooks/useViewsAssignment.tsx index 9f274bcf0..249d9edc0 100644 --- a/src/custom/Workspaces/hooks/useViewsAssignment.tsx +++ b/src/custom/Workspaces/hooks/useViewsAssignment.tsx @@ -1,9 +1,11 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { useEffect, useState } from 'react'; -import { Pattern } from '../../CustomCatalog/CustomCard'; +import type { components } from '@meshery/schemas/constructs/v1beta1/view/View'; import { withDefaultPageArgs } from '../../PerformersSection/PerformersSection'; import { AssignmentHookResult } from '../types'; +type MesheryViewWithLocation = components['schemas']['MesheryViewWithLocation']; + interface AddedAndRemovedViews { addedviewsIds: string[]; removedviewsIds: string[]; @@ -23,16 +25,16 @@ const useViewAssignment = ({ useAssignViewToWorkspaceMutation, useUnassignViewFromWorkspaceMutation, isViewsVisible -}: useViewAssignmentProps): AssignmentHookResult => { +}: useViewAssignmentProps): AssignmentHookResult => { const [viewsPage, setviewsPage] = useState(0); - const [viewsData, setviewsData] = useState([]); + const [viewsData, setviewsData] = useState([]); const viewsPageSize = 25; const [viewsOfWorkspacePage, setviewsOfWorkspacePage] = useState(0); - const [workspaceviewsData, setWorkspaceviewsData] = useState([]); + const [workspaceviewsData, setWorkspaceviewsData] = useState([]); const [assignviewModal, setAssignviewModal] = useState(false); const [skipviews, setSkipviews] = useState(true); const [disableTransferButton, setDisableTransferButton] = useState(true); - const [assignedviews, setAssignedviews] = useState([]); + const [assignedviews, setAssignedviews] = useState([]); const { data: views } = useGetViewsOfWorkspaceQuery( withDefaultPageArgs({ @@ -61,13 +63,15 @@ const useViewAssignment = ({ const [unassignviewFromWorkspace] = useUnassignViewFromWorkspaceMutation(); useEffect(() => { - const viewsDataRtk = views?.views ? views.views : []; - setviewsData((prevData) => [...prevData, ...viewsDataRtk]); + const viewsDataRtk: MesheryViewWithLocation[] = views?.views ? views.views : []; + const viewsWithId = viewsDataRtk.filter((view) => typeof view.id === 'string'); + setviewsData((prevData) => [...prevData, ...viewsWithId]); }, [views]); useEffect(() => { - const viewsOfWorkspaceDataRtk = viewsOfWorkspace?.views ? viewsOfWorkspace.views : []; - setWorkspaceviewsData((prevData) => [...prevData, ...viewsOfWorkspaceDataRtk]); + const viewsOfWorkspaceDataRtk: MesheryViewWithLocation[] = viewsOfWorkspace?.views ? viewsOfWorkspace.views : []; + const viewsWithId = viewsOfWorkspaceDataRtk.filter((view) => typeof view.id === 'string'); + setWorkspaceviewsData((prevData) => [...prevData, ...viewsWithId]); }, [viewsOfWorkspace]); const handleAssignviewModal = (e?: React.MouseEvent): void => { @@ -96,9 +100,9 @@ const useViewAssignment = ({ } }; - const getAddedAndRemovedviews = (allAssignedviews: Pattern[]): AddedAndRemovedViews => { - const originalviewsIds = workspaceviewsData.map((view) => view.id); - const updatedviewsIds = allAssignedviews.map((view) => view.id); + const getAddedAndRemovedviews = (allAssignedviews: MesheryViewWithLocation[]): AddedAndRemovedViews => { + const originalviewsIds = workspaceviewsData.map((view) => view.id).filter((id): id is string => typeof id === 'string'); + const updatedviewsIds = allAssignedviews.map((view) => view.id).filter((id): id is string => typeof id === 'string'); const addedviewsIds = updatedviewsIds.filter((id) => !originalviewsIds.includes(id)); const removedviewsIds = originalviewsIds.filter((id) => !updatedviewsIds.includes(id)); @@ -106,7 +110,7 @@ const useViewAssignment = ({ return { addedviewsIds, removedviewsIds }; }; - const isViewsActivityOccurred = (allViews: Pattern[]): boolean => { + const isViewsActivityOccurred = (allViews: MesheryViewWithLocation[]): boolean => { const { addedviewsIds, removedviewsIds } = getAddedAndRemovedviews(allViews); return addedviewsIds.length > 0 || removedviewsIds.length > 0; }; @@ -135,7 +139,7 @@ const useViewAssignment = ({ handleAssignviewModalClose(); }; - const handleAssignviewsData = (updatedAssignedData: Pattern[]): void => { + const handleAssignviewsData = (updatedAssignedData: MesheryViewWithLocation[]): void => { const { addedviewsIds, removedviewsIds } = getAddedAndRemovedviews(updatedAssignedData); setDisableTransferButton(!(addedviewsIds.length > 0 || removedviewsIds.length > 0)); setAssignedviews(updatedAssignedData);