Skip to content

Commit f3ff240

Browse files
authored
Merge pull request #75 from oodd-team/feat/OD-130
[OD-130] 홈 화면 버그 수정
2 parents f9abb87 + 1263c36 commit f3ff240

20 files changed

Lines changed: 113 additions & 299 deletions

File tree

src/assets/default/snsIcon/kakao 2.svg

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/assets/default/snsIcon/naver 2.svg

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/components/BottomSheet/OptionsBottomSheet/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
175175
};
176176

177177
const handleBackgroundClick = (e: React.MouseEvent) => {
178+
e.stopPropagation();
178179
if (e.target === e.currentTarget) {
179180
setIsReportBottomSheetOpen(false);
180181
}

src/components/BottomSheet/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ const BottomSheet: React.FC<BottomSheetProps> = ({
120120

121121
// BottomSheet 외부를 클릭할 경우 BottomSheet 닫음
122122
const handleBackgroundClick = (e: React.MouseEvent) => {
123+
e.stopPropagation();
123124
if (!isDragging && e.target === e.currentTarget) {
124125
onCloseBottomSheet();
125126
}

src/components/CommentBottomSheet/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const CommentBottomSheet: React.FC<CommentBottomSheetProps> = ({
2929
};
3030

3131
const handleBackgroundClick = (e: React.MouseEvent<HTMLDivElement>) => {
32+
e.stopPropagation();
3233
if (e.target === e.currentTarget) {
3334
handleCloseBottomSheet();
3435
}

src/components/ConfirmationModal/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const ConfirmationModal: React.FC<ConfirmationModalProps> = ({
1212
return (
1313
<ConfirmationModalWrapper
1414
onClick={(e) => {
15+
e.stopPropagation();
1516
// Modal 외부를 클릭했을 경우 Modal 닫음
1617
if (e.target === e.currentTarget) {
1718
onCloseModal();

src/components/Modal/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import XIcon from '../../assets/default/x.svg';
77

88
const Modal: React.FC<ModalProps> = ({ isCloseButtonVisible, onClose, content, button }) => {
99
const handleBackgroundClick = (e: React.MouseEvent) => {
10+
e.stopPropagation();
1011
if (e.target === e.currentTarget) {
1112
onClose();
1213
}

src/components/NavBar/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ const NavBar: React.FC = () => {
6060
const handleTabClick = (tab: (typeof tabs)[0]) => {
6161
setSelectedTab(tab.name);
6262
navigate(tab.route);
63+
if (tab.name === 'Home') {
64+
sessionStorage.setItem('scrollPosition', '0');
65+
window.scrollTo({ top: 0, behavior: 'smooth' });
66+
}
6367
};
6468

6569
const handleConfirmLogout = () => {

src/pages/Home/HomeTopBar.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import React from 'react';
22
import { Button, ButtonContainer, HomeLogo, HomeTopBarContainer } from './styles';
33
import logo from './../../assets/default/oodd.svg';
44
import alarm from '../../assets/default/alarm.svg';
5-
import myPage from '../../assets/default/my-page.svg';
65

76
// Home 페이지의 상단 바입니다. 로고와 알림이 있습니다.
87
// TODO: 버튼 클릭 이벤트 처리 필요
@@ -14,9 +13,6 @@ const HomeTopBar: React.FC = () => {
1413
<Button>
1514
<img src={alarm} alt="알림" />
1615
</Button>
17-
<Button>
18-
<img src={myPage} alt="마이페이지" />
19-
</Button>
2016
</ButtonContainer>
2117
</HomeTopBarContainer>
2218
);

src/pages/Home/OOTD/Feed/index.tsx

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,22 +114,45 @@ const Feed: React.FC<FeedProps> = ({ feed }) => {
114114
}
115115
};
116116

117-
const handleMoreButtonClick = () => {
117+
const handleUserClick = (e: React.MouseEvent) => {
118+
e.stopPropagation();
119+
sessionStorage.setItem('scrollPosition', String(window.scrollY));
120+
nav(`/users/${feed.user.userId}`);
121+
};
122+
123+
const handleMoreButtonClick = (e: React.MouseEvent) => {
124+
e.stopPropagation();
118125
setIsOptionsBottomSheetOpen(true);
119126
};
120127

121-
const handleRejectButtonClick = () => {
128+
const handleRejectButtonClick = (e: React.MouseEvent) => {
129+
e.stopPropagation();
122130
setIsBlockModalOpen(true);
123131
};
124132

125-
const handleLikeButtonClick = () => {
133+
const handleLikeButtonClick = (e: React.MouseEvent) => {
134+
e.stopPropagation();
126135
togglePostLikeStatus();
127136
};
128137

129-
const handleMatchingButtonClick = () => {
138+
const handleMatchingButtonClick = (e: React.MouseEvent) => {
139+
e.stopPropagation();
130140
setIsMatchingCommentBottomSheetOpen(true);
131141
};
132142

143+
const handleClickFeed = (e: React.MouseEvent) => {
144+
const target = e.target as HTMLElement;
145+
146+
// 페이지네이션 bullet 클릭 시 이벤트 차단
147+
if (target.classList.contains('swiper-pagination-bullet')) {
148+
e.stopPropagation();
149+
} else {
150+
// 그 외에 게시글 상세 조회 페이지로 이동
151+
sessionStorage.setItem('scrollPosition', String(window.scrollY));
152+
nav(`/post/${feed.postId}`);
153+
}
154+
};
155+
133156
// 게시글 옵션(더보기) 바텀시트
134157
const optionsBottomSheetProps: OptionsBottomSheetProps = {
135158
domain: 'post',
@@ -178,14 +201,14 @@ const Feed: React.FC<FeedProps> = ({ feed }) => {
178201
};
179202

180203
return (
181-
<FeedWrapper>
204+
<FeedWrapper onClick={handleClickFeed}>
182205
<OptionsBottomSheet {...optionsBottomSheetProps} />
183206
{isBlockModalOpen && <Modal {...blockModalProps} />}
184207
<CommentBottomSheet {...matchingCommentBottomSheetProps} />
185208
{isStatusModalOpen && <Modal {...statusModalProps} />}
186209

187210
<FeedTop>
188-
<Info onClick={() => nav(`/users/${feed.user.userId}`)}>
211+
<Info onClick={handleUserClick}>
189212
<FeedProfileImgWrapper src={feed.user.profilePictureUrl || defaultProfile} alt="profile" />
190213
<StyledText $textTheme={{ style: 'body2-medium' }} color={theme.colors.black}>
191214
{feed.user.nickname}
@@ -198,11 +221,7 @@ const Feed: React.FC<FeedProps> = ({ feed }) => {
198221
<img src={more} />
199222
</MoreBtn>
200223
</FeedTop>
201-
<FeedText
202-
onClick={() => nav(`/post/${feed.postId}`)}
203-
$textTheme={{ style: 'body2-regular' }}
204-
color={theme.colors.black}
205-
>
224+
<FeedText $textTheme={{ style: 'body2-regular' }} color={theme.colors.black}>
206225
{feed.content}
207226
</FeedText>
208227
<FeedImgBox $src={feed.postImages[0].imageUrl}>
@@ -214,10 +233,16 @@ const Feed: React.FC<FeedProps> = ({ feed }) => {
214233
modules={[Pagination]}
215234
className="ootdSwiper"
216235
>
217-
{feed.postImages.map((postImage, index) => (
218-
<SwiperSlide key={index}>
219-
<img src={postImage.imageUrl} alt={`${feed.user.nickname}의 피드 이미지`} className="ootd-image-small" />
220-
</SwiperSlide>
236+
{feed.postImages.map((postImage) => (
237+
<>
238+
<SwiperSlide key={postImage.imageUrl}>
239+
<img
240+
src={postImage.imageUrl}
241+
alt={`${feed.user.nickname}의 피드 이미지`}
242+
className="ootd-image-small"
243+
/>
244+
</SwiperSlide>
245+
</>
221246
))}
222247
</Swiper>
223248
<ReactionWrapper>

0 commit comments

Comments
 (0)