Files
explore/lib/multichain/getChainValueFromQuery.ts
T
tom goriunovandGitHub 6c378a0abb Support both chain slug and chain id in multichain page parameters (#3338)
* Support both chain slug and chain id in page parameters in multichain explorer mode

Resolves #3320

* fix test
2026-04-03 11:32:33 +02:00

38 lines
952 B
TypeScript

import type { Router } from 'next/router';
import multichainConfig from 'configs/multichain';
import getQueryParamString from 'lib/router/getQueryParamString';
export default function getChainValueFromQuery(
query: Router['query'],
chainIds?: Array<string>,
withAllOption?: boolean,
) {
const config = multichainConfig();
if (!config) {
return undefined;
}
const chainId = getQueryParamString(query.chain_id);
const chainSlugOrId = getQueryParamString(query.chain_slug_or_id);
if (chainId) {
if (config.chains.some((chain) => chain.id === chainId)) {
return chainId;
}
}
if (chainSlugOrId) {
const chain = config.chains.find((chain) => chain.slug === chainSlugOrId || chain.id === chainSlugOrId);
if (chain) {
return chain.id;
}
}
if (withAllOption) {
return 'all';
}
return config.chains.filter((chain) => !chainIds || (chain.id && chainIds.includes(chain.id)))?.[0]?.id;
}