|
|
@@ -1,6 +1,6 @@
|
|
|
'use client';
|
|
|
|
|
|
-import { useState, useCallback, useEffect, useRef } from 'react';
|
|
|
+import { useState, useCallback, useEffect } from 'react';
|
|
|
import { RefreshCw, ChevronRight, ChevronLeft, Plus, Loader2, AlertCircle, CheckSquare, Square } from 'lucide-react';
|
|
|
|
|
|
interface ApiSettings {
|
|
|
@@ -42,17 +42,17 @@ export default function Step2EmbedHooks({
|
|
|
const [manualHook, setManualHook] = useState('');
|
|
|
const [manualHooks, setManualHooks] = useState<string[]>(savedManualHooks);
|
|
|
const [tokenUsage, setTokenUsage] = useState<string | null>(null);
|
|
|
- const autoModeStartedRef = useRef(false);
|
|
|
- const generateHooksRef = useRef<() => Promise<void>>(async () => {});
|
|
|
+ const [autoGenerate, setAutoGenerate] = useState(false);
|
|
|
|
|
|
- // Auto-mode: auto-trigger generation on mount
|
|
|
useEffect(() => {
|
|
|
- if (autoMode && apiSettings && !autoModeStartedRef.current) {
|
|
|
- autoModeStartedRef.current = true;
|
|
|
- const timer = setTimeout(() => generateHooksRef.current(), 300);
|
|
|
- return () => clearTimeout(timer);
|
|
|
+ if (autoMode && apiSettings && !autoGenerate) {
|
|
|
+ setAutoGenerate(true);
|
|
|
}
|
|
|
- }, [autoMode, apiSettings]);
|
|
|
+ }, [autoMode, apiSettings, autoGenerate]);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ if (autoGenerate) generateHookOptions();
|
|
|
+ }, [autoGenerate]);
|
|
|
|
|
|
// Auto-mode: auto-advance after hooks are generated
|
|
|
useEffect(() => {
|
|
|
@@ -129,8 +129,6 @@ ${chapterPlanSummary}
|
|
|
}
|
|
|
}, [apiSettings, chapterPlanSummary]);
|
|
|
|
|
|
- generateHooksRef.current = generateHookOptions;
|
|
|
-
|
|
|
const toggleHook = (id: string) => {
|
|
|
setSelectedHookIds((prev) => {
|
|
|
const next = new Set(prev);
|