mirror of
https://github.com/neynarxyz/create-farcaster-mini-app.git
synced 2025-11-15 15:48:56 -05:00
feat: update constant writes
This commit is contained in:
parent
e20a2a397d
commit
6f0300fd7c
74
bin/init.js
74
bin/init.js
@ -453,47 +453,81 @@ export async function init(projectName = null, autoAcceptDefaults = false) {
|
||||
if (fs.existsSync(constantsPath)) {
|
||||
let constantsContent = fs.readFileSync(constantsPath, 'utf8');
|
||||
|
||||
// Helper function to escape single quotes in strings
|
||||
const escapeString = (str) => str.replace(/'/g, "\\'");
|
||||
|
||||
// Helper function to safely replace constants with validation
|
||||
const safeReplace = (content, pattern, replacement, constantName) => {
|
||||
const newContent = content.replace(pattern, replacement);
|
||||
if (newContent === content) {
|
||||
console.log(`⚠️ Warning: Could not update ${constantName} in constants.ts`);
|
||||
}
|
||||
return newContent;
|
||||
};
|
||||
|
||||
// Update APP_NAME
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const APP_NAME = ['"`][^'"`]*['"`];/,
|
||||
`export const APP_NAME = '${answers.projectName}';`
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const APP_NAME\s*=\s*['"`][^'"`]*['"`];/,
|
||||
`export const APP_NAME = '${escapeString(answers.projectName)}';`,
|
||||
'APP_NAME'
|
||||
);
|
||||
|
||||
// Update APP_DESCRIPTION
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const APP_DESCRIPTION = ['"`][^'"`]*['"`];/,
|
||||
`export const APP_DESCRIPTION = '${answers.description}';`
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const APP_DESCRIPTION\s*=\s*['"`][^'"`]*['"`];/,
|
||||
`export const APP_DESCRIPTION = '${escapeString(answers.description)}';`,
|
||||
'APP_DESCRIPTION'
|
||||
);
|
||||
|
||||
// Update APP_PRIMARY_CATEGORY
|
||||
if (answers.primaryCategory) {
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const APP_PRIMARY_CATEGORY = ['"`][^'"`]*['"`];/,
|
||||
`export const APP_PRIMARY_CATEGORY = '${answers.primaryCategory}';`
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const APP_PRIMARY_CATEGORY\s*=\s*['"`][^'"`]*['"`];/,
|
||||
`export const APP_PRIMARY_CATEGORY = '${escapeString(answers.primaryCategory)}';`,
|
||||
'APP_PRIMARY_CATEGORY'
|
||||
);
|
||||
}
|
||||
|
||||
// Update APP_TAGS
|
||||
const tagsString = answers.tags.length > 0 ? `['${answers.tags.join("', '")}']` : "['neynar', 'starter-kit', 'demo']";
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const APP_TAGS = \[[^\]]*\];/,
|
||||
`export const APP_TAGS = ${tagsString};`
|
||||
const tagsString = answers.tags.length > 0
|
||||
? `['${answers.tags.map(tag => escapeString(tag)).join("', '")}']`
|
||||
: "['neynar', 'starter-kit', 'demo']";
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const APP_TAGS\s*=\s*\[[^\]]*\];/,
|
||||
`export const APP_TAGS = ${tagsString};`,
|
||||
'APP_TAGS'
|
||||
);
|
||||
|
||||
// Update APP_BUTTON_TEXT
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const APP_BUTTON_TEXT = ['"`][^'"`]*['"`];/,
|
||||
`export const APP_BUTTON_TEXT = '${answers.buttonText}';`
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const APP_BUTTON_TEXT\s*=\s*['"`][^'"`]*['"`];/,
|
||||
`export const APP_BUTTON_TEXT = '${escapeString(answers.buttonText)}';`,
|
||||
'APP_BUTTON_TEXT'
|
||||
);
|
||||
|
||||
// Update USE_WALLET
|
||||
constantsContent = constantsContent.replace(
|
||||
/export const USE_WALLET = (true|false);/,
|
||||
`export const USE_WALLET = ${answers.useWallet};`
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const USE_WALLET\s*=\s*(true|false);/,
|
||||
`export const USE_WALLET = ${answers.useWallet};`,
|
||||
'USE_WALLET'
|
||||
);
|
||||
|
||||
// Update ANALYTICS_ENABLED
|
||||
constantsContent = safeReplace(
|
||||
constantsContent,
|
||||
/export const ANALYTICS_ENABLED\s*=\s*(true|false);/,
|
||||
`export const ANALYTICS_ENABLED = ${answers.enableAnalytics};`,
|
||||
'ANALYTICS_ENABLED'
|
||||
);
|
||||
|
||||
fs.writeFileSync(constantsPath, constantsContent);
|
||||
console.log('Updated constants.ts with user configuration');
|
||||
console.log('✅ Updated constants.ts with user configuration');
|
||||
} else {
|
||||
console.log('⚠️ constants.ts not found, skipping constants update');
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import type { Session } from "next-auth";
|
||||
import { SessionProvider } from "next-auth/react";
|
||||
import { MiniAppProvider } from "@neynar/react";
|
||||
import { SafeFarcasterSolanaProvider } from "~/components/providers/SafeFarcasterSolanaProvider";
|
||||
import { ANALYTICS_ENABLED } from "~/lib/constants";
|
||||
|
||||
const WagmiProvider = dynamic(
|
||||
() => import("~/components/providers/WagmiProvider"),
|
||||
@ -18,7 +19,7 @@ export function Providers({ session, children }: { session: Session | null, chil
|
||||
return (
|
||||
<SessionProvider session={session}>
|
||||
<WagmiProvider>
|
||||
<MiniAppProvider analyticsEnabled={true} backButtonEnabled={true}>
|
||||
<MiniAppProvider analyticsEnabled={ANALYTICS_ENABLED} backButtonEnabled={true}>
|
||||
<SafeFarcasterSolanaProvider endpoint={solanaEndpoint}>
|
||||
{children}
|
||||
</SafeFarcasterSolanaProvider>
|
||||
|
||||
@ -157,19 +157,6 @@ export function WalletTab() {
|
||||
} = useSwitchChain();
|
||||
|
||||
// --- Effects ---
|
||||
/**
|
||||
* Debug logging for wallet auto-connection and state changes.
|
||||
* Logs context, connection status, address, and available connectors.
|
||||
*/
|
||||
useEffect(() => {
|
||||
console.log("WalletTab Debug Info:");
|
||||
console.log("- context:", context);
|
||||
console.log("- isConnected:", isConnected);
|
||||
console.log("- address:", address);
|
||||
console.log("- connectors:", connectors);
|
||||
console.log("- context?.user:", context?.user);
|
||||
}, [context, isConnected, address, connectors]);
|
||||
|
||||
/**
|
||||
* Auto-connect when Farcaster context is available.
|
||||
*
|
||||
|
||||
@ -90,3 +90,12 @@ export const APP_WEBHOOK_URL = process.env.NEYNAR_API_KEY && process.env.NEYNAR_
|
||||
* Useful for mini apps that don't require wallet integration.
|
||||
*/
|
||||
export const USE_WALLET = true;
|
||||
|
||||
/**
|
||||
* Flag to enable/disable analytics tracking.
|
||||
*
|
||||
* When true, usage analytics are collected and sent to Neynar.
|
||||
* When false, analytics collection is disabled.
|
||||
* Useful for privacy-conscious users or development environments.
|
||||
*/
|
||||
export const ANALYTICS_ENABLED = true;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user