From 12d5187744057fc66c8c7dc5a8a55784b27f209d Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 20 Mar 2020 14:47:14 +0100 Subject: [PATCH] Move extensions to apps-config (#2426) * Move extensions to apps-config * apps-config --- packages/apps-config/src/extensions/index.ts | 31 +++++++++++++++++ packages/page-accounts/src/Banner.tsx | 33 +++---------------- packages/page-accounts/src/Vanity/Match.tsx | 13 ++++++-- packages/page-accounts/src/Vanity/index.tsx | 3 +- .../page-accounts/src/Vanity/translate.ts | 7 ---- 5 files changed, 46 insertions(+), 41 deletions(-) create mode 100644 packages/apps-config/src/extensions/index.ts delete mode 100644 packages/page-accounts/src/Vanity/translate.ts diff --git a/packages/apps-config/src/extensions/index.ts b/packages/apps-config/src/extensions/index.ts new file mode 100644 index 0000000000..908a938c04 --- /dev/null +++ b/packages/apps-config/src/extensions/index.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +// it would have been really good to import this from detect, however... not exported +type Browser = 'chrome' | 'firefox'; + +interface Extension { + desc: string; + link: string; + name: string; +} + +const availableExtensions: Record = [ + { + browsers: { + chrome: 'https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd', + firefox: 'https://addons.mozilla.org/en-US/firefox/addon/polkadot-js-extension/' + }, + desc: 'Basic account injection and signer', + name: 'polkadot-js extension' + } +].reduce((available: Record, { browsers, desc, name }): Record => { + Object.entries(browsers).forEach(([browser, link]): void => { + available[browser as 'chrome'].push({ link, desc, name }); + }); + + return available; +}, { chrome: [], firefox: [] }); + +export { availableExtensions }; diff --git a/packages/page-accounts/src/Banner.tsx b/packages/page-accounts/src/Banner.tsx index 50b480be19..1fdc97b6c6 100644 --- a/packages/page-accounts/src/Banner.tsx +++ b/packages/page-accounts/src/Banner.tsx @@ -5,6 +5,7 @@ import { detect } from 'detect-browser'; import React from 'react'; import styled from 'styled-components'; +import { availableExtensions } from '@polkadot/apps-config/extensions'; import { isWeb3Injected } from '@polkadot/extension-dapp'; import { stringUpperFirst } from '@polkadot/util'; @@ -13,39 +14,13 @@ import { useTranslation } from './translate'; // it would have been really good to import this from detect, however... not exported type Browser = 'chrome' | 'firefox'; -interface Extension { - desc: string; - link: string; - name: string; -} - interface Props { className?: string; } -const available: Record = { - chrome: [], - firefox: [] -}; - -[ - { - browsers: { - chrome: 'https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd', - firefox: 'https://addons.mozilla.org/en-US/firefox/addon/polkadot-js-extension/' - }, - desc: 'Basic account injection and signer', - name: 'polkadot-js extension' - } -].forEach(({ browsers, desc, name }): void => { - Object.entries(browsers).forEach(([browser, link]): void => { - available[browser as Browser].push({ link, desc, name }); - }); -}); - const browserInfo = detect(); const browserName: Browser | null = (browserInfo && (browserInfo.name as Browser)) || null; -const isSupported = browserName && Object.keys(available).includes(browserName); +const isSupported = browserName && Object.keys(availableExtensions).includes(browserName); function Banner ({ className }: Props): React.ReactElement | null { const { t } = useTranslation(); @@ -63,7 +38,7 @@ function Banner ({ className }: Props): React.ReactElement | null { yourBrowser: stringUpperFirst(browserName) } })}

-
    {available[browserName].map(({ desc, name, link }): React.ReactNode => ( + diff --git a/packages/page-accounts/src/Vanity/Match.tsx b/packages/page-accounts/src/Vanity/Match.tsx index 572147dad5..c52bcf1889 100644 --- a/packages/page-accounts/src/Vanity/Match.tsx +++ b/packages/page-accounts/src/Vanity/Match.tsx @@ -4,7 +4,7 @@ import { BareProps } from '@polkadot/react-components/types'; -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import styled from 'styled-components'; import { Button, IdentityIcon } from '@polkadot/react-components'; import { u8aToHex } from '@polkadot/util'; @@ -20,8 +20,15 @@ interface Props extends BareProps { function Match ({ address, className, count, offset, onCreateToggle, onRemove, seed }: Props): React.ReactElement { const [hexSeed, setHexSeed] = useState(''); - const _onCreate = (): void => onCreateToggle(hexSeed); - const _onRemove = (): void => onRemove(address); + + const _onCreate = useCallback( + (): void => onCreateToggle(hexSeed), + [hexSeed] + ); + const _onRemove = useCallback( + (): void => onRemove(address), + [address] + ); useEffect((): void => { setHexSeed(u8aToHex(seed)); diff --git a/packages/page-accounts/src/Vanity/index.tsx b/packages/page-accounts/src/Vanity/index.tsx index bdd501ab3b..492f0ed6d4 100644 --- a/packages/page-accounts/src/Vanity/index.tsx +++ b/packages/page-accounts/src/Vanity/index.tsx @@ -13,11 +13,11 @@ import { Button, Dropdown, Input, TxComponent } from '@polkadot/react-components import uiSettings from '@polkadot/ui-settings'; import CreateModal from '../modals/Create'; +import translate from '../translate'; import generator from '../vanitygen'; import matchRegex from '../vanitygen/regex'; import generatorSort from '../vanitygen/sort'; import Match from './Match'; -import translate from './translate'; interface Props extends ComponentProps, I18nProps {} @@ -101,7 +101,6 @@ class VanityApp extends TxComponent { : 'sign-in' } isDisabled={!isMatchValid} - isPrimary={!isRunning} onClick={this.toggleStart} label={ isRunning diff --git a/packages/page-accounts/src/Vanity/translate.ts b/packages/page-accounts/src/Vanity/translate.ts deleted file mode 100644 index 63062a4bac..0000000000 --- a/packages/page-accounts/src/Vanity/translate.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017-2020 @polkadot/app-accounts authors & contributors -// This software may be modified and distributed under the terms -// of the Apache-2.0 license. See the LICENSE file for details. - -import { withTranslation } from 'react-i18next'; - -export default withTranslation(['app-accounts']);