Harden audio-only script flow and mode propagation
This commit is contained in:
@@ -289,6 +289,7 @@ const PodcastDashboard: React.FC = () => {
|
||||
knobs={knobsState}
|
||||
speakers={project.speakers}
|
||||
durationMinutes={project.duration}
|
||||
podcastMode={project?.podcastMode || "video_only"}
|
||||
script={scriptData}
|
||||
analysis={analysis}
|
||||
outline={analysis?.suggestedOutlines?.[0]}
|
||||
|
||||
@@ -452,6 +452,7 @@ export const usePodcastWorkflow = ({ projectState, onError }: UsePodcastWorkflow
|
||||
knobs: projectState.knobs,
|
||||
speakers: project.speakers,
|
||||
durationMinutes: project.duration,
|
||||
podcastMode: (project as any)?.podcastMode || "video_only",
|
||||
bible: projectState.bible,
|
||||
outline: analysis?.suggestedOutlines?.[0],
|
||||
analysis: analysis,
|
||||
|
||||
@@ -25,6 +25,7 @@ interface ScriptEditorProps {
|
||||
avatarUrl?: string | null; // Base avatar URL for consistent scene image generation
|
||||
analysis?: any;
|
||||
outline?: any;
|
||||
podcastMode?: "audio_only" | "video_only" | "audio_video";
|
||||
}
|
||||
|
||||
export const ScriptEditor: React.FC<ScriptEditorProps> = ({
|
||||
@@ -43,6 +44,7 @@ export const ScriptEditor: React.FC<ScriptEditorProps> = ({
|
||||
avatarUrl,
|
||||
analysis,
|
||||
outline,
|
||||
podcastMode = "video_only",
|
||||
}) => {
|
||||
const [script, setScript] = useState<Script | null>(initialScript);
|
||||
const [loading, setLoading] = useState(false);
|
||||
@@ -93,6 +95,7 @@ export const ScriptEditor: React.FC<ScriptEditorProps> = ({
|
||||
knobs,
|
||||
speakers,
|
||||
durationMinutes,
|
||||
podcastMode,
|
||||
analysis,
|
||||
outline,
|
||||
})
|
||||
@@ -112,7 +115,7 @@ export const ScriptEditor: React.FC<ScriptEditorProps> = ({
|
||||
return () => {
|
||||
mounted = false;
|
||||
};
|
||||
}, [projectId, rawResearch, idea, knobs, speakers, durationMinutes, analysis, outline, emitScriptChange, onError, script]);
|
||||
}, [projectId, rawResearch, idea, knobs, speakers, durationMinutes, podcastMode, analysis, outline, emitScriptChange, onError, script]);
|
||||
|
||||
const updateScene = (updated: Scene) => {
|
||||
// Use functional update to ensure we're working with latest state
|
||||
@@ -837,4 +840,3 @@ export const ScriptEditor: React.FC<ScriptEditorProps> = ({
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -208,6 +208,7 @@ export const ScriptEditorProvider: React.FC<ScriptEditorProviderProps> = ({
|
||||
knobs,
|
||||
speakers,
|
||||
durationMinutes,
|
||||
podcastMode,
|
||||
analysis,
|
||||
outline,
|
||||
})
|
||||
@@ -547,4 +548,4 @@ export const useScriptEditor = (): ScriptEditorContextType => {
|
||||
throw new Error("useScriptEditor must be used within ScriptEditorProvider");
|
||||
}
|
||||
return context;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
Knobs,
|
||||
PodcastAnalysis,
|
||||
PodcastEstimate,
|
||||
PodcastMode,
|
||||
Query,
|
||||
RenderJobResult,
|
||||
Research,
|
||||
@@ -403,6 +404,7 @@ export const podcastApi = {
|
||||
knobs: Knobs;
|
||||
speakers: number;
|
||||
durationMinutes: number;
|
||||
podcastMode?: PodcastMode;
|
||||
bible?: any;
|
||||
outline?: any;
|
||||
analysis?: PodcastAnalysis | null;
|
||||
@@ -427,6 +429,7 @@ export const podcastApi = {
|
||||
bible: params.bible,
|
||||
outline: params.outline,
|
||||
analysis: params.analysis,
|
||||
podcast_mode: params.podcastMode || "video_only",
|
||||
});
|
||||
|
||||
if (params.onProgress) {
|
||||
@@ -453,6 +456,7 @@ export const podcastApi = {
|
||||
},
|
||||
],
|
||||
approved: false,
|
||||
chart_data: scene.chart_data || scene.chartData || undefined,
|
||||
}));
|
||||
|
||||
return { scenes: scriptScenes };
|
||||
|
||||
Reference in New Issue
Block a user