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']);