1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00

Merge branch 'develop' into Version-v10.22.0

This commit is contained in:
seaona 2022-11-03 09:04:41 +01:00
commit 47736bd571
4 changed files with 124 additions and 14 deletions

View File

@ -105,6 +105,7 @@ describe('Address Book', function () {
const recipientRowTitle = await driver.findElement(
'.send__select-recipient-wrapper__group-item__title',
);
const recipientRowTitleString = await recipientRowTitle.getText();
assert.equal(recipientRowTitleString, 'Test Name 1');
await driver.clickElement(
@ -135,4 +136,107 @@ describe('Address Book', function () {
},
);
});
it('Edit entry in address book', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder()
.withAddressBookController({
addressBook: {
'0x539': {
'0x2f318C334780961FB129D2a6c30D0763d9a5C970': {
address: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
chainId: '0x539',
isEns: false,
memo: '',
name: 'Test Name 1',
},
},
},
})
.build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.identicon__address-wrapper');
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Contacts', tag: 'div' });
await driver.clickElement('[data-testid="recipient"]');
await driver.clickElement({ text: 'Edit', tag: 'button' });
const inputUsername = await driver.findElement('#nickname');
await inputUsername.fill('Test Name Edit');
const inputAddress = await driver.findElement('#address');
await inputAddress.fill('0x74cE91B75935D6Bedc27eE002DeFa566c5946f74');
await driver.clickElement('[data-testid="page-container-footer-next"]');
const recipientUsername = await driver.findElement({
text: 'Test Name Edit',
tag: 'div',
});
assert.equal(
await recipientUsername.getText(),
'Test Name Edit',
'Username is not edited correctly',
);
const recipientAddress = await driver.findElement(
'.send__select-recipient-wrapper__group-item__subtitle',
);
assert.equal(
await recipientAddress.getText(),
'0x74cE...6f74',
'Recipient address is not edited correctly',
);
},
);
});
it('Deletes existing entry from address book', async function () {
await withFixtures(
{
fixtures: new FixtureBuilder()
.withAddressBookController({
addressBook: {
'0x539': {
'0x2f318C334780961FB129D2a6c30D0763d9a5C970': {
address: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
chainId: '0x539',
isEns: false,
memo: '',
name: 'Test Name 1',
},
},
},
})
.build(),
ganacheOptions,
title: this.test.title,
},
async ({ driver }) => {
await driver.navigate();
await driver.fill('#password', 'correct horse battery staple');
await driver.press('#password', driver.Key.ENTER);
await driver.clickElement('.identicon__address-wrapper');
await driver.clickElement({ text: 'Settings', tag: 'div' });
await driver.clickElement({ text: 'Contacts', tag: 'div' });
await driver.clickElement({ text: 'Test Name 1', tag: 'div' });
await driver.clickElement({ text: 'Edit', tag: 'button' });
await driver.clickElement({ text: 'Delete account', tag: 'a' });
// it checks if account is deleted
const contact = await driver.findElement(
'.send__select-recipient-wrapper__group-item',
);
const exists = await driver.isElementPresent(contact);
assert.equal(exists, false, 'Contact is not deleted');
},
);
});
});

View File

@ -43,7 +43,7 @@ export const ensInitialState = initialState;
const name = 'ENS';
let provider = null;
let web3Provider = null;
const slice = createSlice({
name,
@ -115,7 +115,7 @@ const slice = createSlice({
builder.addCase(CHAIN_CHANGED, (state, action) => {
if (action.payload !== state.currentChainId) {
state.stage = 'UNINITIALIZED';
provider = null;
web3Provider = null;
}
});
},
@ -142,14 +142,17 @@ export function initializeEnsSlice() {
const ensAddress = networkMap[network];
const networkIsSupported = Boolean(ensAddress);
if (networkIsSupported) {
provider = new ethers.providers.Web3Provider(global.ethereumProvider, {
chainId: parseInt(network, 10),
name: networkName,
ensAddress,
});
web3Provider = new ethers.providers.Web3Provider(
global.ethereumProvider,
{
chainId: parseInt(network, 10),
name: networkName,
ensAddress,
},
);
dispatch(enableEnsLookup(network));
} else {
provider = null;
web3Provider = null;
dispatch(disableEnsLookup());
}
};
@ -177,7 +180,13 @@ export function lookupEnsName(ensName) {
let address;
let error;
try {
address = await provider.resolveName(trimmedEnsName);
// the writable property on the 'provider' object on the 'web3Provider' flips to false when stale
// This helps handle the case where the provider is becomes unresponsive if/when, in MV3, the service worker dies after the ENS slice is instantiated
const isProviderActive = web3Provider.provider?.writable;
if (!isProviderActive) {
await dispatch(initializeEnsSlice());
}
address = await web3Provider.resolveName(trimmedEnsName);
} catch (err) {
error = err;
}

View File

@ -27,10 +27,7 @@
video {
border-radius: 8px;
@include screen-md-max {
width: 95%;
}
width: calc(100% - 16px);
}
&__copy {

View File

@ -307,5 +307,5 @@ export function getFirstPermissionRequest(state) {
}
export function getPermissions(state, origin) {
return getPermissionSubjects(state)[origin].permissions;
return getPermissionSubjects(state)[origin]?.permissions;
}