@multiplatform.one/web3 7.19.0 → 7.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/README.md +49 -4
  2. package/dist/cjs/bundler/metaMaskConnectTimeouts.cjs +92 -0
  3. package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js +123 -0
  4. package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  5. package/dist/cjs/connectkit/components/Common/ConnectorList/index.cjs +10 -29
  6. package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js +11 -32
  7. package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  8. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.cjs +4 -38
  9. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
  10. package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  11. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.cjs +0 -14
  12. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +7 -62
  13. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  14. package/dist/cjs/connectkit/components/ConnectModal/demo.cjs +0 -15
  15. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js +0 -15
  16. package/dist/cjs/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  17. package/dist/cjs/connectkit/components/contexts/web3/index.cjs +0 -15
  18. package/dist/cjs/connectkit/components/contexts/web3/index.native.js +0 -17
  19. package/dist/cjs/connectkit/components/contexts/web3/index.native.js.map +1 -1
  20. package/dist/cjs/connectkit/connectors/aaveAccountConnector.cjs +57 -0
  21. package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js +67 -0
  22. package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  23. package/dist/cjs/connectkit/connectors/embeddedDesktop.cjs +1 -1
  24. package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js +1 -1
  25. package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  26. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.cjs +255 -0
  27. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
  28. package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  29. package/dist/cjs/connectkit/defaultConfig.cjs +8 -2
  30. package/dist/cjs/connectkit/defaultConfig.native.js +8 -2
  31. package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
  32. package/dist/cjs/connectkit/defaultConnectors.cjs +19 -37
  33. package/dist/cjs/connectkit/defaultConnectors.native.js +19 -37
  34. package/dist/cjs/connectkit/defaultConnectors.native.js.map +1 -1
  35. package/dist/cjs/connectkit/hooks/useConnectors.cjs +1 -5
  36. package/dist/cjs/connectkit/hooks/useConnectors.native.js +1 -5
  37. package/dist/cjs/connectkit/hooks/useConnectors.native.js.map +1 -1
  38. package/dist/cjs/connectkit/index.cjs +2 -0
  39. package/dist/cjs/connectkit/index.native.js +2 -0
  40. package/dist/cjs/connectkit/index.native.js.map +1 -1
  41. package/dist/cjs/connectkit/screens.cjs +1 -14
  42. package/dist/cjs/connectkit/screens.native.js +16 -33
  43. package/dist/cjs/connectkit/screens.native.js.map +1 -1
  44. package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +3 -2
  45. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +6 -4
  46. package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  47. package/dist/cjs/connectkit/wallets/index.cjs +4 -3
  48. package/dist/cjs/connectkit/wallets/index.native.js +4 -3
  49. package/dist/cjs/connectkit/wallets/index.native.js.map +1 -1
  50. package/dist/cjs/connectkit/wallets/useWallets.cjs +7 -22
  51. package/dist/cjs/connectkit/wallets/useWallets.native.js +6 -22
  52. package/dist/cjs/connectkit/wallets/useWallets.native.js.map +1 -1
  53. package/dist/cjs/connectkit/wallets/walletConfigs.cjs +3 -62
  54. package/dist/cjs/connectkit/wallets/walletConfigs.native.js +2 -65
  55. package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
  56. package/dist/cjs/connectkit/web3Bridge.cjs +2 -6
  57. package/dist/cjs/connectkit/web3Bridge.native.js +2 -7
  58. package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
  59. package/dist/cjs/esbuild.cjs +54 -0
  60. package/dist/cjs/esbuild.native.js +57 -0
  61. package/dist/cjs/esbuild.native.js.map +1 -0
  62. package/dist/cjs/hooks/useWallet.cjs +1 -2
  63. package/dist/cjs/hooks/useWallet.native.js +1 -4
  64. package/dist/cjs/hooks/useWallet.native.js.map +1 -1
  65. package/dist/cjs/providers/WalletProvider.cjs +1 -2
  66. package/dist/cjs/providers/native/deepLink.cjs +1 -1
  67. package/dist/cjs/providers/native/deepLink.native.js +1 -1
  68. package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
  69. package/dist/cjs/providers/walletConfig.native.js.map +1 -1
  70. package/dist/cjs/vite.cjs +76 -0
  71. package/dist/cjs/vite.native.js +79 -0
  72. package/dist/cjs/vite.native.js.map +1 -0
  73. package/dist/esm/bundler/metaMaskConnectTimeouts.mjs +64 -0
  74. package/dist/esm/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
  75. package/dist/esm/bundler/metaMaskConnectTimeouts.native.js +92 -0
  76. package/dist/esm/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  77. package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs +11 -30
  78. package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
  79. package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js +12 -33
  80. package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  81. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
  82. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
  83. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
  84. package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  85. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
  86. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
  87. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +8 -63
  88. package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  89. package/dist/esm/connectkit/components/ConnectModal/demo.mjs +0 -15
  90. package/dist/esm/connectkit/components/ConnectModal/demo.mjs.map +1 -1
  91. package/dist/esm/connectkit/components/ConnectModal/demo.native.js +0 -15
  92. package/dist/esm/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  93. package/dist/esm/connectkit/components/contexts/web3/index.mjs +0 -15
  94. package/dist/esm/connectkit/components/contexts/web3/index.mjs.map +1 -1
  95. package/dist/esm/connectkit/components/contexts/web3/index.native.js +0 -17
  96. package/dist/esm/connectkit/components/contexts/web3/index.native.js.map +1 -1
  97. package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs +31 -0
  98. package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
  99. package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js +38 -0
  100. package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  101. package/dist/esm/connectkit/connectors/embeddedDesktop.mjs +1 -1
  102. package/dist/esm/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
  103. package/dist/esm/connectkit/connectors/embeddedDesktop.native.js +1 -1
  104. package/dist/esm/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
  105. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
  106. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
  107. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js +273 -0
  108. package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  109. package/dist/esm/connectkit/defaultConfig.mjs +8 -2
  110. package/dist/esm/connectkit/defaultConfig.mjs.map +1 -1
  111. package/dist/esm/connectkit/defaultConfig.native.js +8 -2
  112. package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
  113. package/dist/esm/connectkit/defaultConnectors.mjs +16 -34
  114. package/dist/esm/connectkit/defaultConnectors.mjs.map +1 -1
  115. package/dist/esm/connectkit/defaultConnectors.native.js +16 -34
  116. package/dist/esm/connectkit/defaultConnectors.native.js.map +1 -1
  117. package/dist/esm/connectkit/hooks/useConnectors.mjs +1 -4
  118. package/dist/esm/connectkit/hooks/useConnectors.mjs.map +1 -1
  119. package/dist/esm/connectkit/hooks/useConnectors.native.js +1 -4
  120. package/dist/esm/connectkit/hooks/useConnectors.native.js.map +1 -1
  121. package/dist/esm/connectkit/index.mjs +2 -1
  122. package/dist/esm/connectkit/index.mjs.map +1 -1
  123. package/dist/esm/connectkit/index.native.js +2 -1
  124. package/dist/esm/connectkit/index.native.js.map +1 -1
  125. package/dist/esm/connectkit/screens.mjs +1 -14
  126. package/dist/esm/connectkit/screens.mjs.map +1 -1
  127. package/dist/esm/connectkit/screens.native.js +16 -33
  128. package/dist/esm/connectkit/screens.native.js.map +1 -1
  129. package/dist/esm/connectkit/siwe/SIWEProvider.mjs +3 -2
  130. package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  131. package/dist/esm/connectkit/siwe/SIWEProvider.native.js +6 -4
  132. package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  133. package/dist/esm/connectkit/wallets/index.mjs +3 -2
  134. package/dist/esm/connectkit/wallets/index.mjs.map +1 -1
  135. package/dist/esm/connectkit/wallets/index.native.js +3 -2
  136. package/dist/esm/connectkit/wallets/index.native.js.map +1 -1
  137. package/dist/esm/connectkit/wallets/useWallets.mjs +2 -17
  138. package/dist/esm/connectkit/wallets/useWallets.mjs.map +1 -1
  139. package/dist/esm/connectkit/wallets/useWallets.native.js +1 -17
  140. package/dist/esm/connectkit/wallets/useWallets.native.js.map +1 -1
  141. package/dist/esm/connectkit/wallets/walletConfigs.mjs +4 -63
  142. package/dist/esm/connectkit/wallets/walletConfigs.mjs.map +1 -1
  143. package/dist/esm/connectkit/wallets/walletConfigs.native.js +3 -66
  144. package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
  145. package/dist/esm/connectkit/web3Bridge.mjs +3 -7
  146. package/dist/esm/connectkit/web3Bridge.mjs.map +1 -1
  147. package/dist/esm/connectkit/web3Bridge.native.js +3 -8
  148. package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
  149. package/dist/esm/esbuild.mjs +29 -0
  150. package/dist/esm/esbuild.mjs.map +1 -0
  151. package/dist/esm/esbuild.native.js +29 -0
  152. package/dist/esm/esbuild.native.js.map +1 -0
  153. package/dist/esm/hooks/useWallet.mjs +1 -2
  154. package/dist/esm/hooks/useWallet.mjs.map +1 -1
  155. package/dist/esm/hooks/useWallet.native.js +1 -4
  156. package/dist/esm/hooks/useWallet.native.js.map +1 -1
  157. package/dist/esm/providers/WalletProvider.mjs +1 -2
  158. package/dist/esm/providers/WalletProvider.mjs.map +1 -1
  159. package/dist/esm/providers/native/deepLink.mjs +1 -1
  160. package/dist/esm/providers/native/deepLink.mjs.map +1 -1
  161. package/dist/esm/providers/native/deepLink.native.js +1 -1
  162. package/dist/esm/providers/native/deepLink.native.js.map +1 -1
  163. package/dist/esm/providers/walletConfig.mjs.map +1 -1
  164. package/dist/esm/providers/walletConfig.native.js.map +1 -1
  165. package/dist/esm/vite.mjs +51 -0
  166. package/dist/esm/vite.mjs.map +1 -0
  167. package/dist/esm/vite.native.js +51 -0
  168. package/dist/esm/vite.native.js.map +1 -0
  169. package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs +64 -0
  170. package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
  171. package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js +123 -0
  172. package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
  173. package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs +11 -30
  174. package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
  175. package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js +11 -32
  176. package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
  177. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
  178. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
  179. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
  180. package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
  181. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
  182. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
  183. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +7 -62
  184. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
  185. package/dist/jsx/connectkit/components/ConnectModal/demo.mjs +0 -15
  186. package/dist/jsx/connectkit/components/ConnectModal/demo.mjs.map +1 -1
  187. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js +0 -15
  188. package/dist/jsx/connectkit/components/ConnectModal/demo.native.js.map +1 -1
  189. package/dist/jsx/connectkit/components/contexts/web3/index.mjs +0 -15
  190. package/dist/jsx/connectkit/components/contexts/web3/index.mjs.map +1 -1
  191. package/dist/jsx/connectkit/components/contexts/web3/index.native.js +0 -17
  192. package/dist/jsx/connectkit/components/contexts/web3/index.native.js.map +1 -1
  193. package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs +31 -0
  194. package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
  195. package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js +67 -0
  196. package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
  197. package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs +1 -1
  198. package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
  199. package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js +1 -1
  200. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
  201. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
  202. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
  203. package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
  204. package/dist/jsx/connectkit/defaultConfig.mjs +8 -2
  205. package/dist/jsx/connectkit/defaultConfig.mjs.map +1 -1
  206. package/dist/jsx/connectkit/defaultConfig.native.js +8 -2
  207. package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
  208. package/dist/jsx/connectkit/defaultConnectors.mjs +16 -34
  209. package/dist/jsx/connectkit/defaultConnectors.mjs.map +1 -1
  210. package/dist/jsx/connectkit/defaultConnectors.native.js +19 -37
  211. package/dist/jsx/connectkit/defaultConnectors.native.js.map +1 -1
  212. package/dist/jsx/connectkit/hooks/useConnectors.mjs +1 -4
  213. package/dist/jsx/connectkit/hooks/useConnectors.mjs.map +1 -1
  214. package/dist/jsx/connectkit/hooks/useConnectors.native.js +1 -5
  215. package/dist/jsx/connectkit/hooks/useConnectors.native.js.map +1 -1
  216. package/dist/jsx/connectkit/index.mjs +2 -1
  217. package/dist/jsx/connectkit/index.mjs.map +1 -1
  218. package/dist/jsx/connectkit/index.native.js +2 -0
  219. package/dist/jsx/connectkit/index.native.js.map +1 -1
  220. package/dist/jsx/connectkit/screens.mjs +1 -14
  221. package/dist/jsx/connectkit/screens.mjs.map +1 -1
  222. package/dist/jsx/connectkit/screens.native.js +16 -33
  223. package/dist/jsx/connectkit/screens.native.js.map +1 -1
  224. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +3 -2
  225. package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
  226. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +6 -4
  227. package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
  228. package/dist/jsx/connectkit/wallets/index.mjs +3 -2
  229. package/dist/jsx/connectkit/wallets/index.mjs.map +1 -1
  230. package/dist/jsx/connectkit/wallets/index.native.js +4 -3
  231. package/dist/jsx/connectkit/wallets/index.native.js.map +1 -1
  232. package/dist/jsx/connectkit/wallets/useWallets.mjs +2 -17
  233. package/dist/jsx/connectkit/wallets/useWallets.mjs.map +1 -1
  234. package/dist/jsx/connectkit/wallets/useWallets.native.js +6 -22
  235. package/dist/jsx/connectkit/wallets/useWallets.native.js.map +1 -1
  236. package/dist/jsx/connectkit/wallets/walletConfigs.mjs +4 -63
  237. package/dist/jsx/connectkit/wallets/walletConfigs.mjs.map +1 -1
  238. package/dist/jsx/connectkit/wallets/walletConfigs.native.js +2 -65
  239. package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
  240. package/dist/jsx/connectkit/web3Bridge.mjs +3 -7
  241. package/dist/jsx/connectkit/web3Bridge.mjs.map +1 -1
  242. package/dist/jsx/connectkit/web3Bridge.native.js +2 -7
  243. package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
  244. package/dist/jsx/esbuild.mjs +29 -0
  245. package/dist/jsx/esbuild.mjs.map +1 -0
  246. package/dist/jsx/esbuild.native.js +57 -0
  247. package/dist/jsx/esbuild.native.js.map +1 -0
  248. package/dist/jsx/hooks/useWallet.mjs +1 -2
  249. package/dist/jsx/hooks/useWallet.mjs.map +1 -1
  250. package/dist/jsx/hooks/useWallet.native.js +1 -4
  251. package/dist/jsx/hooks/useWallet.native.js.map +1 -1
  252. package/dist/jsx/providers/WalletProvider.mjs +1 -2
  253. package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
  254. package/dist/jsx/providers/native/deepLink.mjs +1 -1
  255. package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
  256. package/dist/jsx/providers/native/deepLink.native.js +1 -1
  257. package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
  258. package/dist/jsx/providers/walletConfig.mjs.map +1 -1
  259. package/dist/jsx/providers/walletConfig.native.js.map +1 -1
  260. package/dist/jsx/vite.mjs +51 -0
  261. package/dist/jsx/vite.mjs.map +1 -0
  262. package/dist/jsx/vite.native.js +79 -0
  263. package/dist/jsx/vite.native.js.map +1 -0
  264. package/package.json +22 -10
  265. package/src/bundler/metaMaskConnectTimeouts.spec.ts +390 -0
  266. package/src/bundler/metaMaskConnectTimeouts.ts +126 -0
  267. package/src/connectkit/adapters/SolanaAdapter.ts +1 -1
  268. package/src/connectkit/adapters/discover.ts +1 -1
  269. package/src/connectkit/components/Common/ConnectorList/index.tsx +20 -50
  270. package/src/connectkit/components/ConnectModal/ConnectUsing.tsx +11 -62
  271. package/src/connectkit/components/ConnectModal/ConnectWithInjector/index.tsx +10 -70
  272. package/src/connectkit/components/ConnectModal/demo.tsx +1 -19
  273. package/src/connectkit/components/contexts/web3/index.tsx +1 -23
  274. package/src/connectkit/connectors/aaveAccountConnector.spec.ts +87 -0
  275. package/src/connectkit/connectors/aaveAccountConnector.ts +43 -0
  276. package/src/connectkit/connectors/embeddedDesktop.spec.ts +5 -5
  277. package/src/connectkit/connectors/embeddedDesktop.ts +5 -5
  278. package/src/connectkit/connectors/metaMaskConnectConnector.spec.ts +230 -0
  279. package/src/connectkit/connectors/metaMaskConnectConnector.ts +272 -0
  280. package/src/connectkit/defaultConfig.ts +16 -7
  281. package/src/connectkit/defaultConnectors.ts +19 -40
  282. package/src/connectkit/hooks/useConnectors.ts +0 -10
  283. package/src/connectkit/index.ts +4 -0
  284. package/src/connectkit/screens.tsx +1 -21
  285. package/src/connectkit/siwe/SIWEProvider.spec.tsx +70 -2
  286. package/src/connectkit/siwe/SIWEProvider.tsx +5 -3
  287. package/src/connectkit/wallets/index.ts +5 -2
  288. package/src/connectkit/wallets/useWallets.tsx +1 -20
  289. package/src/connectkit/wallets/walletConfigs.tsx +2 -64
  290. package/src/connectkit/web3Bridge.tsx +4 -21
  291. package/src/esbuild.ts +42 -0
  292. package/src/hooks/useWallet.spec.ts +6 -15
  293. package/src/hooks/useWallet.ts +1 -2
  294. package/src/providers/WalletProvider.native.tsx +1 -1
  295. package/src/providers/WalletProvider.tsx +5 -7
  296. package/src/providers/mockConnector.ts +2 -2
  297. package/src/providers/native/deepLink.spec.ts +3 -4
  298. package/src/providers/native/deepLink.ts +1 -2
  299. package/src/providers/native/inject.spec.ts +1 -1
  300. package/src/providers/walletConfig.spec.ts +1 -1
  301. package/src/providers/walletConfig.ts +2 -1
  302. package/src/vite.ts +60 -0
  303. package/types/bundler/metaMaskConnectTimeouts.d.ts +36 -0
  304. package/types/bundler/metaMaskConnectTimeouts.d.ts.map +1 -0
  305. package/types/connectkit/adapters/discover.d.ts +1 -1
  306. package/types/connectkit/components/Common/ConnectorList/index.d.ts.map +1 -1
  307. package/types/connectkit/components/ConnectModal/ConnectUsing.d.ts.map +1 -1
  308. package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts +0 -1
  309. package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts.map +1 -1
  310. package/types/connectkit/components/ConnectModal/demo.d.ts.map +1 -1
  311. package/types/connectkit/components/contexts/web3/index.d.ts +1 -5
  312. package/types/connectkit/components/contexts/web3/index.d.ts.map +1 -1
  313. package/types/connectkit/connectors/aaveAccountConnector.d.ts +5 -0
  314. package/types/connectkit/connectors/aaveAccountConnector.d.ts.map +1 -0
  315. package/types/connectkit/connectors/embeddedDesktop.d.ts +4 -4
  316. package/types/connectkit/connectors/embeddedDesktop.d.ts.map +1 -1
  317. package/types/connectkit/connectors/metaMaskConnectConnector.d.ts +35 -0
  318. package/types/connectkit/connectors/metaMaskConnectConnector.d.ts.map +1 -0
  319. package/types/connectkit/defaultConfig.d.ts +3 -2
  320. package/types/connectkit/defaultConfig.d.ts.map +1 -1
  321. package/types/connectkit/defaultConnectors.d.ts +3 -4
  322. package/types/connectkit/defaultConnectors.d.ts.map +1 -1
  323. package/types/connectkit/hooks/useConnectors.d.ts +0 -1
  324. package/types/connectkit/hooks/useConnectors.d.ts.map +1 -1
  325. package/types/connectkit/index.d.ts +1 -0
  326. package/types/connectkit/index.d.ts.map +1 -1
  327. package/types/connectkit/screens.d.ts +0 -4
  328. package/types/connectkit/screens.d.ts.map +1 -1
  329. package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
  330. package/types/connectkit/wallets/index.d.ts.map +1 -1
  331. package/types/connectkit/wallets/useWallets.d.ts.map +1 -1
  332. package/types/connectkit/wallets/walletConfigs.d.ts +0 -2
  333. package/types/connectkit/wallets/walletConfigs.d.ts.map +1 -1
  334. package/types/connectkit/web3Bridge.d.ts.map +1 -1
  335. package/types/esbuild.d.ts +31 -0
  336. package/types/esbuild.d.ts.map +1 -0
  337. package/types/hooks/useWallet.d.ts.map +1 -1
  338. package/types/providers/WalletProvider.d.ts.map +1 -1
  339. package/types/providers/mockConnector.d.ts +2 -2
  340. package/types/providers/native/deepLink.d.ts +1 -1
  341. package/types/providers/native/deepLink.d.ts.map +1 -1
  342. package/types/providers/walletConfig.d.ts +2 -1
  343. package/types/providers/walletConfig.d.ts.map +1 -1
  344. package/types/vite.d.ts +12 -0
  345. package/types/vite.d.ts.map +1 -0
  346. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.cjs +0 -133
  347. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
  348. package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  349. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.cjs +0 -158
  350. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
  351. package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  352. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.cjs +0 -90
  353. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
  354. package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  355. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.cjs +0 -398
  356. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
  357. package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  358. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.cjs +0 -0
  359. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  360. package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  361. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.cjs +0 -113
  362. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
  363. package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  364. package/dist/cjs/connectkit/hooks/useWalletConnectModal.cjs +0 -74
  365. package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js +0 -79
  366. package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  367. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
  368. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
  369. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -140
  370. package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  371. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
  372. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
  373. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js +0 -144
  374. package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  375. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
  376. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
  377. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -67
  378. package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  379. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
  380. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
  381. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js +0 -414
  382. package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  383. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
  384. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
  385. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  386. package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  387. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
  388. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
  389. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -89
  390. package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  391. package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs +0 -49
  392. package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
  393. package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js +0 -51
  394. package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  395. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
  396. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
  397. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
  398. package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
  399. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
  400. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
  401. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
  402. package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
  403. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
  404. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
  405. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
  406. package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
  407. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
  408. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
  409. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
  410. package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
  411. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
  412. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
  413. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
  414. package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
  415. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
  416. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
  417. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
  418. package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
  419. package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs +0 -49
  420. package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
  421. package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js +0 -79
  422. package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
  423. package/src/connectkit/components/ConnectModal/ConnectWithQRCode.tsx +0 -188
  424. package/src/connectkit/components/Pages/MobileConnectors/index.tsx +0 -142
  425. package/src/connectkit/components/Pages/MobileConnectors/styles.ts +0 -66
  426. package/src/connectkit/connectors/metaMaskSdkConnector.ts +0 -505
  427. package/src/connectkit/hooks/connectors/useCoinbaseWalletUri.tsx +0 -101
  428. package/src/connectkit/hooks/connectors/useWalletConnectUri.ts +0 -99
  429. package/src/connectkit/hooks/useWalletConnectModal.tsx +0 -52
  430. package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts +0 -6
  431. package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts.map +0 -1
  432. package/types/connectkit/components/Pages/MobileConnectors/index.d.ts +0 -4
  433. package/types/connectkit/components/Pages/MobileConnectors/index.d.ts.map +0 -1
  434. package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts +0 -6
  435. package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts.map +0 -1
  436. package/types/connectkit/connectors/metaMaskSdkConnector.d.ts +0 -30
  437. package/types/connectkit/connectors/metaMaskSdkConnector.d.ts.map +0 -1
  438. package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts +0 -1
  439. package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts.map +0 -1
  440. package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts +0 -8
  441. package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts.map +0 -1
  442. package/types/connectkit/hooks/useWalletConnectModal.d.ts +0 -5
  443. package/types/connectkit/hooks/useWalletConnectModal.d.ts.map +0 -1
