Skip to content

Commit 903b9e0

Browse files
committed
feat: 주문 내역 페이지에서 연도별로 구매 내역을 구분해서 노출하도록 수정
1 parent cffc5c8 commit 903b9e0

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

apps/pyconkr-2026/src/components/pages/store/order_histories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export const StoreOrderHistoriesPage: FC = () => {
4747
</li>
4848
</Stack>
4949
<Box sx={{ width: "100%" }}>
50-
<OrderList />
50+
<OrderList groupByYear />
5151
</Box>
5252
</PageLayout>
5353
);

packages/shop/src/components/features/order.tsx

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,17 +314,47 @@ const OrderItem: FC<OrderItemProps> = ({ order, disabled, ...props }) => {
314314
);
315315
};
316316

317-
export const OrderList: FC = () => {
317+
type OrderListProps = { groupByYear?: boolean };
318+
319+
export const OrderList: FC<OrderListProps> = ({ groupByYear = false }) => {
318320
const WrappedOrderList: FC = () => {
319321
const shopAPIClient = useShopClient();
320322
const { data } = useOrders(shopAPIClient);
321323

324+
if (!groupByYear) {
325+
return (
326+
<OneDetailsOpener>
327+
{data.map((item) => (
328+
<OrderItem key={item.id} order={item} />
329+
))}
330+
</OneDetailsOpener>
331+
);
332+
}
333+
334+
const ordersByYear = new Map<number, Order[]>();
335+
for (const order of data) {
336+
const year = new Date(order.created_at).getFullYear();
337+
if (!ordersByYear.has(year)) ordersByYear.set(year, []);
338+
ordersByYear.get(year)!.push(order);
339+
}
340+
const sortedYears = [...ordersByYear.keys()].sort((a, b) => b - a);
341+
322342
return (
323-
<OneDetailsOpener>
324-
{data.map((item) => (
325-
<OrderItem key={item.id} order={item} />
343+
<Stack spacing={4}>
344+
{sortedYears.map((year) => (
345+
<Stack key={year} spacing={1}>
346+
<Typography variant="h5" sx={{ fontWeight: 700 }}>
347+
{year}
348+
</Typography>
349+
<Divider />
350+
<OneDetailsOpener>
351+
{ordersByYear.get(year)!.map((item) => (
352+
<OrderItem key={item.id} order={item} />
353+
))}
354+
</OneDetailsOpener>
355+
</Stack>
326356
))}
327-
</OneDetailsOpener>
357+
</Stack>
328358
);
329359
};
330360

0 commit comments

Comments
 (0)