From 252244ea27c6dc0f66498891f1173d62f9f77129 Mon Sep 17 00:00:00 2001 From: Thibaut Sardan <33178835+Tbaut@users.noreply.github.com> Date: Tue, 26 Jan 2021 15:21:50 +0100 Subject: [PATCH] add chains in metadata (#632) --- .../src/hooks/useGenesisHashOptions.ts | 19 +++++++++++++++---- packages/extension-ui/src/messaging.ts | 5 +++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/extension-ui/src/hooks/useGenesisHashOptions.ts b/packages/extension-ui/src/hooks/useGenesisHashOptions.ts index 9479d2fa..6d252c61 100644 --- a/packages/extension-ui/src/hooks/useGenesisHashOptions.ts +++ b/packages/extension-ui/src/hooks/useGenesisHashOptions.ts @@ -1,8 +1,9 @@ // Copyright 2019-2021 @polkadot/extension-ui authors & contributors // SPDX-License-Identifier: Apache-2.0 -import { useRef } from 'react'; +import { useEffect, useMemo, useState } from 'react'; +import { getAllMetatdata } from '../messaging'; import chains from '../util/chains'; import useTranslation from './useTranslation'; @@ -13,8 +14,17 @@ interface Option { export default function (): Option[] { const { t } = useTranslation(); + const [metadataChains, setMetadatachains] = useState([]); - const { current: hashes } = useRef([ + useEffect(() => { + getAllMetatdata().then((metadataDefs) => { + const res = metadataDefs.map((metadata) => ({ text: metadata.chain, value: metadata.genesisHash })); + + setMetadatachains(res); + }).catch(console.error); + }, []); + + const hashes = useMemo(() => [ { text: t('Allow use on any chain'), value: '' @@ -22,8 +32,9 @@ export default function (): Option[] { ...chains.map(({ chain, genesisHash }) => ({ text: chain, value: genesisHash - })) - ]); + })), + ...metadataChains.filter(({ value }) => !chains.find(({ genesisHash }) => genesisHash === value)) + ], [metadataChains, t]); return hashes; } diff --git a/packages/extension-ui/src/messaging.ts b/packages/extension-ui/src/messaging.ts index c8bf90ca..c4676139 100644 --- a/packages/extension-ui/src/messaging.ts +++ b/packages/extension-ui/src/messaging.ts @@ -10,6 +10,7 @@ import type { KeypairType } from '@polkadot/util-crypto/types'; import { PORT_EXTENSION } from '@polkadot/extension-base/defaults'; import { metadataExpand } from '@polkadot/extension-chains'; import chrome from '@polkadot/extension-inject/chrome'; +import { MetadataDef } from '@polkadot/extension-inject/types'; import allChains from './util/chains'; import { getSavedMeta, setSavedMeta } from './MetadataCache'; @@ -129,6 +130,10 @@ export async function createSeed (length?: SeedLengths, type?: KeypairType): Pro return sendMessage('pri(seed.create)', { length, type }); } +export async function getAllMetatdata () : Promise { + return sendMessage('pri(metadata.list)'); +} + export async function getMetadata (genesisHash?: string | null, isPartial = false): Promise { if (!genesisHash) { return null;