diff --git a/src/bookmarks/api/bookmark.ts b/src/bookmarks/api/bookmark.ts index e4f5d442..39589a0a 100644 --- a/src/bookmarks/api/bookmark.ts +++ b/src/bookmarks/api/bookmark.ts @@ -176,10 +176,13 @@ export const useDELETEBookMarkMutation = ({ return useMutation(DELETEBookMarkList.API, { onSuccess: () => { queryClient.refetchQueries( - GET_BOOKMARK_LIST(userId, false, categoryId ?? 0), + GET_BOOKMARK_LIST(userId, true, categoryId ?? 0), ); queryClient.refetchQueries( - GET_BOOKMARK_LIST(userId, true, categoryId ?? 0), + GET_BOOKMARK_LIST(userId, null, categoryId ?? 0), + ); + queryClient.refetchQueries( + GET_BOOKMARK_LIST(userId, false, categoryId ?? 0), ); toast.fireToast({ message: '삭제 되었습니다', @@ -664,25 +667,37 @@ export const refetchAllBookmarkQuery = ({ queryClient.setQueryData>( GET_BOOKMARK_LIST(memberId, false, 0), (prev) => { - if (prev) { - if (!prev) return undefined; - return { - ...prev, - pages: prev.pages.map((page) => ({ - ...page, - contents: page.contents.map((bookmark) => { - if (bookmark.bookmarkId === Number(bookmarkId)) { - return { - ...bookmark, - readByUser: true, - }; - } - return bookmark; - }), - })), - }; - } - return prev; + return toggleBookmarkRead(prev, Number(bookmarkId)); + }, + ); + queryClient.setQueryData>( + GET_BOOKMARK_LIST(memberId, false, categoryId ?? 0), + (prev) => { + return toggleBookmarkRead(prev, Number(bookmarkId)); + }, + ); + queryClient.setQueryData>( + GET_BOOKMARK_LIST(memberId, true, 0), + (prev) => { + return toggleBookmarkRead(prev, Number(bookmarkId)); + }, + ); + queryClient.setQueryData>( + GET_BOOKMARK_LIST(memberId, true, categoryId ?? 0), + (prev) => { + return toggleBookmarkRead(prev, Number(bookmarkId)); + }, + ); + queryClient.setQueryData>( + GET_BOOKMARK_LIST(memberId, null, 0), + (prev) => { + return toggleBookmarkRead(prev, Number(bookmarkId)); + }, + ); + queryClient.setQueryData>( + GET_BOOKMARK_LIST(memberId, null, categoryId ?? 0), + (prev) => { + return toggleBookmarkRead(prev, Number(bookmarkId)); }, ); queryClient.refetchQueries(GET_BOOKMARK_LIST(memberId, true, 0)); @@ -699,6 +714,31 @@ export const refetchAllBookmarkQuery = ({ ); }; +const toggleBookmarkRead = ( + prev: InfiniteData | undefined, + bookmarkId: number, +) => { + if (prev) { + if (!prev) return undefined; + return { + ...prev, + pages: prev.pages.map((page) => ({ + ...page, + contents: page.contents.map((bookmark) => { + if (bookmark.bookmarkId === Number(bookmarkId)) { + return { + ...bookmark, + readByUser: true, + }; + } + return bookmark; + }), + })), + }; + } + return prev; +}; + // 북마크 수정 interface PUTBookmarkRequest { diff --git a/src/bookmarks/ui/Main/BookmarkListView.tsx b/src/bookmarks/ui/Main/BookmarkListView.tsx index 4313b491..203f0c57 100644 --- a/src/bookmarks/ui/Main/BookmarkListView.tsx +++ b/src/bookmarks/ui/Main/BookmarkListView.tsx @@ -5,10 +5,14 @@ import BookmarkItem from './BookmarkItem'; import BookmarkSkeletonItem from './BookmarkSkeletonItem'; import BlankItem from '@/common-ui/BlankItem'; import BookmarkEditItem from './BookmarkEditItem'; +import { + READ_OPTION, + READ_OPTIONS, +} from '@/bookmarks/service/hooks/home/useReadList'; interface BookmarkListViewProps { memberId: number; - isReadMode: boolean | null; + readMode: READ_OPTION; isEditMode: boolean; selectedCategory?: number | null; onClickBookmarkItemInEdit?: (bookmarkId: number) => void; @@ -16,13 +20,13 @@ interface BookmarkListViewProps { const BookmarkListView = ({ memberId, - isReadMode, + readMode, isEditMode, selectedCategory, onClickBookmarkItemInEdit, }: BookmarkListViewProps) => { const { bookMarkList, fetchNextPage, isFetchingNextPage } = useBookmarkList({ - readByUser: isReadMode, + readByUser: READ_OPTIONS[readMode], categoryId: selectedCategory, memberId, }); @@ -38,16 +42,17 @@ const BookmarkListView = ({ <> {!flatBookMarkList?.length && ( <> - {!!isReadMode && } - {!isReadMode && } + {readMode === '📖 전체' && } + {readMode === '👀 읽음' && } + {readMode === '🫣 읽지 않음' && } )} {!isEditMode && !!flatBookMarkList?.length && ( bookmark.readByUser === isReadMode, + (bookmark) => bookmark.readByUser === READ_OPTIONS[readMode], ) : flatBookMarkList } @@ -59,9 +64,9 @@ const BookmarkListView = ({ {!!isEditMode && !!flatBookMarkList?.length && ( bookmark.readByUser === isReadMode, + (bookmark) => bookmark.readByUser === READ_OPTIONS[readMode], ) : flatBookMarkList } diff --git a/src/pages/FriendBookmarkPage.tsx b/src/pages/FriendBookmarkPage.tsx index 9db9e15c..e4c0322b 100644 --- a/src/pages/FriendBookmarkPage.tsx +++ b/src/pages/FriendBookmarkPage.tsx @@ -4,9 +4,7 @@ import styled from '@emotion/styled'; import BookmarkToggle from '@/bookmarks/ui/Main/BookmarkToggle'; import BookmarkUserInfo from '@/bookmarks/ui/BookmarkUserInfo'; import useCategory from '@/bookmarks/service/hooks/home/useCategory'; -import useReadList, { - READ_OPTIONS, -} from '@/bookmarks/service/hooks/home/useReadList'; +import useReadList from '@/bookmarks/service/hooks/home/useReadList'; import getRem from '@/utils/getRem'; import { useParams } from 'react-router-dom'; import Header from '@/common-ui/Header/Header'; @@ -149,7 +147,7 @@ const FriendBookmarkPage = () => { diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx index 6669984c..545f1a13 100644 --- a/src/pages/MainPage.tsx +++ b/src/pages/MainPage.tsx @@ -4,9 +4,7 @@ import BookmarkToggle from '@/bookmarks/ui/Main/BookmarkToggle'; import BookmarkUserInfo from '@/bookmarks/ui/BookmarkUserInfo'; import BookmarkBSDeleteConfirmation from '@/bookmarks/ui/Main/BookmarkBSDeleteConfirmation'; import useCategory from '@/bookmarks/service/hooks/home/useCategory'; -import useReadList, { - READ_OPTIONS, -} from '@/bookmarks/service/hooks/home/useReadList'; +import useReadList from '@/bookmarks/service/hooks/home/useReadList'; import useDeleteBookmarkList from '@/bookmarks/service/hooks/home/useDeleteBookmarkList'; import getRem from '@/utils/getRem'; import useAuthStore from '@/store/auth'; @@ -69,7 +67,7 @@ const MainPage = () => {