Skip to content

Commit 2fbbd2c

Browse files
committed
feat: 발표 목록이 행사 및 발표 타입을 필터링할 수 있도록 수정
1 parent cf8c65c commit 2fbbd2c

File tree

4 files changed

+34
-17
lines changed

4 files changed

+34
-17
lines changed

packages/common/src/apis/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ namespace BackendAPIs {
66
export const listSiteMaps = (client: BackendAPIClient) => () => client.get<BackendAPISchemas.FlattenedSiteMapSchema[]>("v1/cms/sitemap/");
77
export const retrievePage = (client: BackendAPIClient) => (id: string) => client.get<BackendAPISchemas.PageSchema>(`v1/cms/page/${id}/`);
88
export const listSponsors = (client: BackendAPIClient) => () => client.get<BackendAPISchemas.SponsorTierSchema[]>("v1/event/sponsor/");
9-
export const listSessions = (client: BackendAPIClient) => () => client.get<BackendAPISchemas.SessionSchema[]>("v1/event/presentation/");
9+
export const listSessions = (client: BackendAPIClient, params?: BackendAPISchemas.SessionQueryParameterSchema) => () =>
10+
client.get<BackendAPISchemas.SessionSchema[]>("v1/event/presentation/", { params });
1011
}
1112

1213
export default BackendAPIs;

packages/common/src/components/mdx_components/session_list.tsx

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,18 @@ const SessionItem: React.FC<{ session: BackendAPISchemas.SessionSchema }> = Susp
4646
);
4747
});
4848

49-
export const SessionList: React.FC = ErrorBoundary.with(
49+
type SessionListPropType = {
50+
event?: string;
51+
types?: string[];
52+
};
53+
54+
export const SessionList: React.FC<SessionListPropType> = ErrorBoundary.with(
5055
{ fallback: ErrorFallback },
51-
Suspense.with({ fallback: <CircularProgress /> }, () => {
56+
Suspense.with({ fallback: <CircularProgress /> }, ({ event, types }) => {
5257
const { language } = Hooks.Common.useCommonContext();
5358
const backendAPIClient = Hooks.BackendAPI.useBackendClient();
54-
const { data: sessions } = Hooks.BackendAPI.useSessionsQuery(backendAPIClient);
59+
const params = { ...(event && { event }), ...(types && { types }) };
60+
const { data: sessions } = Hooks.BackendAPI.useSessionsQuery(backendAPIClient, params);
5561

5662
const warningMessage =
5763
language === "ko"
@@ -80,17 +86,21 @@ export const SessionList: React.FC = ErrorBoundary.with(
8086
<Box>
8187
<Typography variant="body2" sx={{ width: "100%", textAlign: "right", my: 0.5, fontSize: "0.6rem" }} children={warningMessage} />
8288
<StyledDivider />
83-
<Stack direction="row" sx={{ flexWrap: "wrap", justifyContent: "center", gap: "0.1rem 0.2rem", my: 1 }}>
84-
{categories.map((cat) => (
85-
<CategoryButtonStyle
86-
key={cat.id}
87-
onClick={() => toggleCategory(cat.id)}
88-
children={cat.name}
89-
selected={selectedCategoryIds.some((selectedCatId) => selectedCatId === cat.id)}
90-
/>
91-
))}
92-
</Stack>
93-
<StyledDivider />
89+
{categories && (
90+
<>
91+
<Stack direction="row" sx={{ flexWrap: "wrap", justifyContent: "center", gap: "0.1rem 0.2rem", my: 1 }}>
92+
{categories.map((cat) => (
93+
<CategoryButtonStyle
94+
key={cat.id}
95+
onClick={() => toggleCategory(cat.id)}
96+
children={cat.name}
97+
selected={selectedCategoryIds.some((selectedCatId) => selectedCatId === cat.id)}
98+
/>
99+
))}
100+
</Stack>
101+
<StyledDivider />
102+
</>
103+
)}
94104
</Box>
95105
{filteredSessions.map((s) => (
96106
<SessionItem key={s.id} session={s} />

packages/common/src/hooks/useAPI.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as React from "react";
44
import BackendAPIs from "../apis";
55
import { BackendAPIClient } from "../apis/client";
66
import BackendContext from "../contexts";
7+
import BackendAPISchemas from "../schemas/backendAPI";
78

89
const QUERY_KEYS = {
910
SITEMAP_LIST: ["query", "sitemap", "list"],
@@ -42,10 +43,10 @@ namespace BackendAPIHooks {
4243
queryFn: BackendAPIs.listSponsors(client),
4344
});
4445

45-
export const useSessionsQuery = (client: BackendAPIClient) =>
46+
export const useSessionsQuery = (client: BackendAPIClient, params?: BackendAPISchemas.SessionQueryParameterSchema) =>
4647
useSuspenseQuery({
4748
queryKey: [...QUERY_KEYS.SESSION_LIST, client.language],
48-
queryFn: BackendAPIs.listSessions(client),
49+
queryFn: BackendAPIs.listSessions(client, params),
4950
});
5051
}
5152

packages/common/src/schemas/backendAPI.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ namespace BackendAPISchemas {
7070
}[];
7171
};
7272

73+
export type SessionQueryParameterSchema = {
74+
event?: string;
75+
types?: string[];
76+
};
77+
7378
export type SessionSchema = {
7479
id: string;
7580
title: string;

0 commit comments

Comments
 (0)