import { useMemo } from 'react' import { useSessionListQuery } from '@/apis' import { useListStore } from '@/features/list/stores/useListStore' import { deadlineToOrder, statusLabelToCode, toListItem } from '@/features/list/lib/adapter' const PAGE_SIZE = 20 // 필터/정렬/페이지는 서버에 위임하고, 응답(정수 코드)을 화면용 라벨로 변환한다. export function useList() { const { selectedStatus, selectedDeadline, currentPage, setCurrentPage } = useListStore() const query = useSessionListQuery({ status: selectedStatus ? statusLabelToCode(selectedStatus) : undefined, order: selectedDeadline ? deadlineToOrder(selectedDeadline) : undefined, page: currentPage, page_size: PAGE_SIZE, }) const items = useMemo(() => (query.data?.items ?? []).map(toListItem), [query.data]) const totalPages = Math.max(1, Math.ceil((query.data?.total ?? 0) / PAGE_SIZE)) return { items, isLoading: query.isLoading, totalPages, currentPage, setCurrentPage } }