create-dynamic-app
Version:
CLI tool to generate sample applications using Dynamic's web3 authentication
64 lines (55 loc) • 1.63 kB
text/typescript
import type { Chain } from "../types"
export const generateProvidersContent = (
useWagmi: boolean,
selectedChains: Chain[]
) => {
let imports = `'use client';\n\n`
imports += `import { DynamicContextProvider } from "@dynamic-labs/sdk-react-core";\n`
selectedChains.forEach((chain) => {
imports += `import { ${chain.connector} } from "${chain.package}";\n`
})
if (useWagmi) {
imports += `import { WagmiProvider } from "wagmi";\n`
imports += `import { QueryClient, QueryClientProvider } from "@tanstack/react-query";\n`
imports += `import { DynamicWagmiConnector } from "@dynamic-labs/wagmi-connector";\n`
imports += `import { config } from "@/lib/wagmi";\n`
}
const walletConnectors = selectedChains
.map((chain) => chain.connector)
.join(", ")
const content = `
export default function Providers({
children,
}: {
children: React.ReactNode;
}) {
${useWagmi ? "const queryClient = new QueryClient();" : ""}
return (
<DynamicContextProvider
theme="auto"
settings={{
environmentId:
// replace with your own environment ID
process.env.NEXT_PUBLIC_DYNAMIC_ENV_ID ||
"2762a57b-faa4-41ce-9f16-abff9300e2c9",
walletConnectors: [${walletConnectors}],
}}
>
${
useWagmi
? `
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
<DynamicWagmiConnector>
{children}
</DynamicWagmiConnector>
</QueryClientProvider>
</WagmiProvider>
`
: "{children}"
}
</DynamicContextProvider>
);
}`
return `${imports}\n${content}`
}