Skip to content

Commit 0287bee

Browse files
authored
Merge pull request #4518 from ethereum/fix4513
fix address copy for external provider
2 parents d9e307e + dd298f0 commit 0287bee

File tree

6 files changed

+20
-26
lines changed

6 files changed

+20
-26
lines changed

apps/remix-ide-e2e/src/tests/ballot.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ module.exports = {
118118
.connectToExternalHttpProvider('http://localhost:8545', 'Custom')
119119
.clickLaunchIcon('solidity')
120120
.clickLaunchIcon('udapp')
121-
.pause(2000)
122121
.clearValue('input[placeholder="bytes32[] proposalNames"]')
123122
.setValue('input[placeholder="bytes32[] proposalNames"]', '["0x48656c6c6f20576f726c64210000000000000000000000000000000000000000"]')
124123
.click('*[data-id="Deploy - transact (not payable)"]')
@@ -555,4 +554,4 @@ contract Retriever is Storage {
555554
return number;
556555
}
557556
}
558-
`
557+
`

apps/remix-ide-e2e/src/tests/ballot_0_4_14.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ module.exports = {
9494
.connectToExternalHttpProvider('http://localhost:8545', 'Custom')
9595
.clickLaunchIcon('solidity')
9696
.clickLaunchIcon('udapp')
97-
.pause(2000)
9897
.clearValue('input[placeholder="uint8 _numProposals"]')
9998
.setValue('input[placeholder="uint8 _numProposals"]', '2')
10099
.click('*[data-id="Deploy - transact (not payable)"]')

libs/remix-ui/run-tab/src/lib/actions/account.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { shortenAddress } from "@remix-ui/helper"
22
import { RunTab } from "../types/run-tab"
33
import { clearInstances, setAccount, setExecEnv } from "./actions"
44
import { displayNotification, displayPopUp, fetchAccountsListFailed, fetchAccountsListRequest, fetchAccountsListSuccess, setMatchPassphrase, setPassphrase } from "./payload"
5-
import { RunTabState } from "../types"
5+
import { toChecksumAddress } from '@ethereumjs/util'
66

77
export const updateAccountBalances = async (plugin: RunTab, dispatch: React.Dispatch<any>) => {
88
const accounts = plugin.REACT_API.accounts.loadedAccounts
@@ -18,17 +18,12 @@ export const updateAccountBalances = async (plugin: RunTab, dispatch: React.Disp
1818
export const fillAccountsList = async (plugin: RunTab, dispatch: React.Dispatch<any>) => {
1919
try {
2020
dispatch(fetchAccountsListRequest())
21-
const promise = plugin.blockchain.getAccounts()
21+
try {
22+
let accounts = await plugin.blockchain.getAccounts()
23+
if (!accounts) accounts = []
2224

23-
promise.then(async (accounts: string[]) => {
2425
const loadedAccounts = {}
25-
26-
if (!accounts) accounts = []
27-
// allSettled is undefined..
28-
// so the current promise (all) will finish when:
29-
// - all the promises resolve
30-
// - at least one reject
31-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
26+
3227
for (const account of accounts) {
3328
const balance = await plugin.blockchain.getBalanceInEther(account)
3429
loadedAccounts[account] = shortenAddress(account, balance)
@@ -37,13 +32,12 @@ export const fillAccountsList = async (plugin: RunTab, dispatch: React.Dispatch<
3732

3833
if (provider === 'injected') {
3934
const selectedAddress = plugin.blockchain.getInjectedWeb3Address()
40-
41-
if (!(Object.keys(loadedAccounts).includes(selectedAddress))) setAccount(dispatch, null)
35+
if (!(Object.keys(loadedAccounts).includes(toChecksumAddress(selectedAddress)))) setAccount(dispatch, null)
4236
}
4337
dispatch(fetchAccountsListSuccess(loadedAccounts))
44-
}).catch((e) => {
38+
} catch (e) {
4539
dispatch(fetchAccountsListFailed(e.message))
46-
})
40+
}
4741
} catch (e) {
4842
dispatch(displayPopUp(`Cannot get account list: ${e}`))
4943
}

libs/remix-ui/run-tab/src/lib/actions/events.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export const setupEvents = (plugin: RunTab, dispatch: React.Dispatch<any>) => {
3333
}
3434
setFinalContext(plugin, dispatch)
3535
fillAccountsList(plugin, dispatch)
36-
updateAccountBalances(plugin, dispatch)
3736
})
3837

3938
plugin.blockchain.event.register('networkStatus', ({ error, network }) => {

libs/remix-ui/run-tab/src/lib/actions/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ declare global {
2020
}
2121

2222
const _paq = window._paq = window._paq || [] //eslint-disable-line
23-
let plugin: RunTab, dispatch: React.Dispatch<any>
23+
let plugin: RunTab, dispatch: React.Dispatch<any> = () => {}
2424

2525
export const initRunTab = (udapp: RunTab) => async (reducerDispatch: React.Dispatch<any>) => {
2626
plugin = udapp

libs/remix-ui/run-tab/src/lib/components/account.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {CustomTooltip} from '@remix-ui/helper'
88

99
export function AccountUI(props: AccountProps) {
1010
const {selectedAccount, loadedAccounts} = props.accounts
11+
const {selectExEnv, personalMode} = props
1112
const accounts = Object.keys(loadedAccounts)
1213
const [plusOpt, setPlusOpt] = useState({
1314
classList: '',
@@ -18,11 +19,14 @@ export function AccountUI(props: AccountProps) {
1819
const intl = useIntl()
1920

2021
useEffect(() => {
21-
if (!selectedAccount && accounts.length > 0) props.setAccount(accounts[0])
22+
if (accounts.length > 0 && !accounts.includes(selectedAccount)) {
23+
props.setAccount(accounts[0])
24+
}
2225
}, [accounts, selectedAccount])
2326

2427
useEffect(() => {
25-
switch (props.selectExEnv) {
28+
props.setAccount('')
29+
switch (selectExEnv) {
2630
case 'injected':
2731
setPlusOpt({
2832
classList: 'udapp_disableMouseEvents',
@@ -59,7 +63,7 @@ export function AccountUI(props: AccountProps) {
5963
break
6064

6165
case 'web3':
62-
if (!props.personalMode) {
66+
if (!personalMode) {
6367
setPlusOpt({
6468
classList: 'disableMouseEvents',
6569
title: intl.formatMessage({id: 'udapp.web3Title'})
@@ -75,11 +79,10 @@ export function AccountUI(props: AccountProps) {
7579
default:
7680
setPlusOpt({
7781
classList: 'disableMouseEvents',
78-
title: intl.formatMessage({id: 'udapp.defaultTitle'}, {selectExEnv: props.selectExEnv})
82+
title: intl.formatMessage({id: 'udapp.defaultTitle'}, {selectExEnv})
7983
})
8084
}
81-
// this._deps.config.get('settings/personal-mode')
82-
}, [props.selectExEnv, props.personalMode])
85+
}, [selectExEnv, personalMode])
8386

8487
const newAccount = () => {
8588
props.createNewBlockchainAccount(passphraseCreationPrompt())
@@ -90,7 +93,7 @@ export function AccountUI(props: AccountProps) {
9093
return props.tooltip(intl.formatMessage({id: 'udapp.tooltipText1'}))
9194
}
9295

93-
if (props.selectExEnv === 'web3') {
96+
if (selectExEnv === 'web3') {
9497
return props.modal(
9598
intl.formatMessage({id: 'udapp.modalTitle1'}),
9699
<PassphrasePrompt message={intl.formatMessage({id: 'udapp.modalMessage1'})} setPassphrase={props.setPassphrase} />,

0 commit comments

Comments
 (0)