Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
Gudahtt committed Feb 29, 2024
1 parent 001227a commit 0edb792
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 56 deletions.
7 changes: 6 additions & 1 deletion app/scripts/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,11 @@ export function setupController(
updateBadge,
);

controller.controllerMessenger.subscribe(
METAMASK_CONTROLLER_EVENTS.QUEUED_REQUEST_STATE_CHANGE,
updateBadge,
);

controller.txController.initApprovals();

/**
Expand All @@ -822,7 +827,7 @@ export function setupController(
function getUnapprovedTransactionCount() {
let count = controller.appStateController.waitingForUnlock.length;
if (controller.preferencesController.getUseRequestQueue()) {
count += controller.queuedRequestController.length();
count += controller.queuedRequestController.state.queuedRequestCount;
} else {
count += controller.approvalController.getTotalApprovalCount();
}
Expand Down
10 changes: 9 additions & 1 deletion app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ export const METAMASK_CONTROLLER_EVENTS = {
UPDATE_BADGE: 'updateBadge',
// TODO: Add this and similar enums to the `controllers` repo and export them
APPROVAL_STATE_CHANGE: 'ApprovalController:stateChange',
QUEUED_REQUEST_STATE_CHANGE: 'QueuedRequestController:stateChange',
};

// stream channels
Expand Down Expand Up @@ -398,6 +399,11 @@ export default class MetamaskController extends EventEmitter {
this.queuedRequestController = new QueuedRequestController({
messenger: this.controllerMessenger.getRestricted({
name: 'QueuedRequestController',
allowedActions: [
'NetworkController:getState',
'NetworkController:setActiveNetwork',
'SelectedNetworkController:getNetworkClientIdForDomain',
],
}),
});

Expand Down Expand Up @@ -4751,7 +4757,9 @@ export default class MetamaskController extends EventEmitter {
}

const requestQueueMiddleware = createQueuedRequestMiddleware({
messenger: this.controllerMessenger,
enqueueRequest: this.queuedRequestController.enqueueRequest.bind(
this.queuedRequestController,
),
useRequestQueue: this.preferencesController.getUseRequestQueue.bind(
this.preferencesController,
),
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,8 @@
"nonce-tracker@npm:^3.0.0": "patch:nonce-tracker@npm%3A3.0.0#~/.yarn/patches/nonce-tracker-npm-3.0.0-c5e9a93f9d.patch",
"@trezor/connect-web": "9.0.11",
"lavamoat-core@npm:^15.1.1": "patch:lavamoat-core@npm%3A15.1.1#~/.yarn/patches/lavamoat-core-npm-15.1.1-51fbe39988.patch",
"@metamask/snaps-sdk": "^3.0.1"
"@metamask/snaps-sdk": "^3.0.1",
"@metamask/queued-request-controller@^0.3.0": "npm:@metamask-previews/queued-request-controller@0.5.0-preview.48a1e39"
},
"dependencies": {
"@babel/runtime": "^7.23.2",
Expand Down
17 changes: 2 additions & 15 deletions test/e2e/tests/request-queuing/multiple-networks-dapps-txs.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,8 @@ describe('Request Queuing for Multiple Dapps and Txs on different networks.', fu
await driver.switchToWindow(dappTwo);
await driver.clickElement('#sendButton');

// First switch network confirmation
// First switch network
await driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog);
await driver.clickElement({ text: 'Switch network', tag: 'button' });

// Wait for confirm tx after switch network confirmation.
await driver.delay(regularDelayMs);
Expand Down Expand Up @@ -128,22 +127,10 @@ describe('Request Queuing for Multiple Dapps and Txs on different networks.', fu
// TODO: Reload fix to have the confirmations show
await driver.executeScript(`window.location.reload()`);

// Second Switch Network Confirmation
// Second Switch Network
await driver.switchToWindowWithTitle(
WINDOW_TITLES.ExtensionInFullScreenView,
);
await driver.findElement({
css: '[data-testid="network-switch-from-network"]',
text: 'Localhost 8545',
});

await driver.findElement({
css: '[data-testid="network-switch-to-network"]',
text: 'Localhost 8546',
});

// Switch Network
await driver.clickElement({ text: 'Switch network', tag: 'button' });

// Check for unconfirmed transaction in tx list
await driver.wait(async () => {
Expand Down
25 changes: 0 additions & 25 deletions test/e2e/tests/request-queuing/switch-network.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,31 +109,6 @@ describe('Request Queuing Switch Network on Dapp Send Tx while on different netw

await driver.delay(regularDelayMs);

await driver.waitUntilXWindowHandles(3);

await switchToNotificationWindow(driver);

// Switch Chain Confirmation
await driver.findElement({
css: '[data-testid="network-switch-from-network"]',
text: 'Localhost 8546',
});

await driver.findElement({
css: '[data-testid="network-switch-to-network"]',
text: 'Localhost 8545',
});

// Confirm Switch Chain
await driver.findClickableElement({
text: 'Switch network',
tag: 'button',
});
await driver.clickElement({ text: 'Switch network', tag: 'button' });

// Wait for confirm tx after switch network confirmation.
await driver.delay(regularDelayMs);

await driver.waitUntilXWindowHandles(3);
await driver.switchToWindowWithTitle(WINDOW_TITLES.Dialog);

Expand Down
25 changes: 12 additions & 13 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4965,21 +4965,20 @@ __metadata:
languageName: node
linkType: hard

"@metamask/queued-request-controller@npm:^0.3.0":
version: 0.3.0
resolution: "@metamask/queued-request-controller@npm:0.3.0"
"@metamask/queued-request-controller@npm:@metamask-previews/queued-request-controller@0.5.0-preview.48a1e39":
version: 0.5.0-preview.48a1e39
resolution: "@metamask-previews/queued-request-controller@npm:0.5.0-preview.48a1e39"
dependencies:
"@metamask/base-controller": "npm:^4.0.1"
"@metamask/controller-utils": "npm:^8.0.1"
"@metamask/json-rpc-engine": "npm:^7.3.1"
"@metamask/rpc-errors": "npm:^6.1.0"
"@metamask/swappable-obj-proxy": "npm:^2.1.0"
"@metamask/utils": "npm:^8.2.0"
"@metamask/base-controller": "npm:^4.1.1"
"@metamask/controller-utils": "npm:^8.0.3"
"@metamask/json-rpc-engine": "npm:^7.3.2"
"@metamask/rpc-errors": "npm:^6.2.1"
"@metamask/swappable-obj-proxy": "npm:^2.2.0"
"@metamask/utils": "npm:^8.3.0"
peerDependencies:
"@metamask/approval-controller": ^5.1.1
"@metamask/network-controller": ^17.1.0
"@metamask/selected-network-controller": ^6.0.0
checksum: 47988f3999f8ab45dfbbc8fde796ce4c8ebc405abb79bc165dc1faf777db6190942e220df76e0a7d0355d8de5a635cc41089fc75825eb4b6047ebf1c85b44e6a
"@metamask/network-controller": ^17.2.0
"@metamask/selected-network-controller": ^8.0.0
checksum: a05e28ba88711b4dba202583149a09388bc03cbcbc7423ded6d5676cac022cad46427de441e4f8cbc94ee231509ef9f2b05243488dde446a4ac4e4c279d40471
languageName: node
linkType: hard

Expand Down

0 comments on commit 0edb792

Please sign in to comment.