mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #11932 from MetaMask/Version-v10.0.3
Version v10.0.3 RC
This commit is contained in:
commit
fbafffe1ba
12
CHANGELOG.md
12
CHANGELOG.md
@ -6,6 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [10.0.3]
|
||||||
|
### Changed
|
||||||
|
- [#11931](https://github.com/MetaMask/metamask-extension/pull/11931): Temporarily Disabling Mobile Sync
|
||||||
|
- [#11936](https://github.com/MetaMask/metamask-extension/pull/11936): Use higher gas fees when attempting to speedup or cancel a transaction
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- [#11900](https://github.com/MetaMask/metamask-extension/pull/11900): Fixing chainId comparison issue (sign typed message param validation)
|
||||||
|
- [#11930](https://github.com/MetaMask/metamask-extension/pull/11930): Using 9 decimal places of precision in gas price
|
||||||
|
|
||||||
## [10.0.2]
|
## [10.0.2]
|
||||||
### Added
|
### Added
|
||||||
- [#11818](https://github.com/MetaMask/metamask-extension/pull/11818): Add gas recommendation options to cancel and speed up popovers
|
- [#11818](https://github.com/MetaMask/metamask-extension/pull/11818): Add gas recommendation options to cancel and speed up popovers
|
||||||
@ -2413,7 +2422,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Uncategorized
|
### Uncategorized
|
||||||
- Added the ability to restore accounts from seed words.
|
- Added the ability to restore accounts from seed words.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.0.2...HEAD
|
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v10.0.3...HEAD
|
||||||
|
[10.0.3]: https://github.com/MetaMask/metamask-extension/compare/v10.0.2...v10.0.3
|
||||||
[10.0.2]: https://github.com/MetaMask/metamask-extension/compare/v10.0.1...v10.0.2
|
[10.0.2]: https://github.com/MetaMask/metamask-extension/compare/v10.0.1...v10.0.2
|
||||||
[10.0.1]: https://github.com/MetaMask/metamask-extension/compare/v10.0.0...v10.0.1
|
[10.0.1]: https://github.com/MetaMask/metamask-extension/compare/v10.0.0...v10.0.1
|
||||||
[10.0.0]: https://github.com/MetaMask/metamask-extension/compare/v9.8.4...v10.0.0
|
[10.0.0]: https://github.com/MetaMask/metamask-extension/compare/v9.8.4...v10.0.0
|
||||||
|
@ -1299,7 +1299,7 @@
|
|||||||
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
|
"description": "Serves as link text for the 'mismatchedChain' key. This text will be embedded inside the translation for that key."
|
||||||
},
|
},
|
||||||
"mobileSyncWarning": {
|
"mobileSyncWarning": {
|
||||||
"message": "⚠️ Proceeding will display a secret QR code that allows access to your accounts. Do not share it with anyone. Support staff will never ask your for it."
|
"message": "The 'Sync with extension' feature is temporarily disabled. If you want to use your extension wallet on MetaMask mobile, then on your mobile app: go back to the wallet setup options and select the 'Import with Secret Recovery Phrase' option. Use your extension wallet’s secret phrase to then import your wallet into mobile."
|
||||||
},
|
},
|
||||||
"mustSelectOne": {
|
"mustSelectOne": {
|
||||||
"message": "Must select at least 1 token."
|
"message": "Must select at least 1 token."
|
||||||
|
@ -204,7 +204,7 @@ export default class TypedMessageManager extends EventEmitter {
|
|||||||
`Cannot sign messages for chainId "${chainId}", because MetaMask is switching networks.`,
|
`Cannot sign messages for chainId "${chainId}", because MetaMask is switching networks.`,
|
||||||
);
|
);
|
||||||
if (typeof chainId === 'string') {
|
if (typeof chainId === 'string') {
|
||||||
chainId = parseInt(chainId, 16);
|
chainId = parseInt(chainId, chainId.startsWith('0x') ? 16 : 10);
|
||||||
}
|
}
|
||||||
assert.equal(
|
assert.equal(
|
||||||
chainId,
|
chainId,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "metamask-crx",
|
"name": "metamask-crx",
|
||||||
"version": "10.0.2",
|
"version": "10.0.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -384,7 +384,7 @@ export const computeEstimatedGasLimit = createAsyncThunk(
|
|||||||
*/
|
*/
|
||||||
function getRoundedGasPrice(gasPriceEstimate) {
|
function getRoundedGasPrice(gasPriceEstimate) {
|
||||||
const gasPriceInDecGwei = conversionUtil(gasPriceEstimate, {
|
const gasPriceInDecGwei = conversionUtil(gasPriceEstimate, {
|
||||||
numberOfDecimals: 4,
|
numberOfDecimals: 9,
|
||||||
toDenomination: GWEI,
|
toDenomination: GWEI,
|
||||||
fromNumericBase: 'dec',
|
fromNumericBase: 'dec',
|
||||||
toNumericBase: 'dec',
|
toNumericBase: 'dec',
|
||||||
|
@ -6,6 +6,14 @@ import { getConversionRate, getSelectedAccount } from '../selectors';
|
|||||||
import { increaseLastGasPrice } from '../helpers/utils/confirm-tx.util';
|
import { increaseLastGasPrice } from '../helpers/utils/confirm-tx.util';
|
||||||
import { useCancelTransaction } from './useCancelTransaction';
|
import { useCancelTransaction } from './useCancelTransaction';
|
||||||
|
|
||||||
|
jest.mock('../store/actions', () => ({
|
||||||
|
disconnectGasFeeEstimatePoller: jest.fn(),
|
||||||
|
getGasFeeEstimatesAndStartPolling: jest
|
||||||
|
.fn()
|
||||||
|
.mockImplementation(() => Promise.resolve()),
|
||||||
|
addPollingTokenToAppState: jest.fn(),
|
||||||
|
}));
|
||||||
|
|
||||||
describe('useCancelTransaction', function () {
|
describe('useCancelTransaction', function () {
|
||||||
let useSelector;
|
let useSelector;
|
||||||
const dispatch = sinon.spy();
|
const dispatch = sinon.spy();
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
|
import BigNumber from 'bignumber.js';
|
||||||
import { addHexPrefix } from 'ethereumjs-util';
|
import { addHexPrefix } from 'ethereumjs-util';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { multiplyCurrencies } from '../../shared/modules/conversion.utils';
|
import { multiplyCurrencies } from '../../shared/modules/conversion.utils';
|
||||||
import { isEIP1559Transaction } from '../../shared/modules/transaction.utils';
|
import { isEIP1559Transaction } from '../../shared/modules/transaction.utils';
|
||||||
|
import { decGWEIToHexWEI } from '../helpers/utils/conversions.util';
|
||||||
|
import { useGasFeeEstimates } from './useGasFeeEstimates';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple helper to save on duplication to multiply the supplied wei hex string
|
* Simple helper to save on duplication to multiply the supplied wei hex string
|
||||||
@ -20,6 +23,26 @@ function addTenPercent(hexStringValue) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper that returns the higher of two options for a new gas fee:
|
||||||
|
* The original fee + 10% or
|
||||||
|
* the current medium suggested fee from our gas estimation api
|
||||||
|
*
|
||||||
|
* @param {string} originalFee - hexWei vale of the original fee (maxFee or maxPriority)
|
||||||
|
* @param {string} currentEstimate - decGwei value of the current medium gasFee estimate (maxFee or maxPriorityfee)
|
||||||
|
* @returns {string} - hexWei value of the higher of the two inputs.
|
||||||
|
*/
|
||||||
|
function getHighestIncrementedFee(originalFee, currentEstimate) {
|
||||||
|
const buffedOriginalHexWei = addTenPercent(originalFee);
|
||||||
|
const currentEstimateHexWei = decGWEIToHexWEI(currentEstimate);
|
||||||
|
|
||||||
|
return new BigNumber(buffedOriginalHexWei, 16).greaterThan(
|
||||||
|
new BigNumber(currentEstimateHexWei, 16),
|
||||||
|
)
|
||||||
|
? buffedOriginalHexWei
|
||||||
|
: currentEstimateHexWei;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When initializing cancellations or speed ups we need to set the baseline
|
* When initializing cancellations or speed ups we need to set the baseline
|
||||||
* gas fees to be 10% higher, which is the bare minimum that the network will
|
* gas fees to be 10% higher, which is the bare minimum that the network will
|
||||||
@ -35,6 +58,8 @@ function addTenPercent(hexStringValue) {
|
|||||||
export function useIncrementedGasFees(transactionGroup) {
|
export function useIncrementedGasFees(transactionGroup) {
|
||||||
const { primaryTransaction } = transactionGroup;
|
const { primaryTransaction } = transactionGroup;
|
||||||
|
|
||||||
|
const { gasFeeEstimates = {} } = useGasFeeEstimates();
|
||||||
|
|
||||||
// We memoize this value so that it can be relied upon in other hooks.
|
// We memoize this value so that it can be relied upon in other hooks.
|
||||||
const customGasSettings = useMemo(() => {
|
const customGasSettings = useMemo(() => {
|
||||||
// This hook is called indiscriminantly on all transactions appearing in
|
// This hook is called indiscriminantly on all transactions appearing in
|
||||||
@ -46,29 +71,45 @@ export function useIncrementedGasFees(transactionGroup) {
|
|||||||
gasLimit: primaryTransaction.txParams?.gas,
|
gasLimit: primaryTransaction.txParams?.gas,
|
||||||
gas: primaryTransaction.txParams?.gas,
|
gas: primaryTransaction.txParams?.gas,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const suggestedMaxFeePerGas =
|
||||||
|
gasFeeEstimates?.medium?.suggestedMaxFeePerGas ?? '0';
|
||||||
|
const suggestedMaxPriorityFeePerGas =
|
||||||
|
gasFeeEstimates?.medium?.suggestedMaxPriorityFeePerGas ?? '0';
|
||||||
|
|
||||||
if (isEIP1559Transaction(primaryTransaction)) {
|
if (isEIP1559Transaction(primaryTransaction)) {
|
||||||
const transactionMaxFeePerGas = primaryTransaction.txParams?.maxFeePerGas;
|
const transactionMaxFeePerGas = primaryTransaction.txParams?.maxFeePerGas;
|
||||||
const transactionMaxPriorityFeePerGas =
|
const transactionMaxPriorityFeePerGas =
|
||||||
primaryTransaction.txParams?.maxPriorityFeePerGas;
|
primaryTransaction.txParams?.maxPriorityFeePerGas;
|
||||||
|
|
||||||
temporaryGasSettings.maxFeePerGas =
|
temporaryGasSettings.maxFeePerGas =
|
||||||
transactionMaxFeePerGas === undefined ||
|
transactionMaxFeePerGas === undefined ||
|
||||||
transactionMaxFeePerGas.startsWith('-')
|
transactionMaxFeePerGas.startsWith('-')
|
||||||
? '0x0'
|
? '0x0'
|
||||||
: addTenPercent(transactionMaxFeePerGas);
|
: getHighestIncrementedFee(
|
||||||
|
transactionMaxFeePerGas,
|
||||||
|
suggestedMaxFeePerGas,
|
||||||
|
);
|
||||||
temporaryGasSettings.maxPriorityFeePerGas =
|
temporaryGasSettings.maxPriorityFeePerGas =
|
||||||
transactionMaxPriorityFeePerGas === undefined ||
|
transactionMaxPriorityFeePerGas === undefined ||
|
||||||
transactionMaxPriorityFeePerGas.startsWith('-')
|
transactionMaxPriorityFeePerGas.startsWith('-')
|
||||||
? '0x0'
|
? '0x0'
|
||||||
: addTenPercent(transactionMaxPriorityFeePerGas);
|
: getHighestIncrementedFee(
|
||||||
|
transactionMaxPriorityFeePerGas,
|
||||||
|
suggestedMaxPriorityFeePerGas,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
const transactionGasPrice = primaryTransaction.txParams?.gasPrice;
|
const transactionGasPrice = primaryTransaction.txParams?.gasPrice;
|
||||||
temporaryGasSettings.gasPrice =
|
temporaryGasSettings.gasPrice =
|
||||||
transactionGasPrice === undefined || transactionGasPrice.startsWith('-')
|
transactionGasPrice === undefined || transactionGasPrice.startsWith('-')
|
||||||
? '0x0'
|
? '0x0'
|
||||||
: addTenPercent(transactionGasPrice);
|
: getHighestIncrementedFee(
|
||||||
|
transactionGasPrice,
|
||||||
|
suggestedMaxFeePerGas,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return temporaryGasSettings;
|
return temporaryGasSettings;
|
||||||
}, [primaryTransaction]);
|
}, [primaryTransaction, gasFeeEstimates]);
|
||||||
|
|
||||||
return customGasSettings;
|
return customGasSettings;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import * as metricEventHook from './useMetricEvent';
|
|||||||
import { useRetryTransaction } from './useRetryTransaction';
|
import { useRetryTransaction } from './useRetryTransaction';
|
||||||
|
|
||||||
jest.mock('./useGasFeeEstimates', () => ({
|
jest.mock('./useGasFeeEstimates', () => ({
|
||||||
useGasFeeEstimates: jest.fn(),
|
useGasFeeEstimates: jest.fn().mockImplementation(() => Promise.resolve({})),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('useRetryTransaction', () => {
|
describe('useRetryTransaction', () => {
|
||||||
|
@ -316,12 +316,7 @@ export default class MobileSyncPage extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return screen === PASSWORD_PROMPT_SCREEN ? (
|
return screen === PASSWORD_PROMPT_SCREEN ? (
|
||||||
<div>
|
<div>{this.renderWarning(this.context.t('mobileSyncWarning'))}</div>
|
||||||
{this.renderWarning(this.context.t('mobileSyncWarning'))}
|
|
||||||
<div className="reveal-seed__content">
|
|
||||||
{this.renderPasswordPromptContent()}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
) : (
|
) : (
|
||||||
<div>
|
<div>
|
||||||
{this.renderWarning(this.context.t('syncWithMobileBeCareful'))}
|
{this.renderWarning(this.context.t('syncWithMobileBeCareful'))}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user