forked from 77media/video-flow
移除 useScriptData 自定义 Hook,统一在 workflow hook里处理
This commit is contained in:
parent
526b4d5cd1
commit
27c8991bea
@ -13,7 +13,6 @@ import { usePlaybackControls } from "./work-flow/use-playback-controls";
|
||||
import { AlertCircle, RefreshCw, Pause, Play, ChevronLast } from "lucide-react";
|
||||
import { motion } from "framer-motion";
|
||||
import { GlassIconButton } from '@/components/ui/glass-icon-button';
|
||||
import { useScriptData } from "./work-flow/use-script-data";
|
||||
|
||||
export default function WorkFlow() {
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
@ -23,6 +22,7 @@ export default function WorkFlow() {
|
||||
// 使用自定义 hooks 管理状态
|
||||
const {
|
||||
taskObject,
|
||||
scriptData,
|
||||
taskSketch,
|
||||
taskScenes,
|
||||
taskShotSketch,
|
||||
@ -57,10 +57,6 @@ export default function WorkFlow() {
|
||||
playTimerRef,
|
||||
} = usePlaybackControls(taskSketch, taskVideos, currentStep);
|
||||
|
||||
const {
|
||||
scriptData
|
||||
} = useScriptData();
|
||||
|
||||
// 跟踪是否已经自动开始播放过,避免重复触发
|
||||
const hasAutoStartedRef = useRef(false);
|
||||
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
|
||||
|
||||
import { useEffect, useState } from "react";
|
||||
import { useScriptService } from "@/app/service/Interaction/ScriptService";
|
||||
import { useSearchParams } from 'next/navigation';
|
||||
|
||||
export const useScriptData = () => {
|
||||
const searchParams = useSearchParams();
|
||||
const projectId = searchParams.get('episodeId') || '';
|
||||
|
||||
const {
|
||||
loading, // 加载状态
|
||||
synopsis, //故事梗概
|
||||
categories, //故事分类
|
||||
protagonist, //主角
|
||||
incitingIncident, //激励事件
|
||||
problem, //问题与新目标
|
||||
conflict, //冲突与障碍
|
||||
stakes, //赌注
|
||||
characterArc, //人物弧线完成
|
||||
planId, //计划ID
|
||||
aiOptimizing, //AI优化要求
|
||||
scriptBlocksMemo, // 渲染数据
|
||||
initializeFromProject,
|
||||
} = useScriptService();
|
||||
|
||||
const [scriptData, setScriptData] = useState<any>(null);
|
||||
|
||||
// 初始化剧本
|
||||
useEffect(() => {
|
||||
initializeFromProject(projectId);
|
||||
}, []);
|
||||
|
||||
// 监听剧本加载完毕
|
||||
useEffect(() => {
|
||||
if (!loading) {
|
||||
console.log('scriptBlocksMemo', scriptBlocksMemo);
|
||||
}
|
||||
}, [loading, scriptBlocksMemo]);
|
||||
|
||||
return {
|
||||
scriptData
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ import { useSearchParams } from 'next/navigation';
|
||||
import { detailScriptEpisodeNew, getScriptTitle, getRunningStreamData } from '@/api/video_flow';
|
||||
import { useAppDispatch, useAppSelector } from '@/lib/store/hooks';
|
||||
import { setSketchCount, setVideoCount } from '@/lib/store/workflowSlice';
|
||||
import { useScriptService } from "@/app/service/Interaction/ScriptService";
|
||||
|
||||
// 步骤映射
|
||||
const STEP_MAP = {
|
||||
@ -53,10 +54,12 @@ interface TaskObject {
|
||||
|
||||
export function useWorkflowData() {
|
||||
const searchParams = useSearchParams();
|
||||
const episodeId = searchParams.get('episodeId');
|
||||
const episodeId = searchParams.get('episodeId') || '';
|
||||
|
||||
// 更新 taskObject 的类型
|
||||
const [taskObject, setTaskObject] = useState<TaskObject | null>(null);
|
||||
const [originalText, setOriginalText] = useState<string>('');
|
||||
const [scriptData, setScriptData] = useState<any>(null);
|
||||
const [taskSketch, setTaskSketch] = useState<any[]>([]);
|
||||
const [taskScenes, setTaskScenes] = useState<any[]>([]);
|
||||
const [taskShotSketch, setTaskShotSketch] = useState<any[]>([]);
|
||||
@ -79,6 +82,23 @@ export function useWorkflowData() {
|
||||
const dispatch = useAppDispatch();
|
||||
const { sketchCount, videoCount } = useAppSelector((state) => state.workflow);
|
||||
|
||||
const {
|
||||
loading, // 加载状态
|
||||
scriptBlocksMemo, // 渲染剧本数据
|
||||
initializeFromProject,
|
||||
} = useScriptService();
|
||||
// 初始化剧本
|
||||
useEffect(() => {
|
||||
console.log('开始初始化剧本', originalText);
|
||||
initializeFromProject(episodeId);
|
||||
}, [originalText]);
|
||||
// 监听剧本加载完毕
|
||||
useEffect(() => {
|
||||
if (!loading) {
|
||||
console.log('scriptBlocksMemo', scriptBlocksMemo);
|
||||
}
|
||||
}, [loading, scriptBlocksMemo]);
|
||||
|
||||
// 自动开始播放一轮
|
||||
const autoPlaySketch = useCallback(() => {
|
||||
return new Promise<void>((resolve) => {
|
||||
@ -355,8 +375,9 @@ export function useWorkflowData() {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
|
||||
const { name, status, data, tags, mode } = response.data;
|
||||
const { name, status, data, tags, mode, original_text } = response.data;
|
||||
setMode(mode);
|
||||
setOriginalText(original_text);
|
||||
setIsLoading(false);
|
||||
|
||||
// 设置初始数据
|
||||
@ -556,6 +577,7 @@ export function useWorkflowData() {
|
||||
|
||||
return {
|
||||
taskObject,
|
||||
scriptData,
|
||||
taskSketch,
|
||||
taskScenes,
|
||||
taskShotSketch,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user