Files
explore/ui/address/contract/alerts/ContractDetailsAlertVerificationStatus.tsx
zeekay 84af44a4f5 fix: remove all user-visible Blockscout references
- Issue URL → github.com/luxfi/explore
- API docs links → docs.lux.network
- Contract verification → local route instead of vera.blockscout.com
- Discord link → discord.gg/luxnetwork
- JSON-LD script ID → lux-explorer-product-schema
- RPC API description → Lux Network branding
- Rollbar instance → .lux.network domain support
2026-03-02 10:43:36 -08:00

71 lines
2.2 KiB
TypeScript

import React from 'react';
import type { Address } from 'types/api/address';
import type { SmartContract } from 'types/api/contract';
import { Alert } from '@luxfi/ui/alert';
import { Link } from 'toolkit/next/link';
import ContractDetailsVerificationButton from '../ContractDetailsVerificationButton';
interface Props {
data: SmartContract | undefined;
isLoading: boolean;
addressData: Address;
}
const ContractDetailsAlertVerificationStatus = ({ data, isLoading, addressData }: Props) => {
if (!data || !data.is_verified) {
return null;
}
const sourceElement = (() => {
if (data?.is_verified_via_eth_bytecode_db) {
return (
<>
<span>This contract has been { data.is_partially_verified ? 'partially ' : '' }verified using </span>
<Link
href="https://docs.lux.network/verification/bytecode-database"
external
>
Bytecode Database
</Link>
</>
);
}
if (data?.is_verified_via_sourcify) {
return (
<>
<span>This contract has been { data.is_partially_verified ? 'partially ' : '' }verified via Sourcify. </span>
{ data.sourcify_repo_url && <Link href={ data.sourcify_repo_url } textStyle="md" external>View contract in Sourcify repository</Link> }
</>
);
}
return null;
})();
if (!data.is_partially_verified) {
return (
<Alert status="success" loading={ isLoading } descriptionProps={{ whiteSpace: 'pre-wrap' }}>
<span>Contract source code verified (exact match){ sourceElement ? '. ' : '' }</span>
{ sourceElement }
</Alert>
);
}
return (
<Alert status="success" loading={ isLoading } descriptionProps={{ alignItems: 'center', flexWrap: 'wrap', rowGap: 2, columnGap: 3 }}>
<span>Contract source code verified ({ data.is_partially_verified ? 'partial' : 'exact' } match){ sourceElement ? '.' : '' }</span>
<ContractDetailsVerificationButton
isLoading={ isLoading }
addressHash={ addressData.hash }
/>
{ sourceElement && <div className="w-full">{ sourceElement }</div> }
</Alert>
);
};
export default React.memo(ContractDetailsAlertVerificationStatus);