Skip to content

Commit 86eb3df

Browse files
committed
Merge branch 'develop' of github.com:enkryptcom/enKrypt into ui/nft-detail-update
* 'develop' of github.com:enkryptcom/enKrypt: fix: moonbeam apps
2 parents d3757d7 + 49525ef commit 86eb3df

1 file changed

Lines changed: 52 additions & 2 deletions

File tree

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,63 @@
11
import { getCustomError } from "@/libs/error";
22
import { MiddlewareFunction } from "@enkryptcom/types";
3+
import EthNetworks from "../networks";
34
import EthereumProvider from "..";
5+
import { numberToHex } from "web3-utils";
6+
import { sendToBackgroundFromBackground } from "@/libs/messenger/extension";
7+
import { InternalMethods } from "@/types/messenger";
8+
import { ProviderRPCRequest } from "@/types/provider";
9+
import { MessageMethod } from "../types";
10+
import DomainState from "@/libs/domain-state";
11+
412
const method: MiddlewareFunction = function (
513
this: EthereumProvider,
6-
payload,
14+
payload: ProviderRPCRequest,
715
res,
816
next
917
): void {
1018
if (payload.method !== "wallet_addEthereumChain") return next();
11-
else return res(getCustomError("Not implemented"));
19+
else {
20+
if (
21+
!payload.params ||
22+
payload.params.length < 1 ||
23+
!payload.params[0].chainId
24+
) {
25+
return res(getCustomError("wallet_addEthereumChain: invalid params"));
26+
}
27+
const allNetworks = Object.values(EthNetworks);
28+
const validNetwork = allNetworks.find(
29+
(net) => numberToHex(net.chainID) === payload.params![0].chainId
30+
);
31+
if (validNetwork) {
32+
sendToBackgroundFromBackground({
33+
message: JSON.stringify({
34+
method: InternalMethods.changeNetwork,
35+
params: [validNetwork.name],
36+
}),
37+
provider: validNetwork.provider,
38+
tabId: payload.options?.tabId,
39+
}).then(() => {
40+
sendToBackgroundFromBackground({
41+
message: JSON.stringify({
42+
method: InternalMethods.sendToTab,
43+
params: [
44+
{
45+
method: MessageMethod.changeChainId,
46+
params: [validNetwork.chainID],
47+
},
48+
],
49+
}),
50+
provider: validNetwork.provider,
51+
tabId: payload.options?.tabId,
52+
});
53+
const domainState = new DomainState();
54+
domainState
55+
.setSelectedNetwork(validNetwork.name)
56+
.then(() => res(null, null));
57+
});
58+
} else {
59+
return res(getCustomError("Not implemented"));
60+
}
61+
}
1262
};
1363
export default method;

0 commit comments

Comments
 (0)