diff --git a/apps/audience/src/entities/notice/api/notice.ts b/apps/audience/src/entities/notice/api/notice.ts index 8f441df9..351b6159 100644 --- a/apps/audience/src/entities/notice/api/notice.ts +++ b/apps/audience/src/entities/notice/api/notice.ts @@ -8,6 +8,8 @@ import type { FestivalNoticesResponseData, } from '@shared/types/notice-response'; +import type { SavedNoticesResponse } from '../types/types'; + type RequestOptions = { signal?: AbortSignal; }; @@ -46,3 +48,9 @@ export const postNoticeBookmark = (noticeId: number, isBookmarked: boolean) => END_POINT.POST_NOTICE_BOOKMARK(noticeId), { isBookmarked }, ); + +export const getSavedNotices = (params: PageSizeParams = {}) => + get( + END_POINT.GET_SAVED_NOTICES, + params, + ); diff --git a/apps/audience/src/entities/notice/model/query-options.ts b/apps/audience/src/entities/notice/model/query-options.ts index c3cafda3..bf99cf94 100644 --- a/apps/audience/src/entities/notice/model/query-options.ts +++ b/apps/audience/src/entities/notice/model/query-options.ts @@ -4,7 +4,11 @@ import type { PageSizeParams } from '@amp/shared/types'; import { USERS_QUERY_KEY } from '@shared/constants/query-key'; -import { getFestivalBanner, getFestivalNotices } from '../api/notice'; +import { + getFestivalBanner, + getFestivalNotices, + getSavedNotices, +} from '../api/notice'; export const NOTICES_QUERY_OPTIONS = { LIST: (eventId: number, params: PageSizeParams = {}) => @@ -20,3 +24,11 @@ export const NOTICES_QUERY_OPTIONS = { enabled: Number.isFinite(festivalId), }), } as const; + +export const SAVED_NOTICES_QUERY_OPTIONS = { + LIST: (params: PageSizeParams = {}) => + queryOptions({ + queryKey: [...USERS_QUERY_KEY.SAVED_NOTICES(), params], + queryFn: () => getSavedNotices(params), + }), +} as const; diff --git a/apps/audience/src/shared/types/saved-notices-response.ts b/apps/audience/src/entities/notice/types/types.ts similarity index 50% rename from apps/audience/src/shared/types/saved-notices-response.ts rename to apps/audience/src/entities/notice/types/types.ts index 3a688a11..a142cb5d 100644 --- a/apps/audience/src/shared/types/saved-notices-response.ts +++ b/apps/audience/src/entities/notice/types/types.ts @@ -1,3 +1,5 @@ +import type { Pagination } from '@shared/types'; + export interface SavedNoticeItem { savedNoticeId: number; noticeId: number; @@ -5,19 +7,10 @@ export interface SavedNoticeItem { categoryName: string; content: string; title: string; - imageUrl: string; -} - -export interface SavedNoticesPagination { - currentPage: number; - totalPages: number; - totalElements: number; - size: number; - hasNext: boolean; - hasPrevious: boolean; + imageUrls: string[]; } export interface SavedNoticesResponse { notices: SavedNoticeItem[]; - pagination: SavedNoticesPagination; + pagination: Pagination; } diff --git a/apps/audience/src/features/saved-notice/query.ts b/apps/audience/src/features/saved-notice/query.ts deleted file mode 100644 index b9b2dd49..00000000 --- a/apps/audience/src/features/saved-notice/query.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { queryOptions } from '@tanstack/react-query'; - -import { get } from '@amp/apis'; -import type { PageSizeParams } from '@amp/shared/types'; - -import { END_POINT } from '@shared/constants/end-point'; -import { USERS_QUERY_KEY } from '@shared/constants/query-key'; -import type { SavedNoticesResponse } from '@shared/types/saved-notices-response'; - -export const getSavedNotices = (params: PageSizeParams = {}) => - get( - END_POINT.GET_SAVED_NOTICES, - params, - ); - -export const SAVED_NOTICES_QUERY_OPTIONS = { - LIST: (params: PageSizeParams = {}) => - queryOptions({ - queryKey: [...USERS_QUERY_KEY.SAVED_NOTICES(), params], - queryFn: () => getSavedNotices(params), - }), -} as const; diff --git a/apps/audience/src/pages/saved-notices/saved-notices.tsx b/apps/audience/src/pages/saved-notices/saved-notices.tsx index 1512876f..ec1de0e4 100644 --- a/apps/audience/src/pages/saved-notices/saved-notices.tsx +++ b/apps/audience/src/pages/saved-notices/saved-notices.tsx @@ -4,7 +4,7 @@ import { generatePath, useNavigate } from 'react-router'; import { CardNotice, EmptyView } from '@amp/ads-ui'; import { Loading } from '@amp/compositions'; -import { SAVED_NOTICES_QUERY_OPTIONS } from '@features/saved-notice/query'; +import { SAVED_NOTICES_QUERY_OPTIONS } from '@entities/notice/model/query-options'; import { ROUTE_PATH } from '@shared/constants/path'; @@ -36,7 +36,7 @@ const SavedNoticesPage = () => { {savedNoticesData.notices.map((notice, index) => (
{ diff --git a/apps/audience/src/shared/types/index.ts b/apps/audience/src/shared/types/index.ts new file mode 100644 index 00000000..cb727655 --- /dev/null +++ b/apps/audience/src/shared/types/index.ts @@ -0,0 +1 @@ +export * from './pagination'; diff --git a/apps/audience/src/shared/types/pagination.ts b/apps/audience/src/shared/types/pagination.ts new file mode 100644 index 00000000..dd0507f1 --- /dev/null +++ b/apps/audience/src/shared/types/pagination.ts @@ -0,0 +1,8 @@ +export interface Pagination { + currentPage: number; + totalPages: number; + totalElements: number; + size: number; + hasNext: boolean; + hasPrevious: boolean; +}