ghost-portal/packages/page-settings/src/useChainInfo.ts
Jaco 73e3a32aba
Support for v14 metadata (#5927)
* Support for v14 metadata

* sessionIds as map or array

* Cleanups

* Some storage page adjustments

* Arg mapping, no filterOrigin

* Use base64Encode in metadata

* Cleanups

* Storage cleanups

* Additional

* Use API types

* typo

* Storage historic compat

* Const input type

* Bumps

* Bumps

* Bumps

* Force salt to string
2021-09-18 08:18:51 +02:00

41 lines
1.7 KiB
TypeScript

// Copyright 2017-2021 @polkadot/app-settings authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ChainInfo } from './types';
import { useMemo } from 'react';
import { getSystemColor, getSystemIcon } from '@polkadot/apps-config';
import { DEFAULT_DECIMALS, DEFAULT_SS58 } from '@polkadot/react-api';
import { useApi } from '@polkadot/react-hooks';
import { getSpecTypes } from '@polkadot/types-known';
import { formatBalance, isNumber } from '@polkadot/util';
import { base64Encode } from '@polkadot/util-crypto';
export default function useChainInfo (): ChainInfo | null {
const { api, isApiReady, isEthereum, specName, systemChain, systemName } = useApi();
return useMemo(
() => isApiReady
? {
chain: systemChain,
chainType: isEthereum
? 'ethereum'
: 'substrate',
color: getSystemColor(systemChain, systemName, specName),
genesisHash: api.genesisHash.toHex(),
icon: getSystemIcon(systemName, specName),
metaCalls: base64Encode(api.runtimeMetadata.asCallsOnly.toU8a()),
specVersion: api.runtimeVersion.specVersion.toNumber(),
ss58Format: isNumber(api.registry.chainSS58)
? api.registry.chainSS58
: DEFAULT_SS58.toNumber(),
tokenDecimals: (api.registry.chainDecimals || [DEFAULT_DECIMALS.toNumber()])[0],
tokenSymbol: (api.registry.chainTokens || formatBalance.getDefaults().unit)[0],
types: getSpecTypes(api.registry, systemChain, api.runtimeVersion.specName, api.runtimeVersion.specVersion) as unknown as Record<string, string>
}
: null,
[api, isApiReady, specName, systemChain, systemName, isEthereum]
);
}