Skip to content

Commit 3f14e08

Browse files
Catch errors
1 parent bbb9463 commit 3f14e08

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

packages/snaps-simulation/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"@metamask/messenger": "^0.3.0",
6262
"@metamask/permission-controller": "^12.1.1",
6363
"@metamask/phishing-controller": "^16.1.0",
64+
"@metamask/rpc-errors": "^7.0.3",
6465
"@metamask/snaps-controllers": "workspace:^",
6566
"@metamask/snaps-execution-environments": "workspace:^",
6667
"@metamask/snaps-rpc-methods": "workspace:^",
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';
22
import { createAsyncMiddleware } from '@metamask/json-rpc-engine';
3+
import { rpcErrors } from '@metamask/rpc-errors';
34
import type { Json, JsonRpcParams } from '@metamask/utils';
4-
import { hexToBigInt } from '@metamask/utils';
5+
import { hasProperty, hexToBigInt } from '@metamask/utils';
56
import { InfuraProvider } from 'ethers';
67

7-
import type { Store, getChainId } from '../store';
8+
import type { Store } from '../store';
9+
import { getChainId } from '../store';
810

911
/**
1012
* Create a middleware that uses a JSON-RPC provider to respond to RPC requests.
@@ -16,10 +18,22 @@ export function createProviderMiddleware(
1618
store: Store,
1719
): JsonRpcMiddleware<JsonRpcParams, Json> {
1820
return createAsyncMiddleware(async (request, response) => {
19-
const chainId = getChainId(store.getState());
20-
const provider = new InfuraProvider(hexToBigInt(chainId));
21+
try {
22+
const chainId = getChainId(store.getState());
23+
const provider = new InfuraProvider(hexToBigInt(chainId));
2124

22-
const result = await provider.send(request.method, request.params ?? []);
23-
response.result = result;
25+
const result = await provider.send(request.method, request.params ?? []);
26+
response.result = result;
27+
} catch (error) {
28+
if (hasProperty(error, 'info') && hasProperty(error.info, 'error')) {
29+
response.error = error.info.error;
30+
return;
31+
}
32+
if (hasProperty(error, 'error')) {
33+
response.error = error.error;
34+
return;
35+
}
36+
response.error = rpcErrors.internal();
37+
}
2438
});
2539
}

yarn.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4476,6 +4476,7 @@ __metadata:
44764476
"@metamask/messenger": "npm:^0.3.0"
44774477
"@metamask/permission-controller": "npm:^12.1.1"
44784478
"@metamask/phishing-controller": "npm:^16.1.0"
4479+
"@metamask/rpc-errors": "npm:^7.0.3"
44794480
"@metamask/snaps-controllers": "workspace:^"
44804481
"@metamask/snaps-execution-environments": "workspace:^"
44814482
"@metamask/snaps-rpc-methods": "workspace:^"

0 commit comments

Comments
 (0)