From afcaddfacdf4048087644d2c4cca6c18be9618f5 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 16 Aug 2018 19:19:03 +0200 Subject: [PATCH 01/15] new trezor-connect@5.030 --- package.json | 2 +- yarn.lock | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 25730063..75140ca3 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "redux-raven-middleware": "^1.2.0", "redux-thunk": "^2.2.0", "styled-components": "^3.3.3", - "trezor-connect": "^5.0.28", + "trezor-connect": "5.0.30", "web3": "^0.19.0", "webpack": "^4.16.3", "whatwg-fetch": "^2.0.4", diff --git a/yarn.lock b/yarn.lock index f638cbff..b92392c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8787,11 +8787,10 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -trezor-connect@^5.0.28: - version "5.0.28" - resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-5.0.28.tgz#eb39bb0aa2a7555623251f0fb301233886fcdd09" +trezor-connect@5.0.30: + version "5.0.30" + resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-5.0.30.tgz#3a71613a6d6e63532c7880c1dc25abca18f0b0e7" dependencies: - babel-polyfill "^6.26.0" babel-runtime "^6.26.0" events "^1.1.1" whatwg-fetch "^2.0.4" From f0dc9d315d1bf2976901cf44fa9afcf28489c346 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 16 Aug 2018 19:19:33 +0200 Subject: [PATCH 02/15] rename "clone device" to "create hidden wallet" --- src/js/components/wallet/aside/DeviceSelection.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/wallet/aside/DeviceSelection.js b/src/js/components/wallet/aside/DeviceSelection.js index 5059305d..40bd36e4 100644 --- a/src/js/components/wallet/aside/DeviceSelection.js +++ b/src/js/components/wallet/aside/DeviceSelection.js @@ -154,7 +154,7 @@ export class DeviceDropdown extends Component { deviceMenuItems.push({ type: 'settings', label: 'Device settings' }); if (selected.features.passphrase_protection && selected.connected && selected.available) { - deviceMenuItems.push({ type: 'clone', label: 'Clone device' }); + deviceMenuItems.push({ type: 'clone', label: 'Create hidden wallet' }); } //if (selected.remember) { deviceMenuItems.push({ type: 'forget', label: 'Forget device' }); From dbbe7725fdcbba9eebc5b3696e0f507a8a5d531f Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 16 Aug 2018 19:19:54 +0200 Subject: [PATCH 03/15] fix for broken send form (never initialized) --- src/js/actions/SelectedAccountActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/actions/SelectedAccountActions.js b/src/js/actions/SelectedAccountActions.js index 9d18709a..929e0874 100644 --- a/src/js/actions/SelectedAccountActions.js +++ b/src/js/actions/SelectedAccountActions.js @@ -67,7 +67,7 @@ export const updateSelectedValues = (prevState: State, action: Action): AsyncAct const web3 = stateUtils.getWeb3(state); const payload: $ElementType = { - // location: location.pathname, + location: location.pathname, account, network, discovery, From ebbba8139acb170f712437c3c48ce8aeb9952a58 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 16 Aug 2018 22:59:41 +0200 Subject: [PATCH 04/15] duplicate device without modal with default instance name --- src/js/actions/TrezorConnectActions.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/js/actions/TrezorConnectActions.js b/src/js/actions/TrezorConnectActions.js index 63318b0f..59998dbf 100644 --- a/src/js/actions/TrezorConnectActions.js +++ b/src/js/actions/TrezorConnectActions.js @@ -8,6 +8,7 @@ import * as TOKEN from './constants/token'; import * as CONNECT from './constants/TrezorConnect'; import * as NOTIFICATION from './constants/notification'; import * as WALLET from './constants/wallet'; +import { getNewInstance } from '../reducers/DevicesReducer'; import { push } from 'react-router-redux'; import * as DiscoveryActions from './DiscoveryActions'; @@ -401,10 +402,17 @@ export const forget = (device: TrezorDevice): Action => ({ }); export const duplicateDevice = (device: TrezorDevice): AsyncAction => async (dispatch: Dispatch, getState: GetState): Promise => { + // dispatch({ + // type: CONNECT.TRY_TO_DUPLICATE, + // device, + // }); + + const instance: number = getNewInstance(getState().devices, device); + const extended: Object = { instance }; dispatch({ - type: CONNECT.TRY_TO_DUPLICATE, - device, - }); + type: CONNECT.DUPLICATE, + device: { ...device, ...extended } + }) }; From d8b492e7b613c64caf8176ef9cb5c2c87fc096b6 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 16 Aug 2018 23:00:06 +0200 Subject: [PATCH 05/15] device menu sorted by instance --- src/js/components/wallet/aside/DeviceSelection.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/components/wallet/aside/DeviceSelection.js b/src/js/components/wallet/aside/DeviceSelection.js index 40bd36e4..61ca752d 100644 --- a/src/js/components/wallet/aside/DeviceSelection.js +++ b/src/js/components/wallet/aside/DeviceSelection.js @@ -171,7 +171,11 @@ export class DeviceDropdown extends Component { ); } - const deviceList = devices.map((dev, index) => { + const sortByInstance = (a: TrezorDevice, b: TrezorDevice) => { + if (!a.instance || !b.instance) return -1; + return a.instance > b.instance ? 1 : -1; + } + const deviceList = devices.sort(sortByInstance).map((dev, index) => { if (dev === selected) return null; let deviceStatus: string = 'Connected'; @@ -197,7 +201,7 @@ export class DeviceDropdown extends Component { return (
this.props.onSelectDevice(dev)}>
- { dev.instanceLabel } + 111{ dev.instanceLabel } { deviceStatus }
Date: Thu, 16 Aug 2018 23:03:06 +0200 Subject: [PATCH 06/15] device menu sorted by instance #2 --- src/js/components/wallet/aside/DeviceSelection.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/wallet/aside/DeviceSelection.js b/src/js/components/wallet/aside/DeviceSelection.js index 61ca752d..e8862389 100644 --- a/src/js/components/wallet/aside/DeviceSelection.js +++ b/src/js/components/wallet/aside/DeviceSelection.js @@ -201,7 +201,7 @@ export class DeviceDropdown extends Component { return (
this.props.onSelectDevice(dev)}>
- 111{ dev.instanceLabel } + { dev.instanceLabel } { deviceStatus }
Date: Fri, 17 Aug 2018 09:24:26 +0200 Subject: [PATCH 07/15] adding token: set default value to '0x' and load all results at focus --- src/js/actions/TokenActions.js | 2 +- src/js/components/wallet/account/summary/Summary.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/actions/TokenActions.js b/src/js/actions/TokenActions.js index 3918fdfa..29ac79b2 100644 --- a/src/js/actions/TokenActions.js +++ b/src/js/actions/TokenActions.js @@ -32,7 +32,7 @@ type SelectOptions = { // action from component export const load = (input: string, network: string): AsyncAction => async (dispatch: Dispatch, getState: GetState): Promise => { - if (input.length < 1) return; + if (input.length < 1) input = '0x'; const tokens = getState().localStorage.tokens[network]; const value = input.toLowerCase(); diff --git a/src/js/components/wallet/account/summary/Summary.js b/src/js/components/wallet/account/summary/Summary.js index aebeb640..eb35ad9d 100644 --- a/src/js/components/wallet/account/summary/Summary.js +++ b/src/js/components/wallet/account/summary/Summary.js @@ -71,7 +71,7 @@ const Summary = (props: Props) => { Date: Fri, 17 Aug 2018 11:23:08 +0200 Subject: [PATCH 08/15] Passphrase modal: show only 1 input if device is remembered OR was already authenticated --- src/js/components/modal/Passphrase.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/modal/Passphrase.js b/src/js/components/modal/Passphrase.js index 92010cbf..007f1e2f 100644 --- a/src/js/components/modal/Passphrase.js +++ b/src/js/components/modal/Passphrase.js @@ -39,7 +39,7 @@ export default class PinModal extends Component { let singleInput = false; if (selected && selected.path === device.path) { deviceLabel = selected.instanceLabel; - singleInput = selected.remember; + singleInput = selected.remember || selected.state !== null; } this.state = { From 37b83bda14d83be7bb61ad86723c77f32ebe804c Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 17 Aug 2018 11:23:43 +0200 Subject: [PATCH 09/15] better contrast in token icons color --- src/js/components/wallet/account/summary/SummaryTokens.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/js/components/wallet/account/summary/SummaryTokens.js b/src/js/components/wallet/account/summary/SummaryTokens.js index 25d9b97e..6174b64d 100644 --- a/src/js/components/wallet/account/summary/SummaryTokens.js +++ b/src/js/components/wallet/account/summary/SummaryTokens.js @@ -18,14 +18,14 @@ type Props = { const SummaryTokens = (props: Props) => { if (!props.tokens || props.tokens.length < 1) return null; - const bgColor = new ColorHash({ lightness: 0.7 }); + const bgColor = new ColorHash({ lightness: 0.16 } ); const textColor = new ColorHash(); const tokens = props.tokens.map((token, index) => { const iconColor = { - color: textColor.hex(token.name), - background: bgColor.hex(token.name), - borderColor: bgColor.hex(token.name), + color: textColor.hex(token.address), + background: bgColor.hex(token.address), + borderColor: bgColor.hex(token.address), }; const pendingAmount: BigNumber = stateUtils.getPendingAmount(props.pending, token.symbol, true); From 86f1981179e7bb9f8cdf1a6d1f4183266095ba75 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 17 Aug 2018 14:03:01 +0200 Subject: [PATCH 10/15] Disconnect device screen: use device.label instead of instanceLabel --- src/js/components/landing/ConnectDevice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/components/landing/ConnectDevice.js b/src/js/components/landing/ConnectDevice.js index 2baf3f8a..f1034ecd 100644 --- a/src/js/components/landing/ConnectDevice.js +++ b/src/js/components/landing/ConnectDevice.js @@ -21,7 +21,7 @@ const DisconnectDevice = (props: Props) => {

- Unplug { props.disconnectRequest.instanceLabel } device. + Unplug { props.disconnectRequest.label } device.

From e8109350bb1edd09d8079592ac30da6784480f3a Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 17 Aug 2018 15:19:50 +0200 Subject: [PATCH 11/15] reexport type from 'trezor-connect' to 'flowtype' module --- src/flowtype/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/flowtype/index.js b/src/flowtype/index.js index 74d33214..80280122 100644 --- a/src/flowtype/index.js +++ b/src/flowtype/index.js @@ -78,6 +78,7 @@ export type UnknownDevice = $Exact<{ ts: number; }> +export type { Device } from 'trezor-connect'; export type TrezorDevice = AcquiredDevice | UnknownDevice; export type RouterLocationState = LocationState; From 4093240af08e6df5c04057d961c09db23f4133ed Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 17 Aug 2018 15:20:42 +0200 Subject: [PATCH 12/15] rename "getNewInstance" util to "getDuplicateInstanceNumber" and move it to ./utils dir --- src/js/actions/TrezorConnectActions.js | 9 +++++---- src/js/components/modal/DuplicateDevice.js | 4 ++-- src/js/reducers/DevicesReducer.js | 23 ++++------------------ src/js/reducers/utils/index.js | 18 +++++++++++++++++ 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/js/actions/TrezorConnectActions.js b/src/js/actions/TrezorConnectActions.js index 59998dbf..7b25dc9c 100644 --- a/src/js/actions/TrezorConnectActions.js +++ b/src/js/actions/TrezorConnectActions.js @@ -8,7 +8,7 @@ import * as TOKEN from './constants/token'; import * as CONNECT from './constants/TrezorConnect'; import * as NOTIFICATION from './constants/notification'; import * as WALLET from './constants/wallet'; -import { getNewInstance } from '../reducers/DevicesReducer'; +import { getDuplicateInstanceNumber } from '../reducers/utils'; import { push } from 'react-router-redux'; import * as DiscoveryActions from './DiscoveryActions'; @@ -113,15 +113,16 @@ export const init = (): AsyncAction => async (dispatch: Dispatch, getState: GetS }); // $FlowIssue LOCAL not declared + window.__TREZOR_CONNECT_SRC = typeof LOCAL === 'string' ? LOCAL : 'https://sisyfos.trezor.io/connect/'; // window.__TREZOR_CONNECT_SRC = typeof LOCAL === 'string' ? LOCAL : 'https://connect.trezor.io/5/'; - window.__TREZOR_CONNECT_SRC = 'https://sisyfos.trezor.io/connect/'; + //window.__TREZOR_CONNECT_SRC = 'https://sisyfos.trezor.io/connect/'; // window.__TREZOR_CONNECT_SRC = 'https://localhost:8088/'; try { await TrezorConnect.init({ transportReconnect: true, debug: true, - popup: false, + popup: true, webusb: true, pendingTransportEvent: (getState().devices.length < 1), }); @@ -407,7 +408,7 @@ export const duplicateDevice = (device: TrezorDevice): AsyncAction => async (dis // device, // }); - const instance: number = getNewInstance(getState().devices, device); + const instance: number = getDuplicateInstanceNumber(getState().devices, device); const extended: Object = { instance }; dispatch({ type: CONNECT.DUPLICATE, diff --git a/src/js/components/modal/DuplicateDevice.js b/src/js/components/modal/DuplicateDevice.js index c047b9fe..dfb2d00a 100644 --- a/src/js/components/modal/DuplicateDevice.js +++ b/src/js/components/modal/DuplicateDevice.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; -import { getNewInstance } from '~/js/reducers/DevicesReducer'; +import { getDuplicateInstanceNumber } from '~/js/reducers/utils'; import type { Props } from './index'; type State = { @@ -25,7 +25,7 @@ export default class DuplicateDevice extends Component { const device = props.modal.opened ? props.modal.device : null; if (!device) return; - const instance = getNewInstance(props.devices, device); + const instance = getDuplicateInstanceNumber(props.devices, device); this.state = { defaultName: `${device.label} (${instance.toString()})`, diff --git a/src/js/reducers/DevicesReducer.js b/src/js/reducers/DevicesReducer.js index b62e9c86..171143bb 100644 --- a/src/js/reducers/DevicesReducer.js +++ b/src/js/reducers/DevicesReducer.js @@ -5,6 +5,7 @@ import { TRANSPORT, DEVICE } from 'trezor-connect'; import type { Device } from 'trezor-connect'; import * as CONNECT from '../actions/constants/TrezorConnect'; import * as WALLET from '../actions/constants/wallet'; +import { getDuplicateInstanceNumber } from './utils'; import type { Action, TrezorDevice } from '~/flowtype'; @@ -123,7 +124,7 @@ const addDevice = (state: State, device: Device): State => { // edge case: freshly connected device has different "passphrase_protection" than saved instances // need to automatically create another instance with default instance name // if (hasDifferentPassphraseSettings && !hasInstancesWithPassphraseSettings) { - // const instance = getNewInstance(affectedDevices, device); + // const instance = getDuplicateInstanceNumber(affectedDevices, device); // newDevice.instance = instance; // newDevice.instanceLabel = `${device.label} (${instance})`; @@ -152,7 +153,7 @@ const duplicate = (state: State, device: TrezorDevice): State => { const newState: State = [...state]; - const instance: number = getNewInstance(state, device); + const instance: number = getDuplicateInstanceNumber(state, device); const newDevice: TrezorDevice = { ...device, @@ -299,20 +300,4 @@ export default function devices(state: State = initialState, action: Action): St default: return state; } -} - -// UTILS - -export const getNewInstance = (devices: State, device: Device | TrezorDevice): number => { - const affectedDevices: State = devices.filter(d => d.features && device.features && d.features.device_id === device.features.device_id) - .sort((a, b) => { - if (!a.instance) { - return -1; - } - return !b.instance || a.instance > b.instance ? 1 : -1; - }); - - const instance: number = affectedDevices.reduce((inst, dev) => (dev.instance ? dev.instance + 1 : inst + 1), 0); - - return instance; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/js/reducers/utils/index.js b/src/js/reducers/utils/index.js index 17068816..142bf178 100644 --- a/src/js/reducers/utils/index.js +++ b/src/js/reducers/utils/index.js @@ -15,6 +15,7 @@ import type { Action, AsyncAction, GetState, + Device, TrezorDevice, Account, Coin, @@ -53,6 +54,23 @@ export const findDevice = (devices: Array, deviceId: string, devic return false; }); +// get next instance number +export const getDuplicateInstanceNumber = (devices: Array, device: Device | TrezorDevice): number => { + // find device(s) with the same features.device_id + // and sort them by instance number + const affectedDevices: Array = devices.filter(d => d.features && device.features && d.features.device_id === device.features.device_id) + .sort((a, b) => { + if (!a.instance) { + return -1; + } + return !b.instance || a.instance > b.instance ? 1 : -1; + }); + + // calculate new instance number + const instance: number = affectedDevices.reduce((inst, dev) => (dev.instance ? dev.instance + 1 : inst + 1), 0); + return instance; +}; + export const getSelectedAccount = (state: State): ?Account => { const device = state.wallet.selectedDevice; const locationState = state.router.location.state; From 83523cf6775a88e3731d1bb51d9aa74f442d2070 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 17 Aug 2018 15:24:47 +0200 Subject: [PATCH 13/15] import Device type from 'flowtype' module --- src/js/actions/ModalActions.js | 3 +-- src/js/actions/TrezorConnectActions.js | 2 +- src/js/actions/WalletActions.js | 2 +- src/js/reducers/DevicesReducer.js | 3 +-- src/js/reducers/TrezorConnectReducer.js | 3 +-- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/js/actions/ModalActions.js b/src/js/actions/ModalActions.js index ba73a0dd..b6254ce5 100644 --- a/src/js/actions/ModalActions.js +++ b/src/js/actions/ModalActions.js @@ -2,12 +2,11 @@ import TrezorConnect, { UI, UI_EVENT } from 'trezor-connect'; -import type { Device } from 'trezor-connect'; import * as MODAL from './constants/modal'; import * as CONNECT from './constants/TrezorConnect'; import type { - ThunkAction, AsyncAction, Action, GetState, Dispatch, TrezorDevice, + ThunkAction, AsyncAction, Action, GetState, Dispatch, Device, TrezorDevice, } from '~/flowtype'; import type { State } from '../reducers/ModalReducer'; diff --git a/src/js/actions/TrezorConnectActions.js b/src/js/actions/TrezorConnectActions.js index 7b25dc9c..71f919a5 100644 --- a/src/js/actions/TrezorConnectActions.js +++ b/src/js/actions/TrezorConnectActions.js @@ -16,7 +16,6 @@ import { resolveAfter } from '../utils/promiseUtils'; import type { - Device, DeviceMessage, UiMessage, TransportMessage, @@ -31,6 +30,7 @@ import type { Action, ThunkAction, AsyncAction, + Device, TrezorDevice, RouterLocationState, } from '~/flowtype'; diff --git a/src/js/actions/WalletActions.js b/src/js/actions/WalletActions.js index 65b4a7d3..58aa0910 100644 --- a/src/js/actions/WalletActions.js +++ b/src/js/actions/WalletActions.js @@ -6,7 +6,6 @@ import * as WALLET from './constants/wallet'; import * as CONNECT from './constants/TrezorConnect'; import * as stateUtils from '../reducers/utils'; -import type { Device } from 'trezor-connect'; import type { Account, @@ -14,6 +13,7 @@ import type Discovery, Token, Web3Instance, + Device, TrezorDevice, RouterLocationState, ThunkAction, diff --git a/src/js/reducers/DevicesReducer.js b/src/js/reducers/DevicesReducer.js index 171143bb..262662d3 100644 --- a/src/js/reducers/DevicesReducer.js +++ b/src/js/reducers/DevicesReducer.js @@ -2,12 +2,11 @@ import { TRANSPORT, DEVICE } from 'trezor-connect'; -import type { Device } from 'trezor-connect'; import * as CONNECT from '../actions/constants/TrezorConnect'; import * as WALLET from '../actions/constants/wallet'; import { getDuplicateInstanceNumber } from './utils'; -import type { Action, TrezorDevice } from '~/flowtype'; +import type { Action, Device, TrezorDevice } from '~/flowtype'; export type State = Array; diff --git a/src/js/reducers/TrezorConnectReducer.js b/src/js/reducers/TrezorConnectReducer.js index 285b7730..02a96352 100644 --- a/src/js/reducers/TrezorConnectReducer.js +++ b/src/js/reducers/TrezorConnectReducer.js @@ -2,11 +2,10 @@ import { TRANSPORT, DEVICE, UI } from 'trezor-connect'; -import type { Device } from 'trezor-connect'; import * as CONNECT from '../actions/constants/TrezorConnect'; import * as WALLET from '../actions/constants/wallet'; -import type { Action, TrezorDevice } from '~/flowtype'; +import type { Action, Device, TrezorDevice } from '~/flowtype'; export type SelectedDevice = { id: string; // could be device path if unacquired or features.device_id From e7c76ab9536bf9712b3afae6a83f9eb1ef4850e2 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Mon, 20 Aug 2018 10:00:08 +0200 Subject: [PATCH 14/15] disable "popup: true" in connect settings --- src/js/actions/TrezorConnectActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/actions/TrezorConnectActions.js b/src/js/actions/TrezorConnectActions.js index 71f919a5..d65fe273 100644 --- a/src/js/actions/TrezorConnectActions.js +++ b/src/js/actions/TrezorConnectActions.js @@ -122,7 +122,7 @@ export const init = (): AsyncAction => async (dispatch: Dispatch, getState: GetS await TrezorConnect.init({ transportReconnect: true, debug: true, - popup: true, + popup: false, webusb: true, pendingTransportEvent: (getState().devices.length < 1), }); From 50a877eac2a4be5c7559e3a9c3426c8f2f16e869 Mon Sep 17 00:00:00 2001 From: Vladimir Volek Date: Mon, 20 Aug 2018 13:31:22 +0200 Subject: [PATCH 15/15] Added margin for logos --- .../components/LeftNavigation/components/RowCoin/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/js/views/Wallet/components/LeftNavigation/components/RowCoin/index.js b/src/js/views/Wallet/components/LeftNavigation/components/RowCoin/index.js index 455c747b..71d0f7ac 100644 --- a/src/js/views/Wallet/components/LeftNavigation/components/RowCoin/index.js +++ b/src/js/views/Wallet/components/LeftNavigation/components/RowCoin/index.js @@ -43,6 +43,10 @@ const IconWrapper = styled.div` margin-right: 10px; `; +const LogoWrapper = styled.div` + margin-right: 3px; +`; + const RowCoin = ({ coin, iconLeft, iconRight, }) => ( @@ -59,7 +63,9 @@ const RowCoin = ({ )} - + + +

{coin.name}