@@ -189,6 +189,18 @@ const withResolversPolyfill = <T,>() => {
189189 return { promise, resolve, reject }
190190}
191191
192+ const isSkillCredential = ( claim : any ) : boolean => {
193+ return (
194+ claim &&
195+ claim . credentialSubject &&
196+ claim . credentialSubject . achievement &&
197+ Array . isArray ( claim . credentialSubject . achievement ) &&
198+ claim . credentialSubject . achievement . length > 0 &&
199+ claim . credentialSubject . achievement [ 0 ] &&
200+ claim . credentialSubject . achievement [ 0 ] . name
201+ )
202+ }
203+
192204const ClaimsPageClient : React . FC = ( ) => {
193205 const [ claims , setClaims ] = useState < any [ ] > ( [ ] )
194206 const [ loading , setLoading ] = useState ( true )
@@ -316,7 +328,7 @@ const ClaimsPageClient: React.FC = () => {
316328 console . log ( '🚀 ~ getAllClaims ~ parsedVCs:' , parsedVCs )
317329 if ( Array . isArray ( parsedVCs ) && parsedVCs . length > 0 ) {
318330 console . log ( 'Returning cached VCs from localStorage' )
319- claimsData = parsedVCs
331+ claimsData = parsedVCs . filter ( isSkillCredential )
320332 }
321333 } catch ( error ) {
322334 console . error ( 'Error parsing cached VCs from localStorage:' , error )
@@ -333,10 +345,13 @@ const ClaimsPageClient: React.FC = () => {
333345 try {
334346 const content = JSON . parse ( file ?. data ?. body )
335347 if ( content && '@context' in content ) {
336- vcs . push ( {
348+ const credential = {
337349 ...content ,
338350 id : file
339- } )
351+ }
352+ if ( isSkillCredential ( credential ) ) {
353+ vcs . push ( credential )
354+ }
340355 }
341356 } catch ( error ) {
342357 console . error ( `Error processing file ${ file } :` , error )
@@ -349,7 +364,8 @@ const ClaimsPageClient: React.FC = () => {
349364 console . error ( 'Error fetching claims from drive:' , error )
350365 const fallback = localStorage . getItem ( 'vcs' )
351366 if ( fallback ) {
352- return JSON . parse ( fallback )
367+ const parsed = JSON . parse ( fallback )
368+ return Array . isArray ( parsed ) ? parsed . filter ( isSkillCredential ) : [ ]
353369 }
354370 return [ ]
355371 }
@@ -463,7 +479,7 @@ const ClaimsPageClient: React.FC = () => {
463479 </ Box >
464480 ) : (
465481 < Box sx = { { display : 'flex' , flexDirection : 'column' , gap : 2 } } >
466- { claims . map ( claim => (
482+ { claims . filter ( isSkillCredential ) . map ( claim => (
467483 < Paper
468484 key = { claim . id }
469485 onClick = { ( ) => handleCardClick ( claim . id ) }
0 commit comments