From a10bd59cb60095c01fa50f286948c0edc160f88e Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Mon, 29 Mar 2021 15:40:10 +0300 Subject: [PATCH 1/7] Add flag for web3modal/rLogin to identify self. --- src/pages/dapp/browser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/dapp/browser.js b/src/pages/dapp/browser.js index 7c14044ca..60d44484a 100644 --- a/src/pages/dapp/browser.js +++ b/src/pages/dapp/browser.js @@ -222,6 +222,7 @@ class DAppBrowser extends Component { window.ethereum.selectedAddress = '${address}'; window.address = '${address}'; window.ethereum.networkVersion = '${this.networkVersion}'; + window.ethereum.isRWallet = true; window.web3 = web3; // Adapt web3 old version (new web3 version move toDecimal and toBigNumber to utils class). From 8de4de5304118ed5165a0b2f123ad61ee00eb17c Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Mon, 29 Mar 2021 16:00:19 +0300 Subject: [PATCH 2/7] Show wallet name when selecting dapp wallet to use. --- src/components/common/modal/wallet.selection.modal.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/common/modal/wallet.selection.modal.js b/src/components/common/modal/wallet.selection.modal.js index 11f16eb84..2aa12dc08 100644 --- a/src/components/common/modal/wallet.selection.modal.js +++ b/src/components/common/modal/wallet.selection.modal.js @@ -145,6 +145,7 @@ const styles = StyleSheet.create({ fontSize: 16, fontFamily: fontFamily.AvenirBook, marginLeft: 11, + width: '100%', }, tokenText: { fontFamily: fontFamily.AvenirRoman, @@ -243,7 +244,7 @@ class WalletSelection extends PureComponent { getWalletItem = ({ item }) => { const { selectedWallet } = this.state; const { address: selectedAddress } = selectedWallet; - const { address, network } = item; + const { address, network, name } = item; return ( { this.setState({ selectedWallet: item }); }}> @@ -251,7 +252,10 @@ class WalletSelection extends PureComponent { {network && {strings(`networkType.${_.toLower(network)}`)}} - {common.ellipsisAddress(address, 6)} + + {name} + {common.ellipsisAddress(address, 6)} + From cf1531ab8e343deca2ea6e0b25957353f33284ce Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Mon, 29 Mar 2021 18:24:40 +0300 Subject: [PATCH 3/7] Remove internal checksum check if address is contract. --- src/common/common.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/common.js b/src/common/common.js index 689280754..549a0d817 100644 --- a/src/common/common.js +++ b/src/common/common.js @@ -621,7 +621,7 @@ const common = { }, /** - * Chcke address is contract addrsss + * Check address is contract addrsss * @param {*} address need check address * @param {*} chainId chain id */ @@ -629,8 +629,7 @@ const common = { return new Promise((resolve, reject) => { const rskEndpoint = chainId === TESTNET.NETWORK_VERSION ? TESTNET.RSK_END_POINT : MAINNET.RSK_END_POINT; const rsk3 = new Rsk3(rskEndpoint); - const checksumAddress = Rsk3.utils.toChecksumAddress(address, chainId); - rsk3.getCode(checksumAddress).then((code) => { + rsk3.getCode(address).then((code) => { if (code !== '0x00') { resolve(true); } else { From 1d1d39a17aeb6ee6afcc2611b22e8a175ce2b979 Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Tue, 30 Mar 2021 13:45:44 +0300 Subject: [PATCH 4/7] Allow singing messages that are text, and remove checksum check. --- src/pages/dapp/browser.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/dapp/browser.js b/src/pages/dapp/browser.js index 60d44484a..5cf1eceea 100644 --- a/src/pages/dapp/browser.js +++ b/src/pages/dapp/browser.js @@ -479,7 +479,8 @@ class DAppBrowser extends Component { popupMessageModal = async (payload) => { const dappUrl = this.getDappUrl(); const { id, params } = payload; - const message = this.rsk3.utils.hexToAscii(params[0]); + const message = params[0].startsWith('0x') ? this.rsk3.utils.hexToAscii(params[0]) : params[0]; + this.setState({ modalView: ( Date: Mon, 5 Apr 2021 13:49:25 +0300 Subject: [PATCH 5/7] allow signing long messages. --- src/pages/wallet/wallet.connect/modal/message.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/wallet/wallet.connect/modal/message.js b/src/pages/wallet/wallet.connect/modal/message.js index 36251112e..75cf7cc4a 100644 --- a/src/pages/wallet/wallet.connect/modal/message.js +++ b/src/pages/wallet/wallet.connect/modal/message.js @@ -1,5 +1,7 @@ import React from 'react'; -import { View, Text, StyleSheet } from 'react-native'; +import { + View, Text, ScrollView, StyleSheet, +} from 'react-native'; import PropTypes from 'prop-types'; import { strings } from '../../../../common/i18n'; @@ -25,9 +27,13 @@ const styles = StyleSheet.create({ color: color.dustyGray, fontSize: 15, fontFamily: fontFamily.AvenirBook, - width: '60%', textAlign: 'right', }, + scroll: { + width: '60%', + padding: 5, + maxHeight: 200, + }, }); export default function MessageModal({ @@ -41,7 +47,9 @@ export default function MessageModal({ <> {strings('page.wallet.walletconnect.message')} - {message} + + {message} + )} From bc0553c68b882fea6461560f0e5d6149a675653d Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Tue, 6 Apr 2021 16:44:23 +0300 Subject: [PATCH 6/7] Fix response type of `request` request !== sendAsync. SendAsync returns an JSON-RPC object where as request returns the value. See the specification under EIP-1193 here: https://eips.ethereum.org/EIPS/eip-1193 --- src/pages/dapp/browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/dapp/browser.js b/src/pages/dapp/browser.js index 5cf1eceea..eca3abbde 100644 --- a/src/pages/dapp/browser.js +++ b/src/pages/dapp/browser.js @@ -336,7 +336,7 @@ class DAppBrowser extends Component { window.ethereum.sendAsync = sendAsync; } if (!window.ethereum.request) { - window.ethereum.request = sendAsync; + window.ethereum.request = (payload) => sendAsync(payload).then(response => response.result) } }, 1000) } From 3788c2d7cd88cb208c395280b071898ab6f9b8cc Mon Sep 17 00:00:00 2001 From: Jesse Clark Date: Wed, 7 Apr 2021 13:18:43 +0300 Subject: [PATCH 7/7] Refactor .request response to handle success and fails. --- src/pages/dapp/browser.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pages/dapp/browser.js b/src/pages/dapp/browser.js index eca3abbde..131a90a0e 100644 --- a/src/pages/dapp/browser.js +++ b/src/pages/dapp/browser.js @@ -328,7 +328,7 @@ class DAppBrowser extends Component { } // ensure window.ethereum.send and window.ethereum.sendAsync are not undefined - setInterval(() => { + setTimeout(() => { if (!window.ethereum.send) { window.ethereum.send = sendAsync; } @@ -336,7 +336,12 @@ class DAppBrowser extends Component { window.ethereum.sendAsync = sendAsync; } if (!window.ethereum.request) { - window.ethereum.request = (payload) => sendAsync(payload).then(response => response.result) + window.ethereum.request = (payload) => + new Promise((resolve, reject) => + sendAsync(payload).then(response => + response.result + ? resolve(response.result) + : reject(new Error(response.message || 'provider error')))); } }, 1000) }