From 6b3952f07ea9b4eade41f350dcdb0285cacd453a Mon Sep 17 00:00:00 2001 From: Keith Date: Fri, 27 Sep 2019 15:39:52 +0800 Subject: [PATCH] feat: enable copy the mainnet addresses when it's not connected to the mainnet --- .../src/components/Addresses/index.tsx | 4 +++- .../neuron-wallet/src/controllers/app/index.ts | 1 + .../src/controllers/app/options.ts | 17 ++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/neuron-ui/src/components/Addresses/index.tsx b/packages/neuron-ui/src/components/Addresses/index.tsx index 37be5124b0..ca19dc38d6 100644 --- a/packages/neuron-ui/src/components/Addresses/index.tsx +++ b/packages/neuron-ui/src/components/Addresses/index.tsx @@ -204,7 +204,9 @@ const Addresses = ({ : addr.address, }))} onItemContextMenu={item => { - if (!showMainnetAddress) { + if (showMainnetAddress) { + contextMenu({ type: 'copyMainnetAddress', id: item.identifier }) + } else { contextMenu({ type: 'addressList', id: item.identifier }) } }} diff --git a/packages/neuron-wallet/src/controllers/app/index.ts b/packages/neuron-wallet/src/controllers/app/index.ts index e56f17078d..7d823ec7af 100644 --- a/packages/neuron-wallet/src/controllers/app/index.ts +++ b/packages/neuron-wallet/src/controllers/app/index.ts @@ -158,6 +158,7 @@ export default class AppController { } const { id, type } = params switch (type) { + case 'copyMainnetAddress': case 'networkList': case 'walletList': case 'addressList': diff --git a/packages/neuron-wallet/src/controllers/app/options.ts b/packages/neuron-wallet/src/controllers/app/options.ts index 1d337d6b57..06f17c6009 100644 --- a/packages/neuron-wallet/src/controllers/app/options.ts +++ b/packages/neuron-wallet/src/controllers/app/options.ts @@ -1,5 +1,5 @@ import { MenuItemConstructorOptions, clipboard, dialog, MessageBoxReturnValue } from 'electron' -import { bech32Address } from '@nervosnetwork/ckb-sdk-utils' +import { bech32Address, AddressPrefix, AddressType } from '@nervosnetwork/ckb-sdk-utils' import WalletsService from 'services/wallets' import NetworksService from 'services/networks' @@ -19,6 +19,21 @@ const networksService = NetworksService.getInstance() export const contextMenuTemplate: { [key: string]: (id: string) => Promise } = { + copyMainnetAddress: async (identifier: string) => { + const address = bech32Address(identifier, { + prefix: AddressPrefix.Mainnet, + type: AddressType.HashIdx, + codeHashIndex: '0x00', + }) + return [ + { + label: i18n.t('contextMenu.copy-address'), + click: () => { + clipboard.writeText(address) + }, + }, + ] + }, networkList: async (id: string) => { const [network, currentNetworkID] = await Promise.all([ networksService.get(id).catch(() => null),