ghost-portal/packages/react-components/src/util/getContractAbi.ts
2021-01-03 11:33:39 +01:00

29 lines
725 B
TypeScript

// Copyright 2017-2021 @polkadot/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { AnyJson } from '@polkadot/types/types';
import { Abi } from '@polkadot/api-contract';
import { api } from '@polkadot/react-api';
import getAddressMeta from './getAddressMeta';
export default function getContractAbi (address: string | null): Abi | null {
if (!address) {
return null;
}
let abi: Abi | undefined;
const meta = getAddressMeta(address, 'contract');
try {
const data = meta.contract && JSON.parse(meta.contract.abi) as AnyJson;
abi = new Abi(data, api.registry.getChainProperties());
} catch (error) {
console.error(error);
}
return abi || null;
}