import {useMemo, useState} from "react"; import {ADMIN_BBS_MASTER_ROUTE} from "../../../../route/adminRouteMap.ts"; import {useCheckedList} from "../../../../hook/useCheckedList.ts"; import type {BoardArticleSearchParams} from "../../type/board.types.ts"; import {useBoardArticleList} from "../query/useBoardArticleList.ts"; const initSearchParam: BoardArticleSearchParams = { pageIndex: 1, pageUnit: 10, searchCnd: "0", searchKeyword: "", searchSortCnd: "FRST_REGIST_PNTTM", searchSortOrd: "ASC", bbsId: "" }; const searchOptions = [ {value: '0', label: '제목'}, {value: '1', label: '내용'}, {value: '2', label: '작성자'}, ]; export const useBoardArticleListPage = (bbsId: string) => { const [searchDraft, setSearchDraft] = useState(initSearchParam); const searchParams = useMemo( () => ({ ...searchDraft, bbsId, }), [bbsId, searchDraft] ); const { list, extraData, totalItems, currentPage, totalPages, size, isLoading, error } = useBoardArticleList(searchParams); const articleIds = useMemo( () => list.map((item) => item.nttId), [list] ); const { checkedIds, isAllChecked, isPartiallyChecked, isChecked, handleCheck, handleCheckAll, resetChecked, } = useCheckedList(articleIds); const bbsNm = extraData?.boardMaster?.bbsNm ?? ''; const bbsTyCode = extraData?.boardMaster?.bbsTyCode ?? ''; const title = `${bbsNm || '게시글'} 목록`; const breadcrumb = [ {label: '게시판 관리', url: ADMIN_BBS_MASTER_ROUTE}, {label: title} ]; const successMessage = bbsNm ? `${bbsNm} 목록을 불러왔습니다.` : '게시글 목록을 불러왔습니다.'; const handleSearchChange = (params: BoardArticleSearchParams) => { setSearchDraft({ ...params, bbsId: "", }); }; const handlePageChange = (pageIndex: number) => { setSearchDraft((prev) => ({ ...prev, pageIndex, })); }; return { title, breadcrumb, searchOptions, searchParams, list, bbsTyCode, totalItems, currentPage, totalPages, size, isLoading, error, successMessage, checkedIds, isAllChecked, isPartiallyChecked, isChecked, handleCheck, handleCheckAll, resetChecked, handleSearchChange, handlePageChange, }; };