@@ -1,80 +1,29 @@
1
1
  import { AnimatePresence, motion } from "framer-motion";
2
- import { useEffect, useState } from "react";
3
2
 
4
3
  import { useContext, contentVariants, Alert } from "@multiplatform.one/connectkit";
5
4
  import { useWallet } from "../../wallets/useWallets";
6
5
 
7
6
  import ConnectWithInjector from "./ConnectWithInjector";
8
- import ConnectWithQRCode from "./ConnectWithQRCode";
9
-
10
- const states = {
11
- QRCODE: "qrcode",
12
- INJECTOR: "injector",
13
- };
14
7
 
15
8
  const ConnectUsing = () => {
16
9
  const context = useContext();
17
10
  const wallet = useWallet(context.connector.id);
18
11
 
19
- // If cannot be scanned, display injector flow, which if extension is not installed will show CTA to install it.
20
- // wallet non-EVM wallets are always injected/extension (no WalletConnect URI) → never QR.
21
- const isQrCode =
22
- (wallet?.ecosystem ?? "evm") === "evm" &&
23
- !wallet?.isInstalled &&
24
- wallet?.getWalletConnectDeeplink;
25
-
26
- const [status, setStatus] = useState(isQrCode ? states.QRCODE : states.INJECTOR);
27
-
28
- useEffect(() => {
29
- // if no provider, change to qrcode
30
- const checkProvider = async () => {
31
- const res = await wallet?.connector.getProvider();
32
- if (!res) {
33
- setStatus(states.QRCODE);
34
- setTimeout(context.triggerResize, 10); // delay required here for modal to resize
35
- }
36
- };
37
- if (status === states.INJECTOR && (wallet?.ecosystem ?? "evm") === "evm") checkProvider();
38
- }, []);
39
-
40
12
  if (!wallet) return <Alert>Connector not found {context.connector.id}</Alert>;
41
13
 
14
+ // Every connector runs its own flow: an extension, a wallet app deeplink, or the
15
+ // wallet SDK's own popup or QR. An unavailable one shows the install call to action.
42
16
  return (
43
17
  <AnimatePresence>
44
- {status === states.QRCODE && (
45
- <motion.div
46
- key={states.QRCODE}
47
- initial={"initial"}
48
- animate={"animate"}
49
- exit={"exit"}
50
- variants={contentVariants}
51
- >
52
- <ConnectWithQRCode
53
- switchConnectMethod={(id?: string) => {
54
- //if (id) setId(id);
55
- setStatus(states.INJECTOR);
56
- setTimeout(context.triggerResize, 10); // delay required here for modal to resize
57
- }}
58
- />
59
- </motion.div>
60
- )}
61
- {status === states.INJECTOR && (
62
- <motion.div
63
- key={states.INJECTOR}
64
- initial={"initial"}
65
- animate={"animate"}
66
- exit={"exit"}
67
- variants={contentVariants}
68
- >
69
- <ConnectWithInjector
70
- switchConnectMethod={(id?: string) => {
71
- //if (id) setId(id);
72
- setStatus(states.QRCODE);
73
- setTimeout(context.triggerResize, 10); // delay required here for modal to resize
74
- }}
75
- />
76
- </motion.div>
77
- )}
18
+ <motion.div
19
+ key="injector"
20
+ initial={"initial"}
21
+ animate={"animate"}
22
+ exit={"exit"}
23
+ variants={contentVariants}
24
+ >
25
+ <ConnectWithInjector />
26
+ </motion.div>
78
27
  </AnimatePresence>
79
28
  );
80
29
  };
@@ -26,7 +26,6 @@ import {
26
26
  CustomQRCode,
27
27
  detectBrowser,
28
28
  isMetaMaskConnector,
29
- isWalletConnectConnector,
30
29
  useIsMobile,
31
30
  useLocales,
32
31
  useContext,
@@ -81,9 +80,8 @@ const contentVariants: Variants = {
81
80
  };
82
81
 
83
82
  const ConnectWithInjector: React.FC<{
84
- switchConnectMethod: (id?: string) => void;
85
83
  forceState?: typeof states;
86
- }> = ({ switchConnectMethod, forceState }) => {
84
+ }> = ({ forceState }) => {
87
85
  const { connect } = useConnect({
88
86
  mutation: {
89
87
  onMutate: (connector?: any) => {
@@ -147,11 +145,11 @@ const ConnectWithInjector: React.FC<{
147
145
 
148
146
  const [showTryAgainTooltip, setShowTryAgainTooltip] = useState(false);
149
147
 
150
- // The MetaMask SDK's mobile deeplink (metamask://connect/mwp?p=...), captured
148
+ // MetaMask Connect's mobile deeplink (metamask://connect/mwp?p=...), captured
151
149
  // from its display_uri event so we can offer it as a real tap target (see the
152
- // CONNECTING render below). If the SDK never emits the event — e.g. it threw
153
- // during init — this stays undefined and no tap target renders, so the modal
154
- // sits on "Open <wallet>" forever; that failure mode is upstream of here.
150
+ // CONNECTING render below). If it never emits the event — e.g. it threw during
151
+ // init — this stays undefined and no tap target renders, so the modal sits on
152
+ // "Open <wallet>" forever; that failure mode is upstream of here.
155
153
  const [sdkDeeplink, setSdkDeeplink] = useState<string | undefined>(undefined);
156
154
  useEffect(() => {
157
155
  const connector = wallet?.connector;
@@ -178,7 +176,7 @@ const ConnectWithInjector: React.FC<{
178
176
 
179
177
  const browser = detectBrowser();
180
178
  const isMobile = useIsMobile();
181
- // Tauri (and similar) shells: MetaMask SDK runs headless and emits display_uri;
179
+ // Tauri (and similar) shells: MetaMask Connect runs headless and emits display_uri;
182
180
  // render that URI as a QR here. Mobile keeps the anchor-tap deeplink path.
183
181
  const showEmbeddedDesktopMetaMaskQr =
184
182
  !isMobile &&
@@ -273,22 +271,6 @@ const ConnectWithInjector: React.FC<{
273
271
  );
274
272
  }
275
273
 
276
- // TODO: Make this more generic
277
- if (isWalletConnectConnector(wallet?.connector.id)) {
278
- return (
279
- <PageContent>
280
- <Container>
281
- <ModalHeading>Invalid State</ModalHeading>
282
- <ModalContent>
283
- <Alert>
284
- WalletConnect does not have an injection flow. This state should never happen.
285
- </Alert>
286
- </ModalContent>
287
- </Container>
288
- </PageContent>
289
- );
290
- }
291
-
292
274
  return (
293
275
  <PageContent>
294
276
  <Container>
@@ -385,22 +367,6 @@ const ConnectWithInjector: React.FC<{
385
367
  </ModalH1>
386
368
  <ModalBody>{locales.injectionScreen_failed_p}</ModalBody>
387
369
  </ModalContent>
388
-
389
- {/* Reason: Coinbase Wallet does not expose a QRURI when extension is installed */}
390
- {/*
391
- {wallet?.getWalletConnectDeeplink &&
392
- wallet.id !== 'coinbaseWalletSDK' && (
393
- <>
394
- <OrDivider />
395
- <Button
396
- icon={<Scan />}
397
- onClick={() => switchConnectMethod(id)}
398
- >
399
- {locales.scanTheQRCode}
400
- </Button>
401
- </>
402
- )}
403
- */}
404
370
  </Content>
405
371
  )}
406
372
  {status === states.REJECTED && (
@@ -415,22 +381,6 @@ const ConnectWithInjector: React.FC<{
415
381
  <ModalH1>{locales.injectionScreen_rejected_h1}</ModalH1>
416
382
  <ModalBody>{locales.injectionScreen_rejected_p}</ModalBody>
417
383
  </ModalContent>
418
-
419
- {/* Reason: Coinbase Wallet does not expose a QRURI when extension is installed */}
420
- {/*
421
- {wallet?.getWalletConnectDeeplink &&
422
- wallet.id !== 'coinbaseWalletSDK' && (
423
- <>
424
- <OrDivider />
425
- <Button
426
- icon={<Scan />}
427
- onClick={() => switchConnectMethod(id)}
428
- >
429
- {locales.scanTheQRCode}
430
- </Button>
431
- </>
432
- )}
433
- */}
434
384
  </Content>
435
385
  )}
436
386
  {(status === states.CONNECTING || status === states.EXPIRING) && (
@@ -479,15 +429,15 @@ const ConnectWithInjector: React.FC<{
479
429
  {showEmbeddedDesktopMetaMaskQr && (
480
430
  <CustomQRCode value={deeplink} image={walletInfo.icon} imagePosition="center" />
481
431
  )}
482
- {/* The SDK auto-opens its deeplink, but browsers drop external-
483
- protocol navigations whose user activation expired while the
484
- SDK did its async setup (chunk import + relay round-trip) —
432
+ {/* MetaMask Connect auto-opens its deeplink, but browsers drop external-
433
+ protocol navigations whose user activation expired while it
434
+ did its async setup (chunk import + relay round-trip) —
485
435
  silently, on slow networks especially. And a JS navigation
486
436
  (location.href) to a universal link NEVER app-switches on
487
437
  iOS: WebKit only follows universal links into the app from a
488
438
  genuine same-tab anchor tap; JS-set locations land on the
489
439
  metamask.app.link web fallback instead (observed inside
490
- ASWebAuthenticationSession). So once the SDK emits
440
+ ASWebAuthenticationSession). So once it emits
491
441
  display_uri we render it as a REAL anchor — same-tab,
492
442
  because auth sheets can't open new tabs. */}
493
443
  {isMobile && isMetaMaskConnector(wallet?.connector.id) && deeplink && (
@@ -557,16 +507,6 @@ const ConnectWithInjector: React.FC<{
557
507
  <ModalH1>{locales.injectionScreen_install_h1}</ModalH1>
558
508
  <ModalBody>{locales.injectionScreen_install_p}</ModalBody>
559
509
  </ModalContent>
560
- {/**
561
- {(wallet.getWalletConnectDeeplink &&
562
- (!wallet.isInstalled && extensionUrl)) && <OrDivider />}
563
-
564
- {wallet.getWalletConnectDeeplink && (
565
- <Button icon={<Scan />} onClick={switchConnectMethod}>
566
- {locales.scanTheQRCode}
567
- </Button>
568
- )}
569
- */}
570
510
  {!wallet.isInstalled && extensionUrl && (
571
511
  <Button href={extensionUrl} icon={<BrowserIcon />}>
572
512
  {locales.installTheExtension}
@@ -17,11 +17,9 @@ import ConnectUsing from "./ConnectUsing";
17
17
  import DownloadApp from "../Pages/DownloadApp";
18
18
  import Profile from "../Pages/Profile";
19
19
  import SwitchNetworks from "../Pages/SwitchNetworks";
20
- import MobileConnectors from "../Pages/MobileConnectors";
21
20
  import SignInWithEthereum from "../Pages/SignInWithEthereum";
22
21
 
23
22
  import { ConnectKitButton } from "../ConnectButton";
24
- import { getAppName } from "../../defaultConfig";
25
23
  import { ConnectKitThemeProvider, styled, useModalState } from "@multiplatform.one/connectkit";
26
24
  import { keyframes } from "styled-components";
27
25
  import { Web3ContextProvider } from "../contexts/web3";
@@ -135,7 +133,6 @@ const ConnectModal: React.FC<{
135
133
  about: <About />,
136
134
  download: <DownloadApp />,
137
135
  connectors: <Connectors />,
138
- mobileConnectors: <MobileConnectors />,
139
136
  connect: <ConnectUsing />,
140
137
  profile: <Profile closeModal={() => setIsOpen(false)} />,
141
138
  switchNetworks: <SwitchNetworks />,
@@ -203,23 +200,8 @@ const ConnectModal: React.FC<{
203
200
  }
204
201
  }, [isConnected]);
205
202
 
206
- /* When pulling data into WalletConnect, it prioritises the og:title tag over the title tag */
207
- useEffect(() => {
208
- const appName = getAppName();
209
- if (!appName || (!open && !inline)) return;
210
-
211
- const title = document.createElement("meta");
212
- title.setAttribute("property", "og:title");
213
- title.setAttribute("content", appName);
214
- document.head.prepend(title);
215
-
216
- return () => {
217
- document.head.removeChild(title);
218
- };
219
- }, [open, inline]);
220
-
221
203
  return (
222
- <Web3ContextProvider enabled={isOpen}>
204
+ <Web3ContextProvider>
223
205
  <ConnectKitThemeProvider theme={theme} customTheme={customTheme} mode={mode}>
224
206
  <Container ref={ref}>
225
207
  {inline && onClose && (
@@ -8,13 +8,9 @@ import { Address, Chain } from "viem";
8
8
  import { useAccount } from "wagmi";
9
9
 
10
10
  import { useChains } from "../../../hooks/useChains";
11
- import { useWalletConnectUri } from "../../../hooks/connectors/useWalletConnectUri";
12
11
  import { useChainIsSupported } from "../../../hooks/useChainIsSupported";
13
12
 
14
13
  type Web3Context = {
15
- connect: {
16
- getUri: (id?: string) => string;
17
- };
18
14
  dapp: {
19
15
  chains: Chain[];
20
16
  };
@@ -26,36 +22,18 @@ type Web3Context = {
26
22
  };
27
23
 
28
24
  const Web3Context = React.createContext({
29
- connect: {
30
- getUri: () => "",
31
- },
32
25
  dapp: {
33
26
  chains: [],
34
27
  },
35
28
  account: undefined,
36
29
  } as Web3Context);
37
30
 
38
- export const Web3ContextProvider = ({
39
- enabled,
40
- children,
41
- }: {
42
- enabled?: boolean;
43
- children: React.ReactNode;
44
- }) => {
45
- const { uri: walletConnectUri } = useWalletConnectUri({
46
- enabled,
47
- });
48
-
31
+ export const Web3ContextProvider = ({ children }: { children: React.ReactNode }) => {
49
32
  const { address: currentAddress, chain } = useAccount();
50
33
  const chainIsSupported = useChainIsSupported(chain?.id);
51
34
  const chains = useChains();
52
35
 
53
36
  const value = {
54
- connect: {
55
- getUri: (id?: string) => {
56
- return walletConnectUri;
57
- },
58
- },
59
37
  dapp: {
60
38
  chains,
61
39
  },
@@ -0,0 +1,87 @@
1
+ // @vitest-environment happy-dom
2
+ import { createConfig, createStorage, http } from "@wagmi/core";
3
+ import { mainnet } from "viem/chains";
4
+ import { beforeEach, describe, expect, it, vi } from "vitest";
5
+
6
+ const { providerBuilt } = vi.hoisted(() => ({ providerBuilt: vi.fn() }));
7
+
8
+ // The real module's constructor mounts Aave's iframe and starts AaveAccountSdk.connect().
9
+ // Its own aaveAccountConnector() builds that provider as soon as it is called, which
10
+ // is what the pre-fix defaultConnectors used.
11
+ vi.mock("@aave/account", async () => {
12
+ const { injected } = await import("@wagmi/connectors/injected");
13
+ class EthereumProvider {
14
+ constructor(options?: unknown) {
15
+ providerBuilt(options);
16
+ }
17
+ request = vi.fn(async ({ method }: { method: string }) =>
18
+ method === "eth_chainId" ? "0x1" : ["0x0000000000000000000000000000000000000001"],
19
+ );
20
+ on = vi.fn();
21
+ removeListener = vi.fn();
22
+ }
23
+ return {
24
+ EthereumProvider,
25
+ aaveAccountConnector: (options?: unknown) => {
26
+ const provider = new EthereumProvider(options);
27
+ return injected({
28
+ shimDisconnect: false,
29
+ target: () => ({
30
+ id: "aaveAccountProvider",
31
+ name: "Aave Account",
32
+ provider: provider as never,
33
+ }),
34
+ });
35
+ },
36
+ };
37
+ });
38
+ vi.mock("@metamask/connect-evm", () => ({ createEVMClient: vi.fn(() => new Promise(() => {})) }));
39
+
40
+ import getDefaultConfig from "../defaultConfig";
41
+ import { aaveAccountConnector, aaveAccountConnectorId } from "./aaveAccountConnector";
42
+
43
+ const memory = () => {
44
+ const store = new Map<string, string>();
45
+ return {
46
+ getItem: (key: string) => store.get(key) ?? null,
47
+ setItem: (key: string, value: string) => void store.set(key, value),
48
+ removeItem: (key: string) => void store.delete(key),
49
+ };
50
+ };
51
+
52
+ describe("Aave Account connector", () => {
53
+ beforeEach(() => providerBuilt.mockClear());
54
+
55
+ it("is off by default in getDefaultConfig", () => {
56
+ const config = createConfig(getDefaultConfig({ appName: "test", chains: [mainnet] }));
57
+ expect(config.connectors.some((c) => c.id === aaveAccountConnectorId)).toBe(false);
58
+ });
59
+
60
+ it("builds no Aave provider when a config opts in, until the user connects", async () => {
61
+ const config = createConfig({
62
+ ...getDefaultConfig({ appName: "test", chains: [mainnet], enableAaveAccount: true }),
63
+ storage: createStorage({ storage: memory() }),
64
+ });
65
+ const aave = config.connectors.find((c) => c.id === aaveAccountConnectorId)!;
66
+ expect(aave).toBeDefined();
67
+ expect(await aave.getProvider()).toBeUndefined();
68
+ expect(await aave.isAuthorized()).toBe(false);
69
+ expect(providerBuilt).not.toHaveBeenCalled();
70
+
71
+ await aave.connect();
72
+ expect(providerBuilt).toHaveBeenCalledOnce();
73
+ });
74
+
75
+ it("builds the provider to reconnect when Aave Account was the last connector", async () => {
76
+ const storage = createStorage({ storage: memory() });
77
+ await storage.setItem("recentConnectorId", aaveAccountConnectorId);
78
+ const config = createConfig({
79
+ chains: [mainnet],
80
+ connectors: [aaveAccountConnector()],
81
+ transports: { [mainnet.id]: http() },
82
+ storage,
83
+ });
84
+ expect(await config.connectors[0].getProvider()).toBeDefined();
85
+ expect(providerBuilt).toHaveBeenCalledOnce();
86
+ });
87
+ });
@@ -0,0 +1,43 @@
1
+ // @aave/account's own aaveAccountConnector() builds its EthereumProvider while the
2
+ // wagmi config is built. That constructor mounts Aave's hidden iframe and calls
3
+ // AaveAccountSdk.connect() on every page load, and when the connect does not
4
+ // finish the SDK rejects unhandled: "Aave Account is not connected" on every
5
+ // Keycloak login page (MPO-378). This builds the provider only when the user picks
6
+ // Aave Account, or when wagmi reconnects the Aave Account it connected last.
7
+ import { EthereumProvider, type EthereumProviderOptions } from "@aave/account";
8
+ import { injected } from "@wagmi/connectors/injected";
9
+ import type { CreateConnectorFn } from "wagmi";
10
+
11
+ export const aaveAccountConnectorId = "aaveAccountProvider";
12
+
13
+ export function aaveAccountConnector(options?: EthereumProviderOptions): CreateConnectorFn {
14
+ let provider: EthereumProvider | undefined;
15
+ const ensureProvider = () => (provider ??= new EthereumProvider(options));
16
+ const base = injected({
17
+ shimDisconnect: false,
18
+ target: () => ({
19
+ id: aaveAccountConnectorId,
20
+ name: "Aave Account",
21
+ provider: () => provider as never,
22
+ }),
23
+ });
24
+
25
+ return (config) => {
26
+ const connector = base(config);
27
+ return {
28
+ ...connector,
29
+ async connect(parameters) {
30
+ ensureProvider();
31
+ return connector.connect.call(this, parameters);
32
+ },
33
+ async getProvider(parameters) {
34
+ if (
35
+ !provider &&
36
+ (await config.storage?.getItem("recentConnectorId")) === aaveAccountConnectorId
37
+ )
38
+ ensureProvider();
39
+ return connector.getProvider.call(this, parameters);
40
+ },
41
+ } as ReturnType<typeof base>;
42
+ };
43
+ }
@@ -23,21 +23,21 @@ describe("metaMaskOptionsForEmbeddedDesktop", () => {
23
23
  window.open = originalOpen;
24
24
  });
25
25
 
26
- it("disables deeplink navigation and SDK modal", () => {
26
+ it("disables deeplink navigation and the MetaMask Connect modal", () => {
27
27
  const opts = metaMaskOptionsForEmbeddedDesktop();
28
28
  expect(opts.useDeeplink).toBe(false);
29
29
  expect(opts.headless).toBe(true);
30
30
  });
31
31
 
32
- it("openDeeplink opens https in a new window and ignores custom schemes", () => {
32
+ it("preferredOpenLink opens https in a new window and ignores custom schemes", () => {
33
33
  const open = vi.fn();
34
34
  window.open = open;
35
- const { openDeeplink } = metaMaskOptionsForEmbeddedDesktop();
35
+ const { preferredOpenLink } = metaMaskOptionsForEmbeddedDesktop();
36
36
 
37
- openDeeplink("metamask://connect?channelId=abc");
37
+ preferredOpenLink("metamask://connect?channelId=abc");
38
38
  expect(open).not.toHaveBeenCalled();
39
39
 
40
- openDeeplink("https://metamask.app.link/connect?channelId=abc");
40
+ preferredOpenLink("https://metamask.app.link/connect?channelId=abc");
41
41
  expect(open).toHaveBeenCalledWith(
42
42
  "https://metamask.app.link/connect?channelId=abc",
43
43
  "_blank",
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Tauri (and similar) desktop shells load the *web* bundle inside a native
3
- * WebView. Browser extensions never inject there, so MetaMask must use the SDK
3
+ * WebView. Browser extensions never inject there, so MetaMask must use the
4
4
  * remote/QR path — never `window.location.href = metamask://…`, which would
5
5
  * navigate the whole WebView away from the app.
6
6
  *
@@ -22,21 +22,21 @@ export function isEmbeddedDesktopWebview(
22
22
  export type MetaMaskEmbeddedDesktopOptions = {
23
23
  /** Prefer https://metamask.app.link over metamask:// in the QR payload. */
24
24
  useDeeplink: false;
25
- /** Suppress SDK InstallModal custom-elements (WKWebView-hostile); ConnectKit renders QR. */
25
+ /** Suppress MetaMask Connect's install modal (WKWebView-hostile); ConnectKit renders QR. */
26
26
  headless: true;
27
27
  /**
28
28
  * Never assign location.href for custom schemes. https universal links may
29
29
  * open in the system browser via window.open; custom schemes are ignored.
30
30
  */
31
- openDeeplink: (url: string) => void;
31
+ preferredOpenLink: (url: string) => void;
32
32
  };
33
33
 
34
- /** MetaMask SDK options that are safe inside Tauri/WebView2/WKWebView. */
34
+ /** MetaMask Connect options that are safe inside Tauri/WebView2/WKWebView. */
35
35
  export function metaMaskOptionsForEmbeddedDesktop(): MetaMaskEmbeddedDesktopOptions {
36
36
  return {
37
37
  useDeeplink: false,
38
38
  headless: true,
39
- openDeeplink: (url: string) => {
39
+ preferredOpenLink: (url: string) => {
40
40
  if (typeof window === "undefined") return;
41
41
  // Custom schemes (metamask://) must not navigate the WebView.
42
42
  if (!/^https?:\/\//i.test(url)) return;