"use client"; import { useState, useRef, useEffect } from "react"; import { Table, AlignHorizontalSpaceAround, Loader2, Clapperboard } from "lucide-react"; import "./style/home-page2.css"; import { useRouter } from "next/navigation"; import { VideoCarouselLayout } from '@/components/video-carousel-layout'; import { VideoGridLayout } from '@/components/video-grid-layout'; import { motion, AnimatePresence } from "framer-motion"; import { LiquidButton } from "@/components/ui/liquid-glass-button"; import { createScriptProject, CreateScriptProjectRequest } from '@/api/script_project'; import { ProjectTypeEnum, ModeEnum, ResolutionEnum } from '@/app/model/enums'; import { getResourcesList, Resource } from '@/api/resources'; export function HomePage2() { const router = useRouter(); const [activeTool, setActiveTool] = useState("stretch"); const [dropPosition, setDropPosition] = useState<"left" | "right">("left"); const [isCreating, setIsCreating] = useState(false); const [createdProjectId, setCreatedProjectId] = useState(null); const [resources, setResources] = useState([]); const [isLoadingResources, setIsLoadingResources] = useState(false); const containerRef = useRef(null); // 将资源数据转换为视频格式 const videos = resources.map(resource => ({ id: resource.id.toString(), url: resource.url, title: resource.title })); // 获取资源列表 const fetchResources = async () => { try { setIsLoadingResources(true); const response = await getResourcesList({ published: 1 }); console.log(response); if (response.code === 0) { setResources(response.data); } else { console.error('获取资源列表失败:', response.message); } } catch (error) { console.error('获取资源列表出错:', error); } finally { setIsLoadingResources(false); } }; // 组件挂载时获取资源 useEffect(() => { fetchResources(); }, []); // 处理编辑视频 const handleEdit = (id: string) => { // TODO: 实现编辑功能 }; // 处理删除视频 const handleDelete = (id: string) => { // TODO: 实现删除功能 }; // 处理创建项目 const handleCreateProject = async () => { // console.log('isCreating', isCreating); router.push(`/create`); // if (isCreating) return; // try { // setIsCreating(true); // router.push(`/create`); // return; // // 使用默认值 // const projectType = ProjectTypeEnum.SCRIPT_TO_VIDEO; // // 构建项目数据并调用API // const projectData: CreateScriptProjectRequest = { // title: "script default", // 默认剧本名称 // project_type: projectType, // mode: ModeEnum.MANUAL === 'manual' ? 1 : 2, // 1 表示手动模式,2 表示自动模式 // resolution: 1080 // 1080p 分辨率 // }; // const projectResponse = await createScriptProject(projectData); // if (projectResponse.code === 0 && projectResponse.data.id) { // const projectId = projectResponse.data.id; // setCreatedProjectId(projectId); // // projectId 作为参数传递给 create 页面 // router.push(`/create?projectId=${projectId}`); // } else { // alert(`创建项目失败: ${projectResponse.message}`); // } // } catch (error) { // alert("创建项目时发生错误,请稍后重试"); // } finally { // setIsCreating(false); // } }; // 处理工具切换 const handleToolChange = (position: "left" | "right") => { setDropPosition(position); setActiveTool(position === "left" ? "stretch" : "table"); }; return (
{/* 工具栏-列表形式切换 */}
{ e.stopPropagation(); handleToolChange(activeTool === "stretch" ? "right" : "left"); }} >
{/* 水滴动画 */} {/* 屏风式视频布局 */}
{/* 网格式视频布局 */}
{ e.stopPropagation(); handleCreateProject(); }}> {isCreating ? ( ) : ( )} {isCreating ? "Action..." : "Action"}
); }