import { useState, useCallback } from "react"; import type { KisRuntimeCredentials } from "@/features/dashboard/store/use-kis-runtime-store"; import type { DashboardStockCashOrderRequest, DashboardStockCashOrderResponse, } from "@/features/dashboard/types/dashboard.types"; import { fetchOrderCash } from "@/features/dashboard/apis/kis-stock.api"; export function useOrder() { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [result, setResult] = useState( null, ); const placeOrder = useCallback( async ( request: DashboardStockCashOrderRequest, credentials: KisRuntimeCredentials | null, ) => { if (!credentials) { setError("KIS API 자격 증명이 없습니다."); return null; } setIsLoading(true); setError(null); setResult(null); try { const data = await fetchOrderCash(request, credentials); setResult(data); return data; } catch (err) { const message = err instanceof Error ? err.message : "주문 처리 중 오류가 발생했습니다."; setError(message); return null; } finally { setIsLoading(false); } }, [], ); const reset = useCallback(() => { setError(null); setResult(null); setIsLoading(false); }, []); return { placeOrder, isLoading, error, result, reset, }; }