11/* eslint-disable @typescript-eslint/no-explicit-any */
22import { useEffect , useState } from 'react' ;
3- import { Pattern } from '../../CustomCatalog/CustomCard ' ;
3+ import type { components } from '@meshery/schemas/constructs/v1beta1/view/View ' ;
44import { withDefaultPageArgs } from '../../PerformersSection/PerformersSection' ;
55import { AssignmentHookResult } from '../types' ;
66
7+ type MesheryViewWithLocation = components [ 'schemas' ] [ 'MesheryViewWithLocation' ] ;
8+
79interface AddedAndRemovedViews {
810 addedviewsIds : string [ ] ;
911 removedviewsIds : string [ ] ;
@@ -23,16 +25,16 @@ const useViewAssignment = ({
2325 useAssignViewToWorkspaceMutation,
2426 useUnassignViewFromWorkspaceMutation,
2527 isViewsVisible
26- } : useViewAssignmentProps ) : AssignmentHookResult < Pattern > => {
28+ } : useViewAssignmentProps ) : AssignmentHookResult < MesheryViewWithLocation > => {
2729 const [ viewsPage , setviewsPage ] = useState < number > ( 0 ) ;
28- const [ viewsData , setviewsData ] = useState < Pattern [ ] > ( [ ] ) ;
30+ const [ viewsData , setviewsData ] = useState < MesheryViewWithLocation [ ] > ( [ ] ) ;
2931 const viewsPageSize = 25 ;
3032 const [ viewsOfWorkspacePage , setviewsOfWorkspacePage ] = useState < number > ( 0 ) ;
31- const [ workspaceviewsData , setWorkspaceviewsData ] = useState < Pattern [ ] > ( [ ] ) ;
33+ const [ workspaceviewsData , setWorkspaceviewsData ] = useState < MesheryViewWithLocation [ ] > ( [ ] ) ;
3234 const [ assignviewModal , setAssignviewModal ] = useState < boolean > ( false ) ;
3335 const [ skipviews , setSkipviews ] = useState < boolean > ( true ) ;
3436 const [ disableTransferButton , setDisableTransferButton ] = useState < boolean > ( true ) ;
35- const [ assignedviews , setAssignedviews ] = useState < Pattern [ ] > ( [ ] ) ;
37+ const [ assignedviews , setAssignedviews ] = useState < MesheryViewWithLocation [ ] > ( [ ] ) ;
3638
3739 const { data : views } = useGetViewsOfWorkspaceQuery (
3840 withDefaultPageArgs ( {
@@ -61,13 +63,15 @@ const useViewAssignment = ({
6163 const [ unassignviewFromWorkspace ] = useUnassignViewFromWorkspaceMutation ( ) ;
6264
6365 useEffect ( ( ) => {
64- const viewsDataRtk = views ?. views ? views . views : [ ] ;
65- setviewsData ( ( prevData ) => [ ...prevData , ...viewsDataRtk ] ) ;
66+ const viewsDataRtk : MesheryViewWithLocation [ ] = views ?. views ? views . views : [ ] ;
67+ const viewsWithId = viewsDataRtk . filter ( ( view ) => typeof view . id === 'string' ) ;
68+ setviewsData ( ( prevData ) => [ ...prevData , ...viewsWithId ] ) ;
6669 } , [ views ] ) ;
6770
6871 useEffect ( ( ) => {
69- const viewsOfWorkspaceDataRtk = viewsOfWorkspace ?. views ? viewsOfWorkspace . views : [ ] ;
70- setWorkspaceviewsData ( ( prevData ) => [ ...prevData , ...viewsOfWorkspaceDataRtk ] ) ;
72+ const viewsOfWorkspaceDataRtk : MesheryViewWithLocation [ ] = viewsOfWorkspace ?. views ? viewsOfWorkspace . views : [ ] ;
73+ const viewsWithId = viewsOfWorkspaceDataRtk . filter ( ( view ) => typeof view . id === 'string' ) ;
74+ setWorkspaceviewsData ( ( prevData ) => [ ...prevData , ...viewsWithId ] ) ;
7175 } , [ viewsOfWorkspace ] ) ;
7276
7377 const handleAssignviewModal = ( e ?: React . MouseEvent ) : void => {
@@ -96,17 +100,17 @@ const useViewAssignment = ({
96100 }
97101 } ;
98102
99- const getAddedAndRemovedviews = ( allAssignedviews : Pattern [ ] ) : AddedAndRemovedViews => {
100- const originalviewsIds = workspaceviewsData . map ( ( view ) => view . id ) ;
101- const updatedviewsIds = allAssignedviews . map ( ( view ) => view . id ) ;
103+ const getAddedAndRemovedviews = ( allAssignedviews : MesheryViewWithLocation [ ] ) : AddedAndRemovedViews => {
104+ const originalviewsIds = workspaceviewsData . map ( ( view ) => view . id ) . filter ( ( id ) : id is string => typeof id === 'string' ) ;
105+ const updatedviewsIds = allAssignedviews . map ( ( view ) => view . id ) . filter ( ( id ) : id is string => typeof id === 'string' ) ;
102106
103107 const addedviewsIds = updatedviewsIds . filter ( ( id ) => ! originalviewsIds . includes ( id ) ) ;
104108 const removedviewsIds = originalviewsIds . filter ( ( id ) => ! updatedviewsIds . includes ( id ) ) ;
105109
106110 return { addedviewsIds, removedviewsIds } ;
107111 } ;
108112
109- const isViewsActivityOccurred = ( allViews : Pattern [ ] ) : boolean => {
113+ const isViewsActivityOccurred = ( allViews : MesheryViewWithLocation [ ] ) : boolean => {
110114 const { addedviewsIds, removedviewsIds } = getAddedAndRemovedviews ( allViews ) ;
111115 return addedviewsIds . length > 0 || removedviewsIds . length > 0 ;
112116 } ;
@@ -135,7 +139,7 @@ const useViewAssignment = ({
135139 handleAssignviewModalClose ( ) ;
136140 } ;
137141
138- const handleAssignviewsData = ( updatedAssignedData : Pattern [ ] ) : void => {
142+ const handleAssignviewsData = ( updatedAssignedData : MesheryViewWithLocation [ ] ) : void => {
139143 const { addedviewsIds, removedviewsIds } = getAddedAndRemovedviews ( updatedAssignedData ) ;
140144 setDisableTransferButton ( ! ( addedviewsIds . length > 0 || removedviewsIds . length > 0 ) ) ;
141145 setAssignedviews ( updatedAssignedData ) ;
0 commit comments