// ============================================================
// HomeContext — 首页共享状态（Context + Provider + Hook）
//
// 原与 HomeContent.tsx 耦合在同一文件，现独立以便：
//   - 消费者可以明确只 import 状态 Hook，不关心布局细节
//   - 新增 consumer 时不需要翻阅 358 行 HomeContent
// ============================================================

import { createContext, useContext } from 'react';
import type { ModelsListResponseBody } from '@/modules/home/controllers/model-api';
import type { TaskInfoItemResponseBody } from '@/modules/home/controllers/task-api';

// ---------- Context 类型 ----------

export interface HomeContextValue {
   /** 当前选中的模型 */
   selectedModel: ModelsListResponseBody | null;
   setSelectedModel: (model: ModelsListResponseBody | null) => void;
   /** 任务记录分页 — 当前页码 */
   taskPage: number;
   /** 任务记录分页 — 每页条数 */
   taskPageSize: number;
   setTaskPage: (page: number) => void;
   setTaskPageSize: (size: number) => void;
   /** 当前选中的任务记录（用于右侧预览） */
   selectedTask: TaskInfoItemResponseBody | null;
   setSelectedTask: (task: TaskInfoItemResponseBody | null) => void;
   /** 侧边栏折叠状态 */
   isLeftCollapsed: boolean;
   toggleLeftCollapsed: () => void;
}

export const HomeContext = createContext<HomeContextValue | null>(null);

// ---------- Consumer Hook ----------

export function useHomeContext(): HomeContextValue {
   const ctx = useContext(HomeContext);
   if (!ctx) {
      throw new Error('useHomeContext() 必须在 <HomeContent> 内部调用');
   }
   return ctx;
}
