// Copyright 2017-2021 @polkadot/example-react authors & contributors // SPDX-License-Identifier: Apache-2.0 import React, { useCallback, useEffect, useState } from 'react'; import ReactDOM from 'react-dom'; import { Identicon } from '@polkadot/react-identicon'; import { keyring } from '@polkadot/ui-keyring'; import { settings } from '@polkadot/ui-settings'; import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto'; interface Props { className?: string; } const rootElement = document.getElementById('example'); if (!rootElement) { throw new Error('Unable to find element with id \'example\''); } function App ({ className }: Props): React.ReactElement | null { const [address, setAddress] = useState(null); const [phrase, setPhrase] = useState(null); const [ss58Format, setSS58Format] = useState(42); const _onClickNew = useCallback( (): void => { const phrase = mnemonicGenerate(12); const { address } = keyring.createFromUri(phrase); setAddress(keyring.encodeAddress(address, ss58Format)); setPhrase(phrase); }, [ss58Format] ); const _onChangeSS58Format = useCallback( ({ currentTarget: { value } }: React.SyntheticEvent): void => { setSS58Format(parseInt(value, 10)); }, [] ); useEffect((): void => { _onClickNew(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect((): void => { address && setAddress(keyring.encodeAddress(address, ss58Format)); }, [address, ss58Format]); if (!address || !phrase) { return null; } return (