@@ -474,24 +474,75 @@ export const FeedList = ({
474474 const networkTypes = { mainnet : false , testnet : false }
475475
476476 // Filter networks by feed type
477- const filteredNetworks = chainMetadata . processedData . networks . filter ( ( network ) => {
478- if ( isDeprecating ) {
479- let foundDeprecated = false
480- network . metadata ?. forEach ( ( feed : any ) => {
481- if ( feed . feedCategory === "deprecating" ) {
482- foundDeprecated = true
477+ const filteredNetworks = chainMetadata . processedData . networks
478+ . filter ( ( network ) => {
479+ if ( isDeprecating ) {
480+ let foundDeprecated = false
481+ network . metadata ?. forEach ( ( feed : any ) => {
482+ if ( feed . feedCategory === "deprecating" ) {
483+ foundDeprecated = true
484+ }
485+ } )
486+ // A deprecating network is relevant only if it still has at least one non-hidden deprecating feed
487+ if ( ! foundDeprecated ) return false
488+ const hasVisible = network . metadata ?. some (
489+ ( feed : any ) => feed . feedCategory === "deprecating" && feed . feedCategory !== "hidden" && ! feed . docs ?. hidden
490+ )
491+ return ! ! hasVisible
492+ }
493+
494+ if ( isStreams ) return network . tags ?. includes ( "streams" )
495+ if ( isSmartData ) return network . tags ?. includes ( "smartData" )
496+ if ( isRates ) return network . tags ?. includes ( "rates" )
497+ if ( isUSGovernmentMacroeconomicData ) return network . tags ?. includes ( "usGovernmentMacroeconomicData" )
498+
499+ return true
500+ } )
501+ . filter ( ( network ) => {
502+ // After tag-level filtering, ensure the network still has at least one visible feed for the current dataFeedType
503+ const feeds = network . metadata || [ ]
504+ const hasVisibleFeed = feeds . some ( ( feed : any ) => {
505+ // Universal hidden exclusions
506+ if ( feed . feedCategory === "hidden" || feed . docs ?. hidden ) return false
507+ if ( isDeprecating && feed . feedCategory !== "deprecating" ) return false
508+
509+ if ( isStreams ) {
510+ if ( dataFeedType === "streamsCrypto" )
511+ return feed . contractType === "verifier" && [ "Crypto" , "Crypto-DEX" ] . includes ( feed . docs ?. feedType )
512+ if ( dataFeedType === "streamsRwa" )
513+ return feed . contractType === "verifier" && [ "Equities" , "Forex" ] . includes ( feed . docs ?. feedType )
514+ if ( dataFeedType === "streamsNav" )
515+ return feed . contractType === "verifier" && feed . docs ?. feedType === "Net Asset Value"
516+ if ( dataFeedType === "streamsExRate" )
517+ return feed . contractType === "verifier" && feed . docs ?. productTypeCode === "ExRate"
518+ if ( dataFeedType === "streamsBacked" )
519+ return feed . contractType === "verifier" && feed . docs ?. feedType === "Tokenized Equities"
520+ return false
483521 }
522+ if ( isSmartData ) {
523+ if ( feed . docs ?. deliveryChannelCode === "DS" ) return false
524+ return (
525+ feed . docs ?. isMVR === true ||
526+ feed . docs ?. productType === "Proof of Reserve" ||
527+ feed . docs ?. productType === "NAVLink" ||
528+ feed . docs ?. productType === "SmartAUM"
529+ )
530+ }
531+ if ( isUSGovernmentMacroeconomicData ) return feed . docs ?. productTypeCode === "RefMacro"
532+ if ( isRates ) return feed . docs ?. productType === "Rates"
533+ // Default set
534+ return (
535+ ! feed . docs ?. porType &&
536+ feed . contractType !== "verifier" &&
537+ feed . docs ?. productType !== "Proof of Reserve" &&
538+ feed . docs ?. productType !== "NAVLink" &&
539+ feed . docs ?. productType !== "SmartAUM" &&
540+ feed . docs ?. productTypeCode !== "RefMacro" &&
541+ ! feed . docs ?. isMVR
542+ )
484543 } )
485- return foundDeprecated
486- }
487-
488- if ( isStreams ) return network . tags ?. includes ( "streams" )
489- if ( isSmartData ) return network . tags ?. includes ( "smartData" )
490- if ( isRates ) return network . tags ?. includes ( "rates" )
491- if ( isUSGovernmentMacroeconomicData ) return network . tags ?. includes ( "usGovernmentMacroeconomicData" )
492-
493- return true
494- } )
544+ return hasVisibleFeed
545+ } )
495546
496547 // Check available network types
497548 filteredNetworks . forEach ( ( network ) => {
0 commit comments