Fix wallet add/switch-network: use a clean RPC, not the WC proxy
AppKit's built-in networks advertise rpc.walletconnect.org/v1/?chainId=…&projectId=… as the chain RPC. Wallets reject that query-string URL as "Invalid URL" when adding/switching the network — Trust showed "Invalid URL", desktop MetaMask looped on Switch Network, and the mobile buy failed because the switch to Amoy never completed. Clone the chain with our clean public RPC before handing it to AppKit/Wagmi. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,15 @@ window.IAPWallet = (function () {
|
||||
const mod = await import(APPKIT_URL);
|
||||
const { createAppKit, WagmiAdapter, networks } = mod;
|
||||
const netMap = { 80002: networks.polygonAmoy, 137: networks.polygon };
|
||||
const net = netMap[Number(c.chainId)] || networks.polygonAmoy;
|
||||
const base = netMap[Number(c.chainId)] || networks.polygonAmoy;
|
||||
// Override the chain's RPC with our clean public endpoint. AppKit's built-in
|
||||
// networks advertise the WalletConnect RPC proxy
|
||||
// (rpc.walletconnect.org/v1/?chainId=…&projectId=…) as the chain RPC, and
|
||||
// wallets reject that query-string URL as "Invalid URL" when adding/switching
|
||||
// the network — the cause of Trust's "Invalid URL", MetaMask's switch loop,
|
||||
// and the failed mobile buy (the chain switch never completed).
|
||||
const rpc = String(c.rpc || '').trim();
|
||||
const net = rpc ? Object.assign({}, base, { rpcUrls: { default: { http: [rpc] }, public: { http: [rpc] } } }) : base;
|
||||
const projectId = String(c.walletConnectProjectId || '').trim();
|
||||
const wagmiAdapter = new WagmiAdapter({ networks: [net], projectId });
|
||||
modal = createAppKit({
|
||||
|
||||
Reference in New Issue
Block a user