Skip to content

Commit

Permalink
πŸ› μ–΄λ“œλ―Ό κ²€μˆ˜ (#299)
Browse files Browse the repository at this point in the history
  • Loading branch information
Limchansol authored Feb 1, 2025
1 parent 6142bb3 commit 0aff5ba
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 41 deletions.
26 changes: 10 additions & 16 deletions actions/admin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import { revalidateTag } from 'next/cache';

import { ImportantPostIdentifier } from '@/apis/types/admin';
import { patchMultipleImportants } from '@/apis/v1/admin/important';
import { patchMultipleSlides } from '@/apis/v1/admin/slide';
import { patchMultipleImportants } from '@/apis/v2/admin/important';
import { patchMultipleSlides } from '@/apis/v2/admin/slide';
import {
FETCH_TAG_IMPORANT,
FETCH_TAG_NEWS,
Expand All @@ -13,28 +13,22 @@ import {
FETCH_TAG_SLIDE,
} from '@/constants/network';

export const batchUnslideAction = async (ids: number[]) => {
try {
await patchMultipleSlides(Array.from(ids));
} catch (e) {
return e;
}
import { withErrorHandler } from './errorHandler';

export const batchUnslideAction = withErrorHandler(async (ids: number[]) => {
await patchMultipleSlides(Array.from(ids));

revalidateTag(FETCH_TAG_SLIDE);
revalidateTag(FETCH_TAG_NEWS);
revalidateTag(FETCH_TAG_NOTICE);
revalidateTag(FETCH_TAG_SEMINAR);
};
});

export const batchUnimportantAction = async (infos: ImportantPostIdentifier[]) => {
try {
await patchMultipleImportants(infos);
} catch (e) {
return e;
}
export const batchUnimportantAction = withErrorHandler(async (infos: ImportantPostIdentifier[]) => {
await patchMultipleImportants(infos);

revalidateTag(FETCH_TAG_IMPORANT);
revalidateTag(FETCH_TAG_NEWS);
revalidateTag(FETCH_TAG_NOTICE);
revalidateTag(FETCH_TAG_SEMINAR);
};
});
4 changes: 2 additions & 2 deletions apis/v1/admin/important.ts β†’ apis/v2/admin/important.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { ImportantPreview } from '@/apis/types/admin';

export const getImportants = (pageNum: number) =>
getRequest(
'/v1/admin/important',
'/v2/admin/important',
{ pageNum },
{ next: { tags: ['important'] }, jsessionID: true },
) as Promise<{
Expand All @@ -12,7 +12,7 @@ export const getImportants = (pageNum: number) =>
}>;

export const patchMultipleImportants = (targetInfos: { id: number; category: string }[]) =>
patchRequest('/v1/admin/important', {
patchRequest('/v2/admin/important', {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ targetInfos }),
jsessionID: true,
Expand Down
4 changes: 2 additions & 2 deletions apis/v1/admin/slide.ts β†’ apis/v2/admin/slide.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import { SlidePreview } from '@/apis/types/admin';

export const getSlides = (pageNum: number) =>
getRequest(
'/v1/admin/slide',
'/v2/admin/slide',
{ pageNum },
{ next: { tags: ['slide'] }, jsessionID: true },
) as Promise<{ slides: SlidePreview[]; total: number }>;

export const patchMultipleSlides = (newsIdList: number[]) =>
patchRequest('/v1/admin/slide', {
patchRequest('/v2/admin/slide', {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ newsIdList }),
jsessionID: true,
Expand Down
14 changes: 6 additions & 8 deletions app/[locale]/admin/helper/important/ImportantManagement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { ImportantPreview } from '@/apis/types/admin';
import Pagination from '@/components/common/Pagination';
import AlertModal from '@/components/modal/AlertModal';
import useModal from '@/utils/hooks/useModal';
import { errorToast, successToast } from '@/utils/toast';
import { handleServerResponse } from '@/utils/serverActionError';

import BatchAction from '../BatchAction';
import TotalPostsCount from '../TotalPostsCount';
Expand All @@ -24,13 +24,11 @@ export default function ImportantManagement({ posts, total }: ImportantManagemen
const { openModal } = useModal();

const handleBatchUnimportant = async () => {
const result = await batchUnimportantAction(ids);
if (result) {
errorToast('μ€‘μš” μ•ˆλ‚΄λ₯Ό ν•΄μ œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.');
} else {
successToast('μ€‘μš” μ•ˆλ‚΄λ₯Ό ν•΄μ œν–ˆμŠ΅λ‹ˆλ‹€.');
dispatchIds({ type: 'RESET' });
}
const resp = await batchUnimportantAction(ids);
handleServerResponse(resp, {
successMessage: 'μ€‘μš” μ•ˆλ‚΄λ₯Ό ν•΄μ œν–ˆμŠ΅λ‹ˆλ‹€.',
onSuccess: () => dispatchIds({ type: 'RESET' }),
});
};

return (
Expand Down
14 changes: 6 additions & 8 deletions app/[locale]/admin/helper/slide/SlideManagement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { SlidePreview } from '@/apis/types/admin';
import Pagination from '@/components/common/Pagination';
import AlertModal from '@/components/modal/AlertModal';
import useModal from '@/utils/hooks/useModal';
import { errorToast, successToast } from '@/utils/toast';
import { handleServerResponse } from '@/utils/serverActionError';

import BatchAction from '../BatchAction';
import TotalPostsCount from '../TotalPostsCount';
Expand All @@ -26,13 +26,11 @@ export default function SlideManagement({ posts, total }: SlideManagementProps)
const resetSelectedPosts = () => dispatchIds({ type: 'RESET' });

const handleBatchUnslide = async () => {
const result = await batchUnslideAction([...ids]);
if (result) {
errorToast('μŠ¬λΌμ΄λ“œλ₯Ό ν•΄μ œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.');
} else {
successToast('μŠ¬λΌμ΄λ“œλ₯Ό ν•΄μ œν–ˆμŠ΅λ‹ˆλ‹€.');
resetSelectedPosts();
}
const resp = await batchUnslideAction([...ids]);
handleServerResponse(resp, {
successMessage: 'μŠ¬λΌμ΄λ“œλ₯Ό ν•΄μ œν–ˆμŠ΅λ‹ˆλ‹€.',
onSuccess: resetSelectedPosts,
});
};

return (
Expand Down
8 changes: 4 additions & 4 deletions app/[locale]/admin/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ADMIN_MENU_IMPORTANT, ADMIN_MENU_SLIDE } from '@/apis/types/admin';
import { getImportants } from '@/apis/v1/admin/important';
import { getSlides } from '@/apis/v1/admin/slide';
import { getImportants } from '@/apis/v2/admin/important';
import { getSlides } from '@/apis/v2/admin/slide';
import ImportantManagement from '@/app/[locale]/admin/helper/important/ImportantManagement';
import SlideManagement from '@/app/[locale]/admin/helper/slide/SlideManagement';
import LoginVisible from '@/components/common/LoginVisible';
Expand Down Expand Up @@ -31,7 +31,7 @@ export default async function AdminPage(props: AdminPageProps) {
<PageLayout title="κ΄€λ¦¬μž 메뉴" titleType="big" titleMargin="mb-9">
<LoginVisible staff fallback={<p>κ΄€λ¦¬μžλ§Œ μ‚¬μš©ν•  수 μžˆλŠ” νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.</p>}>
<SelectionList
names={[{ ko: 'μŠ¬λΌμ΄λ“œμ‡Ό 관리' }, { ko: 'μ€‘μš” μ•ˆλ‚΄ 관리' }]}
names={[{ ko: ADMIN_MENU_SLIDE }, { ko: ADMIN_MENU_IMPORTANT }]}
selectedItemNameKo={selectedMenu}
rootPath={adminPath}
listGridColumnClass="grid-cols-[200px_220px]"
Expand All @@ -43,7 +43,7 @@ export default async function AdminPage(props: AdminPageProps) {
}

const PageContent = async ({ selected, pageNum }: { selected: string; pageNum: number }) => {
if (selected === 'μŠ¬λΌμ΄λ“œμ‡Ό 관리') {
if (selected === ADMIN_MENU_SLIDE) {
const { slides, total } = await getSlides(pageNum);
return <SlideManagement posts={slides} total={total} />;
} else {
Expand Down
2 changes: 1 addition & 1 deletion public/image/checkbox_orange.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 0aff5ba

Please sign in to comment.