import {useMemo, useState} from "react"; import type {BoardSearchParams} from "../../type/board.types.ts"; import {useBoardList} from "../query/useBoardList.ts"; import {ADMIN_BBS_ARTICLE_DETAIL_ROUTE, ADMIN_BBS_ARTICLE_LIST_ROUTE} from "../../../../route/adminRouteMap.ts"; import {useNavigate} from "react-router-dom"; import {useCheckedList} from "../../../../hook/useCheckedList.ts"; import {toast} from "react-toastify"; const initSearchParam: BoardSearchParams = { pageIndex: 1, pageUnit: 10, searchCnd: "0", searchKeyword: "", searchSortCnd: "BBS_NM", searchSortOrd: "ASC" } const searchOptions = [ {value: '0', label: '게시판명/연결메뉴'}, {value: '1', label: '게시판유형'}, ] const pageSizeOptions = [ {value: '10', label: '10건씩'}, {value: '20', label: '20건씩'}, {value: '30', label: '30건씩'}, ] export const useBoardListPage = () => { const [searchParams, setSearchParams] = useState(initSearchParam); const { list, totalItems, totalPages, currentPage, size, isLoading, error } = useBoardList(searchParams); const boardIds = useMemo( () => list.map((item) => item.bbsId), [list] ); const { checkedIds, isAllChecked, isPartiallyChecked, isChecked, handleCheck, handleCheckAll, resetChecked, } = useCheckedList(boardIds); const title = '게시판 관리'; const breadcrumb = [{label: '게시판 관리'}]; const homeUrl = '#'; const successMessage = "게시판을 조회하였습니다."; const navigate = useNavigate(); const handleDetail = (bbsId: string) => { navigate(ADMIN_BBS_ARTICLE_DETAIL_ROUTE + bbsId); } const handleArticleList = (bbsId: string) => { navigate(ADMIN_BBS_ARTICLE_LIST_ROUTE + bbsId); } const handlePreview = (bbsId: string) => { navigate(`/preview/${bbsId}`); } const handlePageChange = (pageIndex: number) => { setSearchParams((prev) => ({ ...prev, pageIndex, })); } const handleDeleteBatch = () => { if (checkedIds.length === 0) { toast.warning('미사용 처리할 게시판을 선택해주세요.'); return; } else { toast.info("삭제로직은 아직 미처리"); } } const handleCreate = () => { navigate(ADMIN_BBS_ARTICLE_DETAIL_ROUTE); } return { list, totalItems, totalPages, currentPage, size, isLoading, error, title, breadcrumb, homeUrl, searchOptions, pageSizeOptions, successMessage, searchParams, setSearchParams, handleDetail, handleArticleList, handlePreview, handlePageChange, handleDeleteBatch, handleCreate, checkedIds, isAllChecked, isPartiallyChecked, isChecked, handleCheck, handleCheckAll, resetChecked, } }