Skip to content

Commit 5191156

Browse files
committed
fixed default network checking
1 parent cff5ee9 commit 5191156

File tree

2 files changed

+57
-45
lines changed

2 files changed

+57
-45
lines changed

src/components/ChainSelector/ChainSelector.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@ export function ChainSelector({
2121
onNetworkTypeChange,
2222
dataFeedType = "default",
2323
availableNetworkTypes = { mainnet: true, testnet: true },
24-
selectedNetworkType: externalSelectedNetworkType,
24+
selectedNetworkType = "mainnet",
2525
}: ChainSelectorProps) {
2626
const [isOpen, setIsOpen] = useState(false)
27-
const [selectedNetworkType, setSelectedNetworkType] = useState<"mainnet" | "testnet">(
28-
externalSelectedNetworkType || "mainnet"
29-
)
3027
const [searchTerm, setSearchTerm] = useState("")
3128
const [focusedIndex, setFocusedIndex] = useState(-1)
3229
const containerRef = useRef<HTMLDivElement>(null)
@@ -136,8 +133,6 @@ export function ChainSelector({
136133
}
137134

138135
const handleNetworkTypeToggle = (networkType: "mainnet" | "testnet") => {
139-
setSelectedNetworkType(networkType)
140-
141136
// Notify parent component about the network type change
142137
if (onNetworkTypeChange) {
143138
onNetworkTypeChange(networkType, selectedChain)

src/features/feeds/components/FeedList.tsx

Lines changed: 56 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -217,41 +217,7 @@ export const FeedList = ({
217217
const chainMetadata = useGetChainMetadata(chain, initialCache && initialCache[chain.page])
218218
const wrapperRef = useRef(null)
219219

220-
// Determine available network types for the current chain
221-
const availableNetworkTypes = useMemo(() => {
222-
if (!chainMetadata.processedData?.networks) return { mainnet: false, testnet: false }
223-
224-
const networkTypes = {
225-
mainnet: false,
226-
testnet: false,
227-
}
228-
229-
chainMetadata.processedData.networks.forEach((network) => {
230-
if (network.networkType === "mainnet") {
231-
networkTypes.mainnet = true
232-
} else if (network.networkType === "testnet") {
233-
networkTypes.testnet = true
234-
}
235-
})
236-
237-
return networkTypes
238-
}, [chainMetadata.processedData?.networks])
239-
240-
// Auto-adjust selectedNetworkType based on what's available
241-
useEffect(() => {
242-
if (!chainMetadata.loading && chainMetadata.processedData) {
243-
const { mainnet, testnet } = availableNetworkTypes
244220

245-
// If current selection is not available, switch to what's available
246-
if (selectedNetworkType === "mainnet" && !mainnet && testnet) {
247-
setSelectedNetworkType("testnet")
248-
} else if (selectedNetworkType === "testnet" && !testnet && mainnet) {
249-
setSelectedNetworkType("mainnet")
250-
}
251-
// If both are available, keep current selection
252-
// If neither are available, keep current selection (edge case)
253-
}
254-
}, [chainMetadata.loading, chainMetadata.processedData, availableNetworkTypes, selectedNetworkType])
255221

256222
// scroll handler
257223
useEffect(() => {
@@ -446,6 +412,57 @@ export const FeedList = ({
446412
const isDeprecating = ecosystem === "deprecating"
447413
let netCount = 0
448414

415+
// Available network types for current feed type
416+
const availableNetworkTypes = useMemo(() => {
417+
if (!chainMetadata.processedData?.networks) return { mainnet: false, testnet: false }
418+
419+
const networkTypes = { mainnet: false, testnet: false }
420+
421+
// Filter networks by feed type
422+
const filteredNetworks = chainMetadata.processedData.networks.filter((network) => {
423+
if (isDeprecating) {
424+
let foundDeprecated = false
425+
network.metadata?.forEach((feed: any) => {
426+
if (feed.feedCategory === "deprecating") {
427+
foundDeprecated = true
428+
}
429+
})
430+
return foundDeprecated
431+
}
432+
433+
if (isStreams) return network.tags?.includes("streams")
434+
if (isSmartData) return network.tags?.includes("smartData")
435+
if (isRates) return network.tags?.includes("rates")
436+
if (isUSGovernmentMacroeconomicData) return network.tags?.includes("usGovernmentMacroeconomicData")
437+
438+
return true
439+
})
440+
441+
// Check available network types
442+
filteredNetworks.forEach((network) => {
443+
if (network.networkType === "mainnet") {
444+
networkTypes.mainnet = true
445+
} else if (network.networkType === "testnet") {
446+
networkTypes.testnet = true
447+
}
448+
})
449+
450+
return networkTypes
451+
}, [chainMetadata.processedData?.networks, isDeprecating, isStreams, isSmartData, isRates, isUSGovernmentMacroeconomicData])
452+
453+
// Auto-switch network type if current selection isn't available
454+
useEffect(() => {
455+
if (!chainMetadata.loading && chainMetadata.processedData) {
456+
const { mainnet, testnet } = availableNetworkTypes
457+
458+
if (selectedNetworkType === "mainnet" && !mainnet && testnet) {
459+
setSelectedNetworkType("testnet")
460+
} else if (selectedNetworkType === "testnet" && !testnet && mainnet) {
461+
setSelectedNetworkType("mainnet")
462+
}
463+
}
464+
}, [chainMetadata.loading, chainMetadata.processedData, availableNetworkTypes, selectedNetworkType, dataFeedType, ecosystem])
465+
449466
const streamsMainnetSectionTitle =
450467
dataFeedType === "streamsCrypto"
451468
? "Mainnet Crypto Streams"
@@ -773,16 +790,16 @@ export const FeedList = ({
773790
if (foundDeprecated) {
774791
netCount++
775792
}
776-
return foundDeprecated
793+
return foundDeprecated && network.networkType === selectedNetworkType
777794
}
778795

779-
if (isStreams) return network.tags?.includes("streams")
796+
if (isStreams) return network.tags?.includes("streams") && network.networkType === selectedNetworkType
780797

781-
if (isSmartData) return network.tags?.includes("smartData")
798+
if (isSmartData) return network.tags?.includes("smartData") && network.networkType === selectedNetworkType
782799

783-
if (isRates) return network.tags?.includes("rates")
800+
if (isRates) return network.tags?.includes("rates") && network.networkType === selectedNetworkType
784801

785-
if (isUSGovernmentMacroeconomicData) return network.tags?.includes("usGovernmentMacroeconomicData")
802+
if (isUSGovernmentMacroeconomicData) return network.tags?.includes("usGovernmentMacroeconomicData") && network.networkType === selectedNetworkType
786803

787804
// Filter by selected network type (mainnet/testnet)
788805
return network.networkType === selectedNetworkType

0 commit comments

Comments
 (0)