Skip to content

Commit

Permalink
fix: Firefox Metamask connection issue (#165)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmrossy authored Jun 8, 2024
1 parent 4916ec6 commit b2e4d31
Show file tree
Hide file tree
Showing 4 changed files with 185 additions and 1 deletion.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
"@hyperlane-xyz/utils": "3.13.0",
"@hyperlane-xyz/widgets": "3.13.0",
"@metamask/jazzicon": "https://github.com/jmrossy/jazzicon#7a8df28974b4e81129bfbe3cab76308b889032a6",
"@metamask/post-message-stream": "6.1.2",
"@metamask/providers": "10.2.1",
"@rainbow-me/rainbowkit": "1.3.0",
"@sentry/nextjs": "^7.93.0",
"@solana/spl-token": "^0.3.8",
Expand Down
1 change: 1 addition & 0 deletions src/pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Analytics } from '@vercel/analytics/react';
import type { AppProps } from 'next/app';
import { ToastContainer, Zoom, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
import 'src/vendor/inpage-metamask';

import '@hyperlane-xyz/widgets/styles.css';

Expand Down
27 changes: 27 additions & 0 deletions src/vendor/inpage-metamask.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copied from https://github.com/WalletConnect/web3modal/pull/614/files
// But updated to use newer packages
import { WindowPostMessageStream } from '@metamask/post-message-stream';
import { initializeProvider } from '@metamask/providers';

// Firefox Metamask Hack
// Due to https://github.com/MetaMask/metamask-extension/issues/3133
(() => {
if (
typeof window !== 'undefined' &&
!window.ethereum &&
!window.web3 &&
navigator.userAgent.includes('Firefox')
) {
// setup background connection
const metamaskStream = new WindowPostMessageStream({
name: 'metamask-inpage',
target: 'metamask-contentscript',
});

// this will initialize the provider and set it as window.ethereum
initializeProvider({
connectionStream: metamaskStream,
shouldShimWeb3: true,
});
}
})();
156 changes: 155 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3155,6 +3155,16 @@ __metadata:
languageName: node
linkType: hard

"@ethereumjs/common@npm:^3.2.0":
version: 3.2.0
resolution: "@ethereumjs/common@npm:3.2.0"
dependencies:
"@ethereumjs/util": "npm:^8.1.0"
crc-32: "npm:^1.2.0"
checksum: b3f612406b6bcefaf9117ceb42eff58d311e2b50205e3d55b4c793d803de517efbc84075e058dc0e2ec27a2bff11dfc279dda1fa2b249ed6ab3973be045898f4
languageName: node
linkType: hard

"@ethereumjs/rlp@npm:^4.0.1":
version: 4.0.1
resolution: "@ethereumjs/rlp@npm:4.0.1"
Expand All @@ -3174,6 +3184,18 @@ __metadata:
languageName: node
linkType: hard

"@ethereumjs/tx@npm:^4.1.2":
version: 4.2.0
resolution: "@ethereumjs/tx@npm:4.2.0"
dependencies:
"@ethereumjs/common": "npm:^3.2.0"
"@ethereumjs/rlp": "npm:^4.0.1"
"@ethereumjs/util": "npm:^8.1.0"
ethereum-cryptography: "npm:^2.0.0"
checksum: cbd2ffc3ef76ca5416d58f2f694858d9fcac946e6a107fef44cf3f308a7c9fcc996a6847868609354d72d5b356faee68408e9d5601c4c4f7dad8e18cb2c24a95
languageName: node
linkType: hard

"@ethereumjs/util@npm:^8.0.6":
version: 8.0.6
resolution: "@ethereumjs/util@npm:8.0.6"
Expand Down Expand Up @@ -3823,6 +3845,8 @@ __metadata:
"@hyperlane-xyz/utils": "npm:3.13.0"
"@hyperlane-xyz/widgets": "npm:3.13.0"
"@metamask/jazzicon": "https://github.com/jmrossy/jazzicon#7a8df28974b4e81129bfbe3cab76308b889032a6"
"@metamask/post-message-stream": "npm:6.1.2"
"@metamask/providers": "npm:10.2.1"
"@next/bundle-analyzer": "npm:^14.0.4"
"@rainbow-me/rainbowkit": "npm:1.3.0"
"@sentry/nextjs": "npm:^7.93.0"
Expand Down Expand Up @@ -4586,6 +4610,36 @@ __metadata:
languageName: node
linkType: hard

"@metamask/post-message-stream@npm:6.1.2":
version: 6.1.2
resolution: "@metamask/post-message-stream@npm:6.1.2"
dependencies:
"@metamask/utils": "npm:^5.0.0"
readable-stream: "npm:2.3.3"
checksum: 324e3fb944e38060d2872eb34dd84373e0923370e3d3952cedf543269ad1d67e8e454e55a1aa65abccf27284c1e39eecb0212f0a48a02b0dfb8441441ce5e9b4
languageName: node
linkType: hard

"@metamask/providers@npm:10.2.1":
version: 10.2.1
resolution: "@metamask/providers@npm:10.2.1"
dependencies:
"@metamask/object-multiplex": "npm:^1.1.0"
"@metamask/safe-event-emitter": "npm:^2.0.0"
"@types/chrome": "npm:^0.0.136"
detect-browser: "npm:^5.2.0"
eth-rpc-errors: "npm:^4.0.2"
extension-port-stream: "npm:^2.0.1"
fast-deep-equal: "npm:^2.0.1"
is-stream: "npm:^2.0.0"
json-rpc-engine: "npm:^6.1.0"
json-rpc-middleware-stream: "npm:^4.2.1"
pump: "npm:^3.0.0"
webextension-polyfill-ts: "npm:^0.25.0"
checksum: b8784ee9ae3f740c43dc8079754886be15249aa1b4e65dd969a5ddb067745c068a45bb329b6b343f34d7629002d771a74a873599dad89f140413ff2a95cdbffb
languageName: node
linkType: hard

"@metamask/providers@npm:^11.1.1":
version: 11.1.2
resolution: "@metamask/providers@npm:11.1.2"
Expand Down Expand Up @@ -4631,6 +4685,19 @@ __metadata:
languageName: node
linkType: hard

"@metamask/utils@npm:^5.0.0":
version: 5.0.2
resolution: "@metamask/utils@npm:5.0.2"
dependencies:
"@ethereumjs/tx": "npm:^4.1.2"
"@types/debug": "npm:^4.1.7"
debug: "npm:^4.3.4"
semver: "npm:^7.3.8"
superstruct: "npm:^1.0.3"
checksum: c0d3ee4c3144b557936ab01c1a64950c0f99782bd0cf5596c0fabe8fd224dba48ed3483c0ea954791fe2ee81064a445adb489df50c776bbbeb67b5b96e930115
languageName: node
linkType: hard

"@motionone/animation@npm:^10.15.1":
version: 10.15.1
resolution: "@motionone/animation@npm:10.15.1"
Expand Down Expand Up @@ -7621,6 +7688,16 @@ __metadata:
languageName: node
linkType: hard

"@types/chrome@npm:^0.0.136":
version: 0.0.136
resolution: "@types/chrome@npm:0.0.136"
dependencies:
"@types/filesystem": "npm:*"
"@types/har-format": "npm:*"
checksum: 4de30c5bd3eec7aba4c110985779ba179a4a433a68ef4d5e96289d8aca4318cf9c206f0c9fced020e1a498e32f0fc4942d9209424c66905e7b43983b38b680c0
languageName: node
linkType: hard

"@types/coingecko-api@npm:^1.0.10":
version: 1.0.10
resolution: "@types/coingecko-api@npm:1.0.10"
Expand Down Expand Up @@ -7653,6 +7730,22 @@ __metadata:
languageName: node
linkType: hard

"@types/filesystem@npm:*":
version: 0.0.36
resolution: "@types/filesystem@npm:0.0.36"
dependencies:
"@types/filewriter": "npm:*"
checksum: ec831040fe3aff066ffb7b7541e21a5dd59aa06e7175c61e592736e38b018b1d513551438254631e2a3fbc81ff671bf618401000f4c8ea79156934cbc7dcaeaa
languageName: node
linkType: hard

"@types/filewriter@npm:*":
version: 0.0.33
resolution: "@types/filewriter@npm:0.0.33"
checksum: 495a4bb424c27eda967fe9ac3b8f7b781e6b3f9ce59403a991590cb1073022f9c5383d3c7d808ef6956b785550c36664c4fcd502dc0baf69e340bd481171e0ca
languageName: node
linkType: hard

"@types/graceful-fs@npm:^4.1.3":
version: 4.1.6
resolution: "@types/graceful-fs@npm:4.1.6"
Expand All @@ -7662,6 +7755,13 @@ __metadata:
languageName: node
linkType: hard

"@types/har-format@npm:*":
version: 1.2.15
resolution: "@types/har-format@npm:1.2.15"
checksum: fcb397741076ed1095ef8dcccd408c9ef4e20fcfeef0d3fe700f837cc015fe72ee2a3c081cc9c03d73c115005b38ba7b1c563d27e050fa612d60bc2049f309ca
languageName: node
linkType: hard

"@types/hoist-non-react-statics@npm:^3.3.1":
version: 3.3.5
resolution: "@types/hoist-non-react-statics@npm:3.3.5"
Expand Down Expand Up @@ -12220,7 +12320,7 @@ __metadata:
languageName: node
linkType: hard

"extension-port-stream@npm:^2.1.1":
"extension-port-stream@npm:^2.0.1, extension-port-stream@npm:^2.1.1":
version: 2.1.1
resolution: "extension-port-stream@npm:2.1.1"
dependencies:
Expand Down Expand Up @@ -12250,6 +12350,13 @@ __metadata:
languageName: node
linkType: hard

"fast-deep-equal@npm:^2.0.1":
version: 2.0.1
resolution: "fast-deep-equal@npm:2.0.1"
checksum: b701835a87985e0ec4925bdf1f0c1e7eb56309b5d12d534d5b4b69d95a54d65bb16861c081781ead55f73f12d6c60ba668713391ee7fbf6b0567026f579b7b0b
languageName: node
linkType: hard

"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
Expand Down Expand Up @@ -16549,6 +16656,13 @@ __metadata:
languageName: node
linkType: hard

"process-nextick-args@npm:~1.0.6":
version: 1.0.7
resolution: "process-nextick-args@npm:1.0.7"
checksum: f3b0e2f762e4fc03d02779fbf434caff82d27439ba2ecd82f7f95439e56dc23e367a8c1d3919533bd961b8e447d8ad0d941d6a3acda48ddcb80fe1b45b423579
languageName: node
linkType: hard

"process-nextick-args@npm:~2.0.0":
version: 2.0.1
resolution: "process-nextick-args@npm:2.0.1"
Expand Down Expand Up @@ -17147,6 +17261,21 @@ __metadata:
languageName: node
linkType: hard

"readable-stream@npm:2.3.3":
version: 2.3.3
resolution: "readable-stream@npm:2.3.3"
dependencies:
core-util-is: "npm:~1.0.0"
inherits: "npm:~2.0.3"
isarray: "npm:~1.0.0"
process-nextick-args: "npm:~1.0.6"
safe-buffer: "npm:~5.1.1"
string_decoder: "npm:~1.0.3"
util-deprecate: "npm:~1.0.1"
checksum: 3d0767205c263e5beb1929ca67f3269eeda21e7d6b71595515c50074e9cb9cabd7cae2f7237e2eb2ec548d264501b9b0a3e929bd0dc49df706ccb554a028c913
languageName: node
linkType: hard

"readable-stream@npm:^2.3.3":
version: 2.3.8
resolution: "readable-stream@npm:2.3.8"
Expand Down Expand Up @@ -18112,6 +18241,15 @@ __metadata:
languageName: node
linkType: hard

"string_decoder@npm:~1.0.3":
version: 1.0.3
resolution: "string_decoder@npm:1.0.3"
dependencies:
safe-buffer: "npm:~5.1.0"
checksum: 8689f666b5c6045f125fc6202eebd28f790606bc7962cfcc27eec54cfdcd19c3222ae6a4d5a3a911ef71574d8b2f9b607f99922a0db9837f1ff132465cc519f2
languageName: node
linkType: hard

"string_decoder@npm:~1.1.1":
version: 1.1.1
resolution: "string_decoder@npm:1.1.1"
Expand Down Expand Up @@ -19509,13 +19647,29 @@ __metadata:
languageName: node
linkType: hard

"webextension-polyfill-ts@npm:^0.25.0":
version: 0.25.0
resolution: "webextension-polyfill-ts@npm:0.25.0"
dependencies:
webextension-polyfill: "npm:^0.7.0"
checksum: 33260014ffda174348ec2f8271dd4312f5ba6286fdc6f014b87194361fda7d0b10a4b168a7eb2a62525785cc28ef4080ac5cba20179041ba642e039bb49aee0e
languageName: node
linkType: hard

"webextension-polyfill@npm:>=0.10.0 <1.0, webextension-polyfill@npm:^0.10.0":
version: 0.10.0
resolution: "webextension-polyfill@npm:0.10.0"
checksum: 51ff30ebed4b1aa802b7f0347f05021b2fe492078bb1a597223d43995fcee96e2da8f914a2f6e36f988c1877ed5ab36ca7077f2f3ab828955151a59e4c01bf7e
languageName: node
linkType: hard

"webextension-polyfill@npm:^0.7.0":
version: 0.7.0
resolution: "webextension-polyfill@npm:0.7.0"
checksum: 693a4d89705284e668ad501afe44a6f99dac6b5259ed6a57c559e6e8da827dfd449755ff367ee6c55cd4af7dead0fd7eb70b2b8ac938d191e6082f3fb7c211b6
languageName: node
linkType: hard

"webidl-conversions@npm:^3.0.0":
version: 3.0.1
resolution: "webidl-conversions@npm:3.0.1"
Expand Down

0 comments on commit b2e4d31

Please sign in to comment.