File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
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,
}
}