diff --git a/src/main/components/EmailManagementMenu/EmailManagementMenu.test.tsx b/src/main/components/EmailManagementMenu/EmailManagementMenu.test.tsx index 844ba8a..8f6c996 100644 --- a/src/main/components/EmailManagementMenu/EmailManagementMenu.test.tsx +++ b/src/main/components/EmailManagementMenu/EmailManagementMenu.test.tsx @@ -27,7 +27,7 @@ describe("이메일 관련 구독 관리 컴포넌트 테스트", () => { const { result } = renderHook( () => useQuery({ - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: "myPage" }), }), { wrapper: createQueryProviderWrapper() }, ); diff --git a/src/main/components/EmailManagementMenu/index.tsx b/src/main/components/EmailManagementMenu/index.tsx index 29b8498..a1dc8b3 100644 --- a/src/main/components/EmailManagementMenu/index.tsx +++ b/src/main/components/EmailManagementMenu/index.tsx @@ -10,7 +10,7 @@ import EmailTimeManagementDialog from "../EmailTimeManagementDialog"; export default function SubscriptionEmailManagement() { const { data } = useQuery({ - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: "myPage" }), select: ({ data }) => { const subscriptionManagementModel = new SubscriptionManagementModel({ initSubscriptionManagementServerList: data.data.workbooks, diff --git a/src/main/components/SubscriptionManagementItem/index.tsx b/src/main/components/SubscriptionManagementItem/index.tsx index 5e39bad..c2e6be4 100644 --- a/src/main/components/SubscriptionManagementItem/index.tsx +++ b/src/main/components/SubscriptionManagementItem/index.tsx @@ -19,6 +19,7 @@ interface SubscriptionManagementItemProps className: HTMLDivElement["className"]; } export default function SubscriptionManagementItem({ + workbookTitle, workbookId, isSubscription, dayInfo, @@ -27,15 +28,6 @@ export default function SubscriptionManagementItem({ const [isToggleSubscription, setIsToggleSubscription] = useState(isSubscription); - const { data: workbookTitle } = useQuery({ - ...getWorkbookQueryOptions({ - workbookId, - isWebpBrowser: true, - }), - select: ({ data }) => { - return data.data.title; - }, - }); const { mutate: unsubscriptionWorkbook } = useMutation({ ...postUnsubscriptionWorkbookMutationOptions(), }); diff --git a/src/main/components/SubscriptionManagementList/SubscriptionManagementList.test.tsx b/src/main/components/SubscriptionManagementList/SubscriptionManagementList.test.tsx index f3db9db..f867959 100644 --- a/src/main/components/SubscriptionManagementList/SubscriptionManagementList.test.tsx +++ b/src/main/components/SubscriptionManagementList/SubscriptionManagementList.test.tsx @@ -27,7 +27,7 @@ describe("워크북 구독 리스트 관리 컴포넌트 테스트", () => { const { result } = renderHook( () => useQuery({ - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: "myPage" }), }), { wrapper: createQueryProviderWrapper() }, ); diff --git a/src/main/components/SubscriptionManagementList/index.tsx b/src/main/components/SubscriptionManagementList/index.tsx index ecd7939..ed1dae0 100644 --- a/src/main/components/SubscriptionManagementList/index.tsx +++ b/src/main/components/SubscriptionManagementList/index.tsx @@ -12,7 +12,7 @@ import SubscriptionManagementItem from "../SubscriptionManagementItem"; export default function SubscriptionManagementList() { const { data } = useQuery({ - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: "myPage" }), select: ({ data }) => { const subscriptionManagementModel = new SubscriptionManagementModel({ initSubscriptionManagementServerList: data.data.workbooks, diff --git a/src/main/components/WorkbookCardList/index.tsx b/src/main/components/WorkbookCardList/index.tsx index 2e7bef6..d3c0a47 100644 --- a/src/main/components/WorkbookCardList/index.tsx +++ b/src/main/components/WorkbookCardList/index.tsx @@ -20,7 +20,7 @@ export default function WorkbookCardList({ code: code !== undefined ? code : ENTIRE_CATEGORY, }), { - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: undefined }), enabled: isLogin === true, }, ], diff --git a/src/main/components/WorkbookCardsWrapper/workbookcardsWrapper.test.tsx b/src/main/components/WorkbookCardsWrapper/workbookcardsWrapper.test.tsx index 1c1f592..1f6f5ec 100644 --- a/src/main/components/WorkbookCardsWrapper/workbookcardsWrapper.test.tsx +++ b/src/main/components/WorkbookCardsWrapper/workbookcardsWrapper.test.tsx @@ -85,7 +85,7 @@ describe("메인페이지 내 카테고리별 워크북 카드 리스트 테스 code: ENTIRE_CATEGORY, }), { - ...getSubscriptionWorkbooksQueryOptions(), + ...getSubscriptionWorkbooksQueryOptions({ pageType: undefined }), enabled: true, }, ], diff --git a/src/main/models/SubscriptionManagementModel/SubscriptionManageMentModel.test.ts b/src/main/models/SubscriptionManagementModel/SubscriptionManageMentModel.test.ts index 18525e3..b53e797 100644 --- a/src/main/models/SubscriptionManagementModel/SubscriptionManageMentModel.test.ts +++ b/src/main/models/SubscriptionManagementModel/SubscriptionManageMentModel.test.ts @@ -13,7 +13,7 @@ const mockData: WorkbookSubscriptionInfo[] = [ rank: 0, totalSubscriber: 100, articleInfo: "{}", - subscription: { date: "1111111", time: "09:00" }, + subscription: { dateTimeCode: "1111111", time: "09:00" }, }, { id: 2, @@ -23,7 +23,7 @@ const mockData: WorkbookSubscriptionInfo[] = [ rank: 0, totalSubscriber: 1, articleInfo: "{}", - subscription: { date: "1111111", time: "09:00" }, + subscription: { dateTimeCode: "1111111", time: "09:00" }, }, { id: 3, @@ -33,7 +33,7 @@ const mockData: WorkbookSubscriptionInfo[] = [ rank: 0, totalSubscriber: 2, articleInfo: "{}", - subscription: { date: "0011111", time: "09:00" }, + subscription: { dateTimeCode: "0011111", time: "09:00" }, }, ]; diff --git a/src/main/models/SubscriptionManagementModel/index.ts b/src/main/models/SubscriptionManagementModel/index.ts index d3410bf..4b88535 100644 --- a/src/main/models/SubscriptionManagementModel/index.ts +++ b/src/main/models/SubscriptionManagementModel/index.ts @@ -6,8 +6,10 @@ import { SubscriptionEmailClientInfo, SubscriptionEmailServerInfo, } from "@main/types/emailInfo"; -import { SubscriptionManagementClientInfo , WorkbookSubscriptionInfo } from "@main/types/workbook"; - +import { + SubscriptionManagementClientInfo, + WorkbookSubscriptionInfo, +} from "@main/types/workbook"; export class SubscriptionManagementModel { constructor({ @@ -21,6 +23,9 @@ export class SubscriptionManagementModel { get SubscriptionMangementClientList(): SubscriptionManagementClientInfo[] { return this.subscriptionManagementServerList.map((subscriptionInfo) => ({ + workbookTitle: this.getWorkbookTitle({ + workbookInfo: subscriptionInfo.workbookInfo, + }), workbookId: subscriptionInfo.id.toString(), isSubscription: true, dayInfo: { @@ -33,9 +38,10 @@ export class SubscriptionManagementModel { get SubscriptionEmailManagementClientInfo(): SubscriptionEmailClientInfo { const subscriptionServerInfo = this.subscriptionManagementServerList[0].subscription; - return { - day: this.getDayClientInfo({ date: subscriptionServerInfo.date }), + day: this.getDayClientInfo({ + dateTimeCode: subscriptionServerInfo.dateTimeCode, + }), time: this.getTimeClientInfo({ time: subscriptionServerInfo.time }), }; } @@ -54,12 +60,12 @@ export class SubscriptionManagementModel { } private getDayClientInfo({ - date, + dateTimeCode, }: Pick< SubscriptionEmailServerInfo, - "date" + "dateTimeCode" >): SubscriptionEmailClientInfo["day"] { - switch (date) { + switch (dateTimeCode) { case SUBSCRIPTION_EMAIL_SERVER_INFO.DAY["EVERY_DAYS"]: return SUBSCRIPTION_DAYS["EVERY_DAYS"]; @@ -88,5 +94,15 @@ export class SubscriptionManagementModel { } } + private getWorkbookTitle({ + workbookInfo, + }: Pick) { + if (workbookInfo) { + const title = JSON.parse(workbookInfo)?.title as string; + return title; + } + return ""; + } + private subscriptionManagementServerList: WorkbookSubscriptionInfo[]; } diff --git a/src/main/remotes/getSubscriptionWorkbooksQueryOptions.ts b/src/main/remotes/getSubscriptionWorkbooksQueryOptions.ts index 36141c3..17dbde3 100644 --- a/src/main/remotes/getSubscriptionWorkbooksQueryOptions.ts +++ b/src/main/remotes/getSubscriptionWorkbooksQueryOptions.ts @@ -5,21 +5,30 @@ import { } from "@main/types/workbook"; import { UseQueryOptions } from "@tanstack/react-query"; import { API_ROUTE, QUERY_KEY } from "."; +import { PageType } from "@shared/types/view"; -const getSubscriptionWorkbooks = (): Promise< +const getSubscriptionWorkbooks = ({ + pageType, +}: { + pageType?: PageType; +}): Promise< ApiResponse> > => { - return fewFetch().get(API_ROUTE.SUBSCRIBE_WORKBOOKS); + return fewFetch().get(API_ROUTE.SUBSCRIBE_WORKBOOKS({ pageType })); }; -export const getSubscriptionWorkbooksQueryOptions = (): UseQueryOptions< +export const getSubscriptionWorkbooksQueryOptions = ({ + pageType, +}: { + pageType?: PageType; +}): UseQueryOptions< ApiResponse>, unknown, WorkbookSubscriptionInfo[] > => { return { - queryKey: [QUERY_KEY.GET_SUBSCRIBE_WORKBOOKS], - queryFn: () => getSubscriptionWorkbooks(), + queryKey: [QUERY_KEY.GET_SUBSCRIBE_WORKBOOKS, pageType], + queryFn: () => getSubscriptionWorkbooks({ pageType }), select: (data) => data.data.data.workbooks, }; }; diff --git a/src/main/remotes/index.ts b/src/main/remotes/index.ts index cb449f8..a4d9144 100644 --- a/src/main/remotes/index.ts +++ b/src/main/remotes/index.ts @@ -1,12 +1,14 @@ import { ArticlesInfiniteQueryParams } from "@main/types/article"; import { CategoryClientInfo } from "@common/types/category"; +import { PageType } from "@shared/types/view"; export const API_ROUTE = { CATEGORY: "/api/v1/workbooks/categories", WORKBOOKS_WITH_CATEGORY: ({ code }: { code: CategoryClientInfo["code"] }) => `/api/v1/workbooks?category=${code}&view=mainCard`, - SUBSCRIBE_WORKBOOKS: `/api/v1/subscriptions/workbooks`, + SUBSCRIBE_WORKBOOKS: ({ pageType }: { pageType?: PageType }) => + `/api/v1/subscriptions/workbooks${pageType ? `?view=${pageType}` : ""}`, ARTICLE_CATEGORY: "/api/v1/articles/categories", ARICLES_WITH_CATEGORY: ({ code, diff --git a/src/main/types/emailInfo.ts b/src/main/types/emailInfo.ts index 8de2d11..b464644 100644 --- a/src/main/types/emailInfo.ts +++ b/src/main/types/emailInfo.ts @@ -9,5 +9,5 @@ export interface SubscriptionEmailClientInfo { } export interface SubscriptionEmailServerInfo { time: (typeof SUBSCRIPTION_EMAIL_SERVER_INFO.TIME)[keyof typeof SUBSCRIPTION_EMAIL_SERVER_INFO.TIME]; - date: string; + dateTimeCode: string; } diff --git a/src/main/types/workbook.ts b/src/main/types/workbook.ts index 2045b2e..7c43e46 100644 --- a/src/main/types/workbook.ts +++ b/src/main/types/workbook.ts @@ -15,9 +15,11 @@ export interface WorkbookSubscriptionInfo totalSubscriber: number; articleInfo: string; // JSON문자열 subscription: SubscriptionEmailServerInfo; + workbookInfo?: string; // JSON 문자열 } export type SubscriptionManagementClientInfo = { + workbookTitle: string; workbookId: string; isSubscription: boolean; dayInfo: { diff --git a/src/shared/types/view.ts b/src/shared/types/view.ts new file mode 100644 index 0000000..99efc53 --- /dev/null +++ b/src/shared/types/view.ts @@ -0,0 +1 @@ +export type PageType = "myPage";