Skip to content

Commit 960f7aa

Browse files
main에 반영된 핫픽스된 부분을 develop에 반영한다. (#892)
* 이미지 리사이징이 되지 않는 문제 해결 (#879) * Home이 로드 될 때에 바로 사용되지 않는 컴포넌트에 대해서 동적 import를 진행한다 (#882) * fix: 바로 사용되지 않는 EmptyMessage component에 대해서 lazy loading 처리 * chore: 당장 사용하지 않는 ts-loader 제거 * 인기게시물에서 isLike여부에 따라서 보여주는 UI를 변경한다. (#896) * fix: Carousel 의도를 들어낼 수 있는 네이밍으로 수정 * fix: 하트를 누른 경우에만 차보이도록 구현 * feat: aria-label 추가 Co-authored-by: JASUN LEE <[email protected]>
1 parent ba0f5f5 commit 960f7aa

File tree

15 files changed

+44
-21
lines changed

15 files changed

+44
-21
lines changed

frontend/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
"prettier": "^2.7.1",
7676
"storybook-addon-react-router-v6": "^0.2.1",
7777
"style-loader": "^3.3.1",
78-
"ts-loader": "^9.4.1",
7978
"typescript": "^4.7.4",
8079
"webpack": "^5.73.0",
8180
"webpack-bundle-analyzer": "^4.6.1",

frontend/src/components/article/PopularArticle/PopularArticle.tsx renamed to frontend/src/components/article/PopularArticleCarousel/PopularArticleCarousel.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
import React from 'react';
12
import { useNavigate } from 'react-router-dom';
23

3-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
44
import Loading from '@/components/@common/Loading/Loading';
5-
import * as S from '@/components/article/PopularArticle/PopularArticle.styles';
5+
import * as S from '@/components/article/PopularArticleCarousel/PopularArticleCarousel.styles';
66
import PopularArticleItem from '@/components/article/PopularArticleItem/PopularArticleItem';
77
import useGetPopularArticles from '@/hooks/article/useGetPopularArticles';
88
import useCarousel from '@/hooks/common/useCarousel';
99
import { Category } from '@/types/articleResponse';
1010

11-
const PopularArticle = () => {
11+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
12+
13+
const PopularArticleCarousel = () => {
1214
const { handleCarouselElementRef, handleLeftSlideEvent, handleRightSlideEvent, currentIndex } =
1315
useCarousel();
1416
const { data, isLoading } = useGetPopularArticles();
@@ -57,4 +59,4 @@ const PopularArticle = () => {
5759
) : null;
5860
};
5961

60-
export default PopularArticle;
62+
export default PopularArticleCarousel;

frontend/src/components/article/PopularArticleItem/PopularArticleItem.styles.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AiOutlineEye, AiOutlineMessage, AiFillHeart } from 'react-icons/ai';
1+
import { AiOutlineEye, AiOutlineMessage, AiFillHeart, AiOutlineHeart } from 'react-icons/ai';
22

33
import {
44
UserProfile,
@@ -32,7 +32,13 @@ export const ViewIcon = styled(AiOutlineEye)`
3232
color: ${({ theme }) => theme.colors.BLACK_600};
3333
`;
3434

35-
export const HeartIcon = styled(AiFillHeart)`
35+
export const FillHeartIcon = styled(AiFillHeart)`
36+
font-size: ${({ theme }) => theme.size.SIZE_016};
37+
38+
color: ${({ theme }) => theme.colors.RED_600};
39+
`;
40+
41+
export const EmptyHeartIcon = styled(AiOutlineHeart)`
3642
font-size: ${({ theme }) => theme.size.SIZE_016};
3743
3844
color: ${({ theme }) => theme.colors.RED_600};

frontend/src/components/article/PopularArticleItem/PopularArticleItem.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ const PopularArticleItem = ({
6464
{views.toLocaleString()}
6565
</PopularS.IconContainer>
6666
<PopularS.IconContainer>
67-
<PopularS.HeartIcon aria-label="좋아요수" />
67+
{article.isLike ? (
68+
<PopularS.FillHeartIcon aria-label="좋아요수" />
69+
) : (
70+
<PopularS.EmptyHeartIcon aria-label="좋아요수" />
71+
)}
6872
{likeCount.toLocaleString()}
6973
</PopularS.IconContainer>
7074
</S.ArticleInfoSubBox>

frontend/src/components/comment/CommentContent/CommentContent.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
1+
import React from 'react';
2+
23
import Comment from '@/components/comment/Comment/Comment';
34
import * as S from '@/components/comment/CommentContent/CommentContent.styles';
45
import useDetailCommentState from '@/hooks/comment/useDetailCommentState';
@@ -9,6 +10,8 @@ export interface CommentContentProps {
910
commentList: CommentType[];
1011
}
1112

13+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
14+
1215
const CommentContent = ({ articleId, commentList }: CommentContentProps) => {
1316
const { handleClickCommentPlusButton, isLogin } = useDetailCommentState({ articleId });
1417
return (

frontend/src/components/search/SearchResult/SearchResult.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { Suspense, useEffect } from 'react';
22
import { useNavigate } from 'react-router-dom';
33

4-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
54
import Loading from '@/components/@common/Loading/Loading';
65
import ArticleItem from '@/components/article/ArticleItem/ArticleItem';
76
import * as S from '@/components/search/SearchResult/SearchResult.styles';
@@ -11,6 +10,7 @@ import { CommonArticleType } from '@/types/articleResponse';
1110
const ResponsiveInfiniteCardList = React.lazy(
1211
() => import('@/components/@common/ResponsiveInfiniteCardList/ResponsiveInfiniteCardList'),
1312
);
13+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
1414

1515
const SearchResult = ({ target, searchIndex }: { target: string; searchIndex: string }) => {
1616
const { data, isLoading, isIdle, refetch, fetchNextPage } = useGetSearch({ target, searchIndex });

frontend/src/components/tempArticle/TemporaryArticleList/TemporaryArticleList.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1+
import React from 'react';
12
import { useNavigate } from 'react-router-dom';
23

3-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
44
import Loading from '@/components/@common/Loading/Loading';
55
import TemporaryArticleItem from '@/components/tempArticle/TemporaryArticleItem/TemporaryArticleItem';
66
import * as S from '@/components/tempArticle/TemporaryArticleList/TemporaryArticleList.styles';
77
import useDeleteTempArticle from '@/hooks/tempArticle/useDeleteTempArticle';
88
import useGetTempArticles from '@/hooks/tempArticle/useGetTempArticles';
99
import { TempArticleItem } from '@/types/articleResponse';
1010

11+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
12+
1113
const TemporaryArticleList = () => {
1214
const { data, isLoading } = useGetTempArticles();
1315
const { deleteTempArticleId } = useDeleteTempArticle();

frontend/src/components/user/UserArticleBox/UserArticleBox.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
1+
import React from 'react';
2+
23
import Loading from '@/components/@common/Loading/Loading';
34
import * as S from '@/components/user/UserArticleBox/UserArticleBox.styles';
45
import UserArticleItem from '@/components/user/UserArticleItem/UserArticleItem';
56
import useGetUserArticles from '@/hooks/user/useGetUserArticles';
67

8+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
9+
710
const UserArticleBox = () => {
811
const {
912
data: articles,

frontend/src/components/user/UserCommentBox/UserCommentBox.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
1+
import React from 'react';
2+
23
import Loading from '@/components/@common/Loading/Loading';
34
import * as S from '@/components/user/UserCommentBox/UserCommentBox.styles';
45
import UserCommentItem from '@/components/user/UserCommentItem/UserCommentItem';
56
import useGetUserComments from '@/hooks/user/useGetUserComments';
67

8+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
9+
710
const UserCommentBox = () => {
811
const {
912
data: comments,

frontend/src/pages/CategoryArticles/CategoryArticles.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import React from 'react';
12
import { useNavigate, useParams } from 'react-router-dom';
23

3-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
44
import Loading from '@/components/@common/Loading/Loading';
55
import ResponsiveInfiniteCardList from '@/components/@common/ResponsiveInfiniteCardList/ResponsiveInfiniteCardList';
66
import SortDropdown from '@/components/@common/SortDropdown/SortDropDown';
@@ -11,6 +11,8 @@ import * as S from '@/pages/CategoryArticles/CategoryArticles.styles';
1111
import { CommonArticleType } from '@/types/articleResponse';
1212
import { categoryNameConverter } from '@/utils/converter';
1313

14+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
15+
1416
const CategoryArticles = () => {
1517
const navigate = useNavigate();
1618
const { category } = useParams();

frontend/src/pages/Home/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { Suspense } from 'react';
22
import { useNavigate } from 'react-router-dom';
33

4-
import EmptyMessage from '@/components/@common/EmptyMessage/EmptyMessage';
54
import Loading from '@/components/@common/Loading/Loading';
65
import SortDropdown from '@/components/@common/SortDropdown/SortDropDown';
76
import useGetAllArticles from '@/hooks/article/useGetAllArticles';
@@ -14,8 +13,9 @@ const ResponsiveInfiniteCardList = React.lazy(
1413
);
1514
const ArticleItem = React.lazy(() => import('@/components/article/ArticleItem/ArticleItem'));
1615
const PopularArticle = React.lazy(
17-
() => import('@/components/article/PopularArticle/PopularArticle'),
16+
() => import('@/components/article/PopularArticleCarousel/PopularArticleCarousel'),
1817
);
18+
const EmptyMessage = React.lazy(() => import('@/components/@common/EmptyMessage/EmptyMessage'));
1919

2020
const Home = () => {
2121
const [enterRef] = useEnterToClick();

frontend/src/pages/UpdateWriting/index.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { useEffect } from 'react';
21
import { useParams } from 'react-router-dom';
32

43
import Card from '@/components/@common/Card/Card';

frontend/src/storybook/Article/PopularArticle.stories.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { rest } from 'msw';
22
import { BrowserRouter } from 'react-router-dom';
33

4-
import PopularArticle from '@/components/article/PopularArticle/PopularArticle';
4+
import PopularArticleCarousel from '@/components/article/PopularArticleCarousel/PopularArticleCarousel';
55
import { HOME_URL } from '@/constants/apiUrl';
66
import { Meta, Story } from '@storybook/react';
77

88
export default {
99
title: 'Article/PopularArticle',
10-
component: PopularArticle,
10+
component: PopularArticleCarousel,
1111
decorators: [
1212
(Story) => (
1313
<BrowserRouter>
@@ -19,7 +19,7 @@ export default {
1919
],
2020
} as Meta;
2121

22-
const Template: Story = (args) => <PopularArticle {...args} />;
22+
const Template: Story = (args) => <PopularArticleCarousel {...args} />;
2323

2424
export const DefaultPopularArticle = Template.bind({});
2525
DefaultPopularArticle.args = {};

frontend/src/utils/converter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export const convertGithubAvatarUrlForResize = (avatarUrl: string) => {
7777
return avatarUrl;
7878
}
7979

80-
if (typeof global.process === 'undefined') {
80+
if (process.env.STORYBOOK) {
8181
return avatarUrl;
8282
}
8383

0 commit comments

Comments
 (0)