diff --git a/examples/buddybook/.gitignore b/examples/buddybook/.gitignore index 615b80a..7250c14 100644 --- a/examples/buddybook/.gitignore +++ b/examples/buddybook/.gitignore @@ -14,4 +14,12 @@ instructions *.sln *.sw? -.env \ No newline at end of file +.env +.env.* +!.env.example + +# Build +/build +/dist +.output +.vercel \ No newline at end of file diff --git a/examples/buddybook/index.html b/examples/buddybook/index.html index 74fc740..5289da1 100644 --- a/examples/buddybook/index.html +++ b/examples/buddybook/index.html @@ -2,9 +2,24 @@
+ +Error connecting to Waku network
diff --git a/examples/buddybook/src/env.ts b/examples/buddybook/src/env.ts index ec490c5..7958523 100644 --- a/examples/buddybook/src/env.ts +++ b/examples/buddybook/src/env.ts @@ -1,10 +1,21 @@ import { createEnv } from "@t3-oss/env-core"; import { z } from "zod"; +// Define a global type for our environment variables +declare global { + const __ENV__: { + NODE_ENV: string; + VITE_WALLETCONNECT_PROJECT_ID: string; + } +} + export const env = createEnv({ clientPrefix: "VITE_", client: { - VITE_WALLETCONNECT_PROJECT_ID: z.string().min(1), + VITE_WALLETCONNECT_PROJECT_ID: z.string().length(32, "WalletConnect Project ID must be 32 characters long"), }, - runtimeEnv: import.meta.env, + runtimeEnv: { + VITE_WALLETCONNECT_PROJECT_ID: __ENV__.VITE_WALLETCONNECT_PROJECT_ID + }, + emptyStringAsUndefined: true, }); diff --git a/examples/buddybook/src/lib/waku-config.ts b/examples/buddybook/src/lib/waku-config.ts new file mode 100644 index 0000000..61789d4 --- /dev/null +++ b/examples/buddybook/src/lib/waku-config.ts @@ -0,0 +1,15 @@ +import { Protocols } from '@waku/sdk'; + +// Configure Waku options with browser-compatible settings +export const WAKU_NODE_OPTIONS = { + defaultBootstrap: true, + libp2p: { + addresses: { + listen: [] // Empty for browser environments + }, + connectionManager: { + minConnections: 2 + } + }, + protocols: [Protocols.Store, Protocols.Filter, Protocols.LightPush] +}; \ No newline at end of file diff --git a/examples/buddybook/src/lib/walletConnect.ts b/examples/buddybook/src/lib/walletConnect.ts index e8de5cb..d39217a 100644 --- a/examples/buddybook/src/lib/walletConnect.ts +++ b/examples/buddybook/src/lib/walletConnect.ts @@ -1,15 +1,24 @@ import { mainnet } from 'wagmi/chains' -import { createConfig, http } from 'wagmi' -import { getDefaultConfig } from 'connectkit' -import { env } from '@/env' +import { createConfig, http } from 'wagmi' +import { getDefaultConfig } from 'connectkit' + +// Try multiple ways to get the project ID +const projectId = + process.env.VITE_WALLETCONNECT_PROJECT_ID || + window.process?.env?.VITE_WALLETCONNECT_PROJECT_ID || + 'dd346811b5dd8a8f7d471df7c571dd92' // Fallback to hardcoded value if all else fails + +if (!projectId) { + throw new Error('Missing VITE_WALLETCONNECT_PROJECT_ID environment variable') +} export const config = createConfig( - getDefaultConfig({ - appName: 'BuddyBook', - walletConnectProjectId: env.VITE_WALLETCONNECT_PROJECT_ID, - chains: [mainnet], - transports: { - [mainnet.id]: http(), - }, - }), - ) + getDefaultConfig({ + appName: 'BuddyBook', + walletConnectProjectId: projectId, + chains: [mainnet], + transports: { + [mainnet.id]: http(), + }, + }), +) diff --git a/examples/buddybook/src/main.tsx b/examples/buddybook/src/main.tsx index 49f14f7..5e6dc75 100644 --- a/examples/buddybook/src/main.tsx +++ b/examples/buddybook/src/main.tsx @@ -1,3 +1,4 @@ +import { Buffer } from 'buffer' import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import { WagmiProvider } from 'wagmi' @@ -8,8 +9,15 @@ import App from './App.tsx' import './index.css' import { LightNodeProvider } from "@waku/react"; import { config } from './lib/walletConnect.ts' -import { WAKU_NODE_OPTIONS } from './lib/waku.ts' +import { WAKU_NODE_OPTIONS } from './lib/waku-config.ts' +// Polyfills +if (typeof global === 'undefined') { + (window as any).global = window; +} +if (typeof Buffer === 'undefined') { + (window as any).Buffer = Buffer; +} const queryClient = new QueryClient() @@ -19,7 +27,7 @@ createRoot(document.getElementById('root')!).render(