"use client"; import { useState, useRef, useEffect } from "react"; import { Table, AlignHorizontalSpaceAround, Loader2, Clapperboard, CreditCard } from "lucide-react"; import "./style/home-page2.css"; import { useRouter, useSearchParams } 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 searchParams = useSearchParams(); 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 [showPaymentSuccess, setShowPaymentSuccess] = useState(false); const [paymentData, setPaymentData] = useState(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(() => { const sessionId = searchParams.get('session_id'); const payment = searchParams.get('payment'); if (sessionId && payment === 'success') { // 显示支付成功提示 setShowPaymentSuccess(true); // 获取支付详情 fetchPaymentDetails(sessionId); // 清除URL参数,避免刷新页面时重复显示 const newUrl = new URL(window.location.href); newUrl.searchParams.delete('session_id'); newUrl.searchParams.delete('payment'); window.history.replaceState({}, '', newUrl.pathname); } }, [searchParams]); // 获取支付详情 const fetchPaymentDetails = async (sessionId: string) => { try { const response = await fetch(`/api/payment/checkout-status/${sessionId}?user_id=test_user_123`); const result = await response.json(); if (result.successful && result.data) { setPaymentData(result.data); } } catch (error) { console.error('获取支付详情失败:', error); } }; // 组件挂载时获取资源 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 (
{/* 支付成功提示 */} {showPaymentSuccess && paymentData && (

支付成功!

您的订阅已激活,订单号: {paymentData.biz_order_no}

)}
{/* 工具栏-列表形式切换 */}
{ e.stopPropagation(); handleToolChange(activeTool === "stretch" ? "right" : "left"); }} >
{/* 水滴动画 */} {/* 屏风式视频布局 */}
{/* 网格式视频布局 */}
{/* Pricing 入口 */}
{ e.stopPropagation(); router.push('/pricing'); }}> Pricing
{ e.stopPropagation(); handleCreateProject(); }}> {isCreating ? ( ) : ( )} {isCreating ? "Action..." : "Action"}
); }