Merge pull request #4518 from ethereum/fix4513

fix address copy for external provider
pull/4530/head
yann300 1 year ago committed by GitHub
commit 0287beef0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      apps/remix-ide-e2e/src/tests/ballot.test.ts
  2. 1
      apps/remix-ide-e2e/src/tests/ballot_0_4_14.test.ts
  3. 20
      libs/remix-ui/run-tab/src/lib/actions/account.ts
  4. 1
      libs/remix-ui/run-tab/src/lib/actions/events.ts
  5. 2
      libs/remix-ui/run-tab/src/lib/actions/index.ts
  6. 17
      libs/remix-ui/run-tab/src/lib/components/account.tsx

@ -118,7 +118,6 @@ module.exports = {
.connectToExternalHttpProvider('http://localhost:8545', 'Custom')
.clickLaunchIcon('solidity')
.clickLaunchIcon('udapp')
.pause(2000)
.clearValue('input[placeholder="bytes32[] proposalNames"]')
.setValue('input[placeholder="bytes32[] proposalNames"]', '["0x48656c6c6f20576f726c64210000000000000000000000000000000000000000"]')
.click('*[data-id="Deploy - transact (not payable)"]')

@ -94,7 +94,6 @@ module.exports = {
.connectToExternalHttpProvider('http://localhost:8545', 'Custom')
.clickLaunchIcon('solidity')
.clickLaunchIcon('udapp')
.pause(2000)
.clearValue('input[placeholder="uint8 _numProposals"]')
.setValue('input[placeholder="uint8 _numProposals"]', '2')
.click('*[data-id="Deploy - transact (not payable)"]')

@ -2,7 +2,7 @@ import { shortenAddress } from "@remix-ui/helper"
import { RunTab } from "../types/run-tab"
import { clearInstances, setAccount, setExecEnv } from "./actions"
import { displayNotification, displayPopUp, fetchAccountsListFailed, fetchAccountsListRequest, fetchAccountsListSuccess, setMatchPassphrase, setPassphrase } from "./payload"
import { RunTabState } from "../types"
import { toChecksumAddress } from '@ethereumjs/util'
export const updateAccountBalances = async (plugin: RunTab, dispatch: React.Dispatch<any>) => {
const accounts = plugin.REACT_API.accounts.loadedAccounts
@ -18,17 +18,12 @@ export const updateAccountBalances = async (plugin: RunTab, dispatch: React.Disp
export const fillAccountsList = async (plugin: RunTab, dispatch: React.Dispatch<any>) => {
try {
dispatch(fetchAccountsListRequest())
const promise = plugin.blockchain.getAccounts()
try {
let accounts = await plugin.blockchain.getAccounts()
if (!accounts) accounts = []
promise.then(async (accounts: string[]) => {
const loadedAccounts = {}
if (!accounts) accounts = []
// allSettled is undefined..
// so the current promise (all) will finish when:
// - all the promises resolve
// - at least one reject
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
for (const account of accounts) {
const balance = await plugin.blockchain.getBalanceInEther(account)
loadedAccounts[account] = shortenAddress(account, balance)
@ -37,13 +32,12 @@ export const fillAccountsList = async (plugin: RunTab, dispatch: React.Dispatch<
if (provider === 'injected') {
const selectedAddress = plugin.blockchain.getInjectedWeb3Address()
if (!(Object.keys(loadedAccounts).includes(selectedAddress))) setAccount(dispatch, null)
if (!(Object.keys(loadedAccounts).includes(toChecksumAddress(selectedAddress)))) setAccount(dispatch, null)
}
dispatch(fetchAccountsListSuccess(loadedAccounts))
}).catch((e) => {
} catch (e) {
dispatch(fetchAccountsListFailed(e.message))
})
}
} catch (e) {
dispatch(displayPopUp(`Cannot get account list: ${e}`))
}

@ -33,7 +33,6 @@ export const setupEvents = (plugin: RunTab, dispatch: React.Dispatch<any>) => {
}
setFinalContext(plugin, dispatch)
fillAccountsList(plugin, dispatch)
updateAccountBalances(plugin, dispatch)
})
plugin.blockchain.event.register('networkStatus', ({ error, network }) => {

@ -20,7 +20,7 @@ declare global {
}
const _paq = window._paq = window._paq || [] //eslint-disable-line
let plugin: RunTab, dispatch: React.Dispatch<any>
let plugin: RunTab, dispatch: React.Dispatch<any> = () => {}
export const initRunTab = (udapp: RunTab) => async (reducerDispatch: React.Dispatch<any>) => {
plugin = udapp

@ -8,6 +8,7 @@ import {CustomTooltip} from '@remix-ui/helper'
export function AccountUI(props: AccountProps) {
const {selectedAccount, loadedAccounts} = props.accounts
const {selectExEnv, personalMode} = props
const accounts = Object.keys(loadedAccounts)
const [plusOpt, setPlusOpt] = useState({
classList: '',
@ -18,11 +19,14 @@ export function AccountUI(props: AccountProps) {
const intl = useIntl()
useEffect(() => {
if (!selectedAccount && accounts.length > 0) props.setAccount(accounts[0])
if (accounts.length > 0 && !accounts.includes(selectedAccount)) {
props.setAccount(accounts[0])
}
}, [accounts, selectedAccount])
useEffect(() => {
switch (props.selectExEnv) {
props.setAccount('')
switch (selectExEnv) {
case 'injected':
setPlusOpt({
classList: 'udapp_disableMouseEvents',
@ -59,7 +63,7 @@ export function AccountUI(props: AccountProps) {
break
case 'web3':
if (!props.personalMode) {
if (!personalMode) {
setPlusOpt({
classList: 'disableMouseEvents',
title: intl.formatMessage({id: 'udapp.web3Title'})
@ -75,11 +79,10 @@ export function AccountUI(props: AccountProps) {
default:
setPlusOpt({
classList: 'disableMouseEvents',
title: intl.formatMessage({id: 'udapp.defaultTitle'}, {selectExEnv: props.selectExEnv})
title: intl.formatMessage({id: 'udapp.defaultTitle'}, {selectExEnv})
})
}
// this._deps.config.get('settings/personal-mode')
}, [props.selectExEnv, props.personalMode])
}, [selectExEnv, personalMode])
const newAccount = () => {
props.createNewBlockchainAccount(passphraseCreationPrompt())
@ -90,7 +93,7 @@ export function AccountUI(props: AccountProps) {
return props.tooltip(intl.formatMessage({id: 'udapp.tooltipText1'}))
}
if (props.selectExEnv === 'web3') {
if (selectExEnv === 'web3') {
return props.modal(
intl.formatMessage({id: 'udapp.modalTitle1'}),
<PassphrasePrompt message={intl.formatMessage({id: 'udapp.modalMessage1'})} setPassphrase={props.setPassphrase} />,

Loading…
Cancel
Save