Skip to content

Commit

Permalink
move provider_request into multichain-api folder
Browse files Browse the repository at this point in the history
  • Loading branch information
jiexi committed Jun 27, 2024
1 parent 7ed07db commit b31dce0
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 36 deletions.
45 changes: 45 additions & 0 deletions app/scripts/lib/multichain-api/provider-request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { MESSAGE_TYPE } from '../../../../shared/constants/app';

import { Caip25EndowmentPermissionName } from './caip25permissions';

const providerRequest = {
methodNames: [MESSAGE_TYPE.PROVIDER_AUTHORIZE],
implementation: providerRequestHandler,
hookNames: {
hasPermission: true,
getSelectedNetworkClientId: true,
},
};
export default providerRequest;

async function providerRequestHandler(request, _response, next, end, hooks) {
const { scope, request: wrappedRequest } = request.params;

if (!hooks.hasPermission(request.origin, Caip25EndowmentPermissionName)) {
return end(new Error('missing CAIP-25 endowment'));
}

let networkClientId;
switch (scope) {
case 'eip155:1':
networkClientId = 'mainnet';
break;
case 'eip155:11155111':
networkClientId = 'sepolia';
break;
default:
networkClientId = hooks.getSelectedNetworkClientId();
}

console.log(
'provider_request incoming wrapped',
JSON.stringify(request, null, 2),
);
Object.assign(request, {
networkClientId,
method: wrappedRequest.method,
params: wrappedRequest.params,
});
console.log('provider_request unwrapped', JSON.stringify(request, null, 2));
return next();
}
47 changes: 11 additions & 36 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ import { updateSecurityAlertResponse } from './lib/ppom/ppom-util';
import createEvmMethodsToNonEvmAccountReqFilterMiddleware from './lib/createEvmMethodsToNonEvmAccountReqFilterMiddleware';
import { isEthAddress } from './lib/multichain/address';
import providerAuthorize from './lib/multichain-api/provider-authorize';
import { Caip25EndowmentPermissionName } from './lib/multichain-api/caip25permissions';
import providerRequest from './lib/multichain-api/provider-request';

export const METAMASK_CONTROLLER_EVENTS = {
// Fired after state changes that impact the extension badge (unapproved msg count)
Expand Down Expand Up @@ -5615,45 +5615,20 @@ export default class MetamaskController extends EventEmitter {
next,
end,
{
grantPermissions:
this.permissionController.grantPermissions.bind(this.permissionController),
grantPermissions: this.permissionController.grantPermissions.bind(
this.permissionController,
),
},
);
},
provider_request: (request, _response, next, end) => {
const { scope, request: wrappedRequest } = request.params;

if (!this.permissionController.hasPermission(request.origin, Caip25EndowmentPermissionName)) {
return end(new Error('missing CAIP-25 endowment'))
}

let networkClientId;
switch (scope) {
case 'eip155:1':
networkClientId = 'mainnet';
break;
case 'eip155:11155111':
networkClientId = 'sepolia';
break;
default:
networkClientId =
this.networkController.state.selectedNetworkClientId;
}

console.log(
'provider_request incoming wrapped',
JSON.stringify(request, null, 2),
);
Object.assign(request, {
networkClientId,
method: wrappedRequest.method,
params: wrappedRequest.params,
provider_request: (request, response, next, end) => {
return providerRequest.implementation(request, response, next, end, {
hasPermission: this.permissionController.hasPermission.bind(
this.permissionController,
),
getSelectedNetworkClientId: () =>
this.networkController.state.selectedNetworkClientId,
});
console.log(
'provider_request unwrapped',
JSON.stringify(request, null, 2),
);
next();
},
}),
);
Expand Down
1 change: 1 addition & 0 deletions shared/constants/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export const MESSAGE_TYPE = {
LOG_WEB3_SHIM_USAGE: 'metamask_logWeb3ShimUsage',
PERSONAL_SIGN: 'personal_sign',
PROVIDER_AUTHORIZE: 'provider_authorize',
PROVIDER_REQUEST: 'provider_request',
SEND_METADATA: 'metamask_sendDomainMetadata',
SWITCH_ETHEREUM_CHAIN: 'wallet_switchEthereumChain',
TRANSACTION: 'transaction',
Expand Down

0 comments on commit b31dce0

Please sign in to comment.