Open lukaw3d opened 4 days ago
Does metamask inject window.ethereum
into other extensions?
Does chrome have a config option for running ext in ext like Allow access to file URLs
?
Does metamask support runtime.onMessageExternal
or runtime.onConnectExternal
to communicate ext to ext?
Early support for something behind a flag:
https://github.com/jiexi/CAIPs/pull/1
https://github.com/MetaMask/metamask-extension/pull/25075
https://github.com/MetaMask/extension-provider
but do non-metamask wallets support this?
Rainbowkit ConnectButton doesn't try to use it
Does iframe inside extension get metamask injection?
Can extension connect across wallet connect QR code?
Can ext wallet open a data URL popup, and that popup communicates with metamask?
data:text/html,<script>setInterval(() => console.log(window.ethereum), 1000)</script>
prints undefined. Metamask doesn't inject into data:
blob:
URL.createObjectURL also no.Can ext wallet open an external site and use it as a proxy?
<WagmiProvider config={config} reconnectOnMount={false}>
with rainbowkit connect sufficient to ignore any risk from auto-connect?handle = open(.._blank); handle.postMessage('withdraw', 'wallet-proxy.oasis.io'); + window.addEventListener('message', e => e.origin === 'wallet-ext-id?')
Site access: on click
rainbowkit connect also requires more permissive CSP. Proxy site can have it less strict
minimum:
connect-src: https://*.walletconnect.com wss://*.walletconnect.com
frame-src: https://verify.walletconnect.org
try:
diff --git a/extension/src/popup/popup.tsx b/extension/src/popup/popup.tsx
index 4909fa76..6b96b197 100644
--- a/extension/src/popup/popup.tsx
+++ b/extension/src/popup/popup.tsx
@@ -11,6 +11,24 @@ import 'locales/i18n'
import 'sanitize.css/sanitize.css'
import 'styles/main.css'
import { routes } from './routes'
+import { WagmiProvider } from 'wagmi'
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
+import { RainbowKitProvider } from '@rainbow-me/rainbowkit'
+
+import { getDefaultConfig } from '@rainbow-me/rainbowkit'
+import { sapphire } from 'wagmi/chains'
+import '@rainbow-me/rainbowkit/styles.css'
+
+export const config = getDefaultConfig({
+ appName: 'ROSE On-Ramp',
+ projectId: 'e3727c2e231abb0791d9cc90b55fb1e1',
+ chains: [sapphire],
+ ssr: false, // If your dApp uses server side rendering (SSR)
+ batch: {
+ multicall: false,
+ },
+})
+const queryClient = new QueryClient()
const container = document.getElementById('root') as HTMLElement
const root = createRoot(container!)
@@ -23,7 +41,13 @@ store.ready().then(() => {
<ThemeProvider>
<HelmetProvider>
<React.StrictMode>
- <RouterProvider router={router} />
+ <WagmiProvider config={config}>
+ <QueryClientProvider client={queryClient}>
+ <RainbowKitProvider>
+ <RouterProvider router={router} />
+ </RainbowKitProvider>
+ </QueryClientProvider>
+ </WagmiProvider>
</React.StrictMode>
</HelmetProvider>
</ThemeProvider>
If we want to do subcall withdrawal, we need to connect to evm extension wallets like metamask from inside https://chromewebstore.google.com/detail/ROSE%20Wallet/ppdadbejkmjnefldpcdjhnkpbjkikoip?hl=en