Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

좋아요한 템플릿 목록 페이지 생성 및 캐로셀 스크롤로 변경 #872

Merged
merged 9 commits into from
Oct 24, 2024

Conversation

Hain-tain
Copy link
Contributor

⚡️ 관련 이슈

close - #846

📍주요 변경 사항

  • 좋아요 한 템플릿 목록 페이지를 생성하였습니다.
  • 403 에러페이지 생성하였습니다. 다른 사람의 좋아요 목록을 조회하려고 할 경우 403 에러페이지를 보여줍니다.
  • 캐로셀에서 무한 순환을 제거하고, 스크롤로 이동할 수 있게 변경하였습니다.
  • 최상단으로 가는 버튼(ScrollToTopButton)을 모든 페이지에 적용하였습니다.

🎸기타

  • 현재 공통 컴포넌트로 해두면 좋을 부분들이 많았는데, 시간이 부족하여 모두 추상화하지 못했습니다. 추후 추상화하도록 하겠습니다.
  • 캐로셀의 경우 하드코딩으로 스타일을 맞춰둔 부분이 많습니다🥲

🍗 PR 첫 리뷰 마감 기한

10/24

@Hain-tain Hain-tain added feature 기능 추가 FE 프론트엔드 zap 리뷰 우선순위가 높은 사항 labels Oct 24, 2024
@Hain-tain Hain-tain added this to the 6차 스프린트 🦴 milestone Oct 24, 2024
@Hain-tain Hain-tain self-assigned this Oct 24, 2024
@Hain-tain Hain-tain changed the title Feat/846 liked templates 좋아요한 템플릿 목록 페이지 생성 및 캐로셀 스크롤로 변경 Oct 24, 2024
@Hain-tain Hain-tain changed the base branch from main to dev/fe October 24, 2024 06:31
Comment on lines +22 to +51
useEffect(() => {
const sentinel = sentinelRef.current;

if (!sentinel) {
return;
}

const observerOptions: IntersectionObserverInit = {
root: null,
rootMargin: '0px',
threshold: [0, 1.0],
};

const observerCallback: IntersectionObserverCallback = (entries) => {
// entries[0].isIntersecting이 false일 때 (sentinel이 화면에서 벗어났을 때) 버튼 보여줌
const entry = entries[0];
const shouldShow = !entry.isIntersecting || entry.intersectionRatio < 1;

void setIsVisible(shouldShow);
};

const observer = new IntersectionObserver(observerCallback, observerOptions);

observer.observe(sentinel);

// eslint-disable-next-line consistent-return
return () => {
observer.disconnect();
};
}, []);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 이렇게 로직을 쓰는군요?!

Comment on lines +63 to +68
<Flex direction='column' gap='0.5rem'>
<S.EllipsisTextWrapper>
<Text.XLarge color={theme.color.light.secondary_900} weight='bold'>
{title}
</Text.XLarge>
</S.EllipsisTextWrapper>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기는 gap이 추가된걸까요?!

<Heading.XLarge color={theme.color.light.primary_500}>403 ERROR</Heading.XLarge>
<Flex direction='column' gap='2rem' align='center'>
<Text.XLarge color={theme.color.light.primary_500} weight='bold'>
죄송합니다. 해당 페이지에 접근할 수 있는 권한이 없습니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사소하지만 '죄송합니다.' 표현이 없어도 될 것 같다는 생각이네요 ㅎㅎ

Comment on lines +1 to +16
import { Link, useParams } from 'react-router-dom';

import { Flex, Heading, LoadingBall, NoResults, PagingButtons, TemplateCard } from '@/components';
import { useQueryParams, useWindowWidth } from '@/hooks';
import { useAuth } from '@/hooks/authentication';
import { ForbiddenPage } from '@/pages';
import { useLikedTemplateListQuery } from '@/queries/templates/useLikedTemplateListQuery';
import { ROUTE_END_POINT } from '@/routes/endPoints';
import { useTrackPageViewed } from '@/service/amplitude';

import { TemplateListSectionLoading } from '../MyTemplatesPage/components';
import * as S from './MyLikedTemplatePage.style';

const getGridCols = (windowWidth: number) => (windowWidth <= 1024 ? 1 : 2);

const MyLikedTemplatePage = () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 페이지는 중복이 많아 추후 리팩토링이 필요해보이네요~!

return isSearching ? <NoSearchResults /> : <NewTemplateButton />;
return isSearching ? <NoResults>검색 결과가 없습니다.</NoResults> : <NewTemplateButton />;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재활용 가능하게 바뀐 부분 좋네요~

@@ -28,3 +29,21 @@ export const END_POINTS = {
LOGIN_CHECK: '/login/check',
CHECK_NAME: '/check-name',
} as const;

export const ROUTE_END_POINT = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변수명은 ROUTE만 있어도 좋을 것 같고, 어느 부분에는 적용이 되어있지 않은 것 같아서 이것도 리팩토링 목록으로 넣어두겠습니당

@Jaymyong66 Jaymyong66 merged commit ee51e87 into dev/fe Oct 24, 2024
1 of 2 checks passed
@Jaymyong66 Jaymyong66 deleted the feat/846-liked-templates branch October 24, 2024 07:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FE 프론트엔드 feature 기능 추가 zap 리뷰 우선순위가 높은 사항
Projects
Status: Weekend Done
Development

Successfully merging this pull request may close these issues.

2 participants