diff --git a/package.json b/package.json index db3f686..8d58fe9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@neynar/create-farcaster-mini-app", - "version": "1.2.17", + "version": "1.2.18", "type": "module", "private": false, "access": "public", diff --git a/src/components/Demo.tsx b/src/components/Demo.tsx index 13a4235..6464ed2 100644 --- a/src/components/Demo.tsx +++ b/src/components/Demo.tsx @@ -59,7 +59,22 @@ export default function Demo( } = useSignTypedData(); const { disconnect } = useDisconnect(); - const { connect } = useConnect(); + const { connect, connectors } = useConnect(); + + const handleConnect = useCallback(async () => { + if (context) { + // If we're in a frame client, use the frame connector + await connect({ connector: connectors[0] }); + } else { + try { + // Try Coinbase Wallet first + await connect({ connector: connectors[1] }); + } catch (error) { + // If Coinbase Wallet fails, try MetaMask + await connect({ connector: connectors[2] }); + } + } + }, [connect, connectors, context]); const { switchChain, @@ -321,15 +336,21 @@ export default function Demo( )}
- + {isConnected ? ( + + ) : ( + + )}
diff --git a/src/components/providers/WagmiProvider.tsx b/src/components/providers/WagmiProvider.tsx index 25850ea..e81bcb3 100644 --- a/src/components/providers/WagmiProvider.tsx +++ b/src/components/providers/WagmiProvider.tsx @@ -2,6 +2,8 @@ import { createConfig, http, WagmiProvider } from "wagmi"; import { base, degen, mainnet, optimism, unichain } from "wagmi/chains"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { farcasterFrame } from "@farcaster/frame-wagmi-connector"; +import { coinbaseWallet, metaMask } from 'wagmi/connectors'; +import { APP_NAME, APP_ICON_URL, APP_URL } from "~/lib/constants"; export const config = createConfig({ chains: [base, optimism, mainnet, degen, unichain], @@ -12,7 +14,20 @@ export const config = createConfig({ [degen.id]: http(), [unichain.id]: http(), }, - connectors: [farcasterFrame()], + connectors: [ + farcasterFrame(), + coinbaseWallet({ + appName: APP_NAME, + appLogoUrl: APP_ICON_URL, + preference: 'all', + }), + metaMask({ + dappMetadata: { + name: APP_NAME, + url: APP_URL, + }, + }), + ], }); const queryClient = new QueryClient();