Fix: Prevent duplicate script generation calls
- Add isGeneratingRef to track if generation is in progress - Guard against double calls by checking ref before starting - Reset ref in finally block to allow subsequent generations - This fixes the issue where script generation was called twice in succession
This commit is contained in:
@@ -344,13 +344,25 @@ export const usePodcastWorkflow = ({ projectState, onError }: UsePodcastWorkflow
|
|||||||
}
|
}
|
||||||
}, [isResearching, project, selectedQueries, queries, researchProvider, preflightCheck, analysis, setResearch, setRawResearch, setScriptData, setShowScriptEditor, setShowRenderQueue, projectState.bible]);
|
}, [isResearching, project, selectedQueries, queries, researchProvider, preflightCheck, analysis, setResearch, setRawResearch, setScriptData, setShowScriptEditor, setShowRenderQueue, projectState.bible]);
|
||||||
|
|
||||||
|
// Add a ref to track if we're currently generating to prevent double calls
|
||||||
|
const isGeneratingRef = React.useRef(false);
|
||||||
|
|
||||||
const handleGenerateScript = useCallback(async () => {
|
const handleGenerateScript = useCallback(async () => {
|
||||||
|
// Guard against double calls
|
||||||
|
if (isGeneratingRef.current) {
|
||||||
|
console.log('[ScriptGen] Already generating, skipping duplicate call');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (showScriptEditor) return;
|
if (showScriptEditor) return;
|
||||||
if (!project || !research) {
|
if (!project || !research) {
|
||||||
setAnnouncement("Project or research missing — cannot generate script");
|
setAnnouncement("Project or research missing — cannot generate script");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark as generating immediately
|
||||||
|
isGeneratingRef.current = true;
|
||||||
|
|
||||||
setPreflightOperationName("Script Generation");
|
setPreflightOperationName("Script Generation");
|
||||||
const preflightResult = await preflightCheck.check({
|
const preflightResult = await preflightCheck.check({
|
||||||
provider: "gemini",
|
provider: "gemini",
|
||||||
@@ -360,6 +372,7 @@ export const usePodcastWorkflow = ({ projectState, onError }: UsePodcastWorkflow
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!preflightResult.can_proceed) {
|
if (!preflightResult.can_proceed) {
|
||||||
|
isGeneratingRef.current = false; // Reset on preflight failure
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -401,8 +414,10 @@ export const usePodcastWorkflow = ({ projectState, onError }: UsePodcastWorkflow
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
setIsGeneratingScript(false);
|
setIsGeneratingScript(false);
|
||||||
announceError(setAnnouncement, setAnnouncementSeverityFn, error);
|
announceError(setAnnouncement, setAnnouncementSeverityFn, error);
|
||||||
|
} finally {
|
||||||
|
isGeneratingRef.current = false; // Reset when done
|
||||||
}
|
}
|
||||||
}, [showScriptEditor, project, research, preflightCheck, setScriptData, setShowRenderQueue, setShowScriptEditor, rawResearch, projectState.knobs, projectState.bible])
|
}, [showScriptEditor, project, research, preflightCheck, setScriptData, setShowRenderQueue, setShowScriptEditor, rawResearch, projectState.knobs, projectState.bible, analysis])
|
||||||
|
|
||||||
const handleProceedToRendering = useCallback((script: Script) => {
|
const handleProceedToRendering = useCallback((script: Script) => {
|
||||||
// Clear media cache for all scenes before proceeding to remove old blobs
|
// Clear media cache for all scenes before proceeding to remove old blobs
|
||||||
|
|||||||
Reference in New Issue
Block a user