diff --git a/src/providers/PromptOptimizerProvider.tsx b/src/providers/PromptOptimizerProvider.tsx new file mode 100644 index 0000000..a7004a2 --- /dev/null +++ b/src/providers/PromptOptimizerProvider.tsx @@ -0,0 +1,45 @@ +'use client'; + +import { createContext, useContext, useState, useCallback, type ReactNode } from 'react'; + +interface PromptOptimizerContextType { + // 优化后的提示词(用于填入输入框) + optimizedPrompt: string | null; + // 设置优化后的提示词 + setOptimizedPrompt: (prompt: string | null) => void; + // 消费优化后的提示词(获取后清空) + consumeOptimizedPrompt: () => string | null; +} + +const PromptOptimizerContext = createContext(null); + +export function PromptOptimizerProvider({ children }: { children: ReactNode }) { + const [optimizedPrompt, setOptimizedPrompt] = useState(null); + + // 消费优化后的提示词(获取后清空,避免重复使用) + const consumeOptimizedPrompt = useCallback(() => { + const prompt = optimizedPrompt; + setOptimizedPrompt(null); + return prompt; + }, [optimizedPrompt]); + + return ( + + {children} + + ); +} + +export function usePromptOptimizer() { + const context = useContext(PromptOptimizerContext); + if (!context) { + throw new Error('usePromptOptimizer must be used within a PromptOptimizerProvider'); + } + return context; +} diff --git a/src/providers/index.ts b/src/providers/index.ts index 662ea48..5d51b45 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -1 +1,2 @@ export { AuthProvider, useAuth, type AuthUser } from './AuthProvider'; +export { PromptOptimizerProvider, usePromptOptimizer } from './PromptOptimizerProvider';