mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* Add env variable to set Celenium Explorer URL Fixes #2724 * fix test * [skip ci] update version in docs
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { Flex, Icon } from '@chakra-ui/react';
|
|
import React from 'react';
|
|
|
|
import config from 'configs/app';
|
|
// eslint-disable-next-line no-restricted-imports
|
|
import celeniumIcon from 'icons/brands/celenium.svg';
|
|
import hexToBase64 from 'lib/hexToBase64';
|
|
import { Link } from 'toolkit/chakra/link';
|
|
|
|
const feature = config.features.rollup;
|
|
|
|
interface Props {
|
|
commitment: string;
|
|
namespace: string;
|
|
height: number;
|
|
fallback?: React.ReactNode;
|
|
}
|
|
|
|
function getCeleniumUrl(props: Props) {
|
|
try {
|
|
if (!feature.isEnabled || !feature.DA.celestia.celeniumUrl) {
|
|
return undefined;
|
|
}
|
|
|
|
const url = new URL(feature.DA.celestia.celeniumUrl);
|
|
|
|
url.searchParams.set('commitment', hexToBase64(props.commitment));
|
|
url.searchParams.set('hash', hexToBase64(props.namespace));
|
|
url.searchParams.set('height', String(props.height));
|
|
|
|
return url.toString();
|
|
} catch (error) {}
|
|
}
|
|
|
|
const CeleniumLink = (props: Props) => {
|
|
const url = getCeleniumUrl(props);
|
|
|
|
if (!url) {
|
|
return props.fallback ?? null;
|
|
}
|
|
|
|
return (
|
|
<Flex alignItems="center" columnGap={ 2 }>
|
|
<Icon as={ celeniumIcon } boxSize={ 5 }/>
|
|
<Link external href={ getCeleniumUrl(props) }>Blob page</Link>
|
|
</Flex>
|
|
);
|
|
};
|
|
|
|
export default React.memo(CeleniumLink);
|