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

fix: 회원탈퇴 후 유저정보가 남아있는 버그 수정 #208

Merged
merged 6 commits into from
Jun 22, 2024

Conversation

ssolfa
Copy link
Collaborator

@ssolfa ssolfa commented Jun 3, 2024

1️⃣ 어떤 작업을 했나요? (Summary)

버그 픽스

  • LoginState랑 UserState가 초기화 코드 누락 해결
스크린샷 2024-06-03 오후 3 50 52
  • 로그인 했을 때
스크린샷 2024-06-03 오후 3 51 06
  • 계정 탈퇴 후

2️⃣ 알아두시면 좋아요!

로그아웃 api.logout과 LoginState를 false로, UserState를 null로 전부 초기화하는 useResetUserInfo 훅을 만들었습니다.
로그아웃에서도 LoginState, UserState 전부 초기화 해야하면 갖다 써도 될 것 같습니당

3️⃣ 추후 작업

4️⃣ 체크리스트 (Checklist)

  • main 브랜치의 최신 코드를 pull 받았나요?

@ssolfa ssolfa added bug Something isn't working fix home labels Jun 3, 2024
@ssolfa ssolfa self-assigned this Jun 3, 2024
@ssolfa ssolfa linked an issue Jun 3, 2024 that may be closed by this pull request
@ssolfa ssolfa requested a review from minai621 as a code owner June 3, 2024 06:54
Copy link
Collaborator

@nijuy nijuy left a comment

Choose a reason for hiding this comment

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

빠르다 빨라!!!!!!!!!!!!!!

로그아웃에서도 LoginState, UserState 전부 초기화 해야하면 갖다 써도 될 것 같습니당

짱개발자

Comment on lines 16 to 21
export const useResetUserInfo = () => {
const resetLoginState = useSetRecoilState(LogInState);
const resetUserState = useSetRecoilState(UserState);

return () => resetUserInfo(resetLoginState, resetUserState);
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

resetUserInfo 라는 함수로 분리한 이유가 궁금합니다!

해당 함수의 크기가 크지 않기도 하고, return 안에서 바로 처리하는 게 코드 읽을 때 흐름이 왔다갔다 하지 않는다는 점에서 이해하기 쉬울 거 같다고 생각하는데 워때용

Suggested change
export const useResetUserInfo = () => {
const resetLoginState = useSetRecoilState(LogInState);
const resetUserState = useSetRecoilState(UserState);
return () => resetUserInfo(resetLoginState, resetUserState);
};
export const useResetUserInfo = () => {
const resetLoginState = useSetRecoilState(LogInState);
const resetUserState = useSetRecoilState(UserState);
return () => {
resetLoginState(false);
resetUserState(null);
api.logout();
};
};

@ssolfa ssolfa requested a review from nijuy June 12, 2024 06:31
@nijuy nijuy changed the title Fix: 회원탈퇴 후 유저정보가 남아있는 버그 수정 fix: 회원탈퇴 후 유저정보가 남아있는 버그 수정 Jun 15, 2024
Copy link
Member

@2wndrhs 2wndrhs left a comment

Choose a reason for hiding this comment

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

수고하셨습니다👍

@@ -36,6 +38,7 @@ export const Withdraw = () => {
const { success, error } = await postWithdraw();
Copy link
Member

Choose a reason for hiding this comment

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

postWithdraw 로직을 tanstack query의 mutation을 활용해서 분리하면 어떨까요?
mutation으로 분리하면 API 호출 상태에 따른 로직들을 mutation으로 위임할 수 있어 가독성이 더 좋아질 것 같습니다!
https://tanstack.com/query/latest/docs/framework/react/guides/mutations

피그마에는 계정 탈퇴가 실패했을 때의 디자인은 따로 없는 것 같은데 맞을까요.?
그렇다면 alert로 처리하기 보다는 ErrorBoundary에서 처리하는게 통일성이 있을 것 같습니다!

  • postWithdraw.ts(api)
export const postWithdraw = async (data: object) => {
  const res = await authClient.post('/auth/withdraw', data, {
    headers: api.headers,
  });
  return res.data;
};
  • usePostWithdraw.ts(mutation)
export const usePostWithdraw = () => {
  const queryClient = useQueryClient();
  const setIsLoggedIn = useSetRecoilState(LogInState);

  return useMutation({
    mutationFn: postWithdraw,
    onSuccess: () => {
      setIsLoggedIn(false);
      api.logout();
    },
    // 가장 가까운 ErrorBoundary로 에러가 전파됨
    throwOnError: true,
  });
};
  • Withdraw.tsx
export const Withdraw = () => {
  const navigate = useNavigate();
  const [agreed, setAgreed] = useState(false);
  const [draw, setDraw] = useState(false);
  const withdrawMutation = usePostWithdraw();

  const handleGoToHome = () => {
    navigate('/');
  };

  const handleCheckAgree = () => {
    setAgreed((prevAgreed) => !prevAgreed);
  };

  const handleWithdrawAgree = () => {
    withdrawMutation.mutate(
      {},
      {
        onSuccess: () => {
          setDraw((prevDraw) => !prevDraw);
        },
      }
    );
  };

  return (
    <StyledWrapper>
      <img onClick={handleGoToHome} src={Logo} alt="Logo-image" width={180} height={38} />
      <StyledWithdrawContainer>
        {draw ? (
          <WithdrawSuccess onConfirm={handleGoToHome} />
        ) : (
          <>
            <StyledTitleText>계정 탈퇴</StyledTitleText>
            <StyledSubTitleText>계정 탈퇴   확인하세요.</StyledSubTitleText>
            <StyledText>
              <StyledListItem>탈퇴하는 즉시 데이터가 제거되며, 복구가 불가능합니다.</StyledListItem>
              <StyledListItem>
                닉네임, 이메일  사용자를 특정할  있는 모든 계정 정보가 지워집니다.
              </StyledListItem>
              <StyledListItem>
                등록된 글이나 댓글의 삭제를 원한다면 탈퇴 이전에 삭제하시기 바랍니다.
              </StyledListItem>
            </StyledText>
            <StyledLeft>
              <CheckBox size="medium" isSelected={agreed} onClick={handleCheckAgree} type="button">
                <StyledButtonText>안내사항을 확인하였으며, 이에 동의합니다.</StyledButtonText>
              </CheckBox>
            </StyledLeft>
            <BoxButton
              style={{ width: '100%' }}
              rounding={8}
              size="large"
              variant="filled"
              onClick={handleWithdrawAgree}
              disabled={!agreed || withdrawMutation.isPending}
            >
              탈퇴하기
            </BoxButton>

@ssolfa ssolfa requested a review from 2wndrhs June 19, 2024 16:29
@nijuy
Copy link
Collaborator

nijuy commented Jun 20, 2024

여기 나중에 리뷰 끝나면!! 합치기 전에 develop 한번 pull 해주세요 ㅎㅎ


export const useResetUserInfo = () => {
const resetLoginState = useSetRecoilState(LogInState);
const resetUserState = useSetRecoilState(UserState);
Copy link
Member

Choose a reason for hiding this comment

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

#216 에서 UserState 전역 상태를 제거해서 여기서도 UserState 관련 코드를 제거해야 될 것 같습니다!

@nijuy nijuy mentioned this pull request Jun 20, 2024
1 task
@ssolfa ssolfa requested a review from 2wndrhs June 21, 2024 04:26
@fecapark fecapark merged commit 0436ef6 into develop Jun 22, 2024
@fecapark fecapark deleted the fix/#204-withdraw-page-remove-user-info branch June 22, 2024 09:16
nijuy added a commit that referenced this pull request Jul 31, 2024
* chore: setting eslint, prettier, path alias

* style: remove file, setting gitignore

* chore: install package

- axios
- @tanstack/react-query
- react-router-dom
- recoil
- styled-components

* docs: update pr template, owners, assignees

* chore: install storybook

* chore: install @types/styled-components

* chore: setting folder structure

* feat: setting basic router

- w. (setting RecoilRoot, QueryClientProvider)

* chore: issue template추가 (#1)

* chore: install @yourssu/design-system-react

* docs: fix codeowners file

* docs: fix CODEOWNERS

* feat: Layout 컴포넌트 생성

* feat: 서랍장 관련 route에 Layout 컴포넌트 적용

* design: StyledLayout min-height, padding-bottom 지정

- 80px은 Footer의 height와 같음

* feat: add styled-components.d.ts

* feat: add Button

* feat: add Footer

- 추후 폰트 수정 필요

* feat: remove unnecessary type

* feat: 카테고리 유형 컴포넌트 제작

* fix: Styled 네이밍 수정

* feat(drawer): `HeaderLogo` 컴포넌트 구현

* feat(drawer): `HeaderTabs` 컴포넌트 구현

* style(drawer): `HeaderLogo` 가운데 정렬 되도록 수정

* feat(drawer): `HeaderSearchInput` 컴포넌트 구현

* feat(drawer): `HeaderIconButton` 컴포넌트 구현

* style(drawer): `StyeldFooter` -> `StyledFooter`로 컴포넌트 이름 수정

* fix: 디스트럭처링으로 순회하도록 코드 수정

* fix: px -> rem 단위로 수정

* feat: category 리스트 Layout 작업

* fix: 카테고리 컴포넌트 margin-top 값 추가

* style(drawer): `px` -> `rem` 단위로 변경

* style(drawer): 오른쪽 패딩 20rem(320px) 적용

* chore: index.css 내 button 태그 기본 스타일 삭제

* chore: src/assets에 임시 이미지 저장

- svg 파일은 추후 YDS Icon으로 변경 예정

* feat: `Card` 컴포넌트 구현

- Home, Drawer에서 사용할 Card 컴포넌트 구현

* feat: 서랍장용 `Card` 컴포넌트 구현

- 공용 컴포넌트를 조합해서 서랍장용 Card 컴포넌트를 구현. 용도와 사이즈에 따라 파일을 분리했습니다

* chore: upgrade @yourssu/design-system-react

* refactor: StyledBigThumbnail, StyledSmallThumbnail 컴포넌트 통합

- width, border-radius를 props로 받아서 처리하는 StyledThumbnail 컴포넌트로 합침

* refactor: CardSetting prop onClick 추가

- menu-list와 관련된 로직은 UserDrawerCard에서 내려주도록 함

* refactor: `FlexContainer`, `FlexGrowItem` 컴포넌트 구현

- `Card` 컴포넌트에 적용도 동시에 함

* feat: `CardContent` 컴포넌트에 YDS Icon 적용

- 임시로 넣어뒀던 star svg 삭제

* feat: `CardSetting` 컴포넌트에 YDS Icon 적용

- 임시로 넣어뒀던 setting svg 삭제

* fix: Card.style.ts에서 props 사용 시 괄호 밖으로 ; 빼기

* feat: `StyledBookmarkContainer` 컴포넌트 추가

* feat: Home용 `RankDrawerCard` 컴포넌트 구현
- 공용 컴포넌트인 Card 컴포넌트를 활용하여 구현

* feat: `DrawerRanking` 컴포넌트 구현
- Home에서 사용되는 '금주의 서랍장 랭킹' 컴포넌트 입니다.

* style: 배열 map함수에서 key값 추가

* design: padding 값 수정
- '전체보기' 버튼 오른쪽 padding 추가
- '서랍장 카드' 아래쪽 padding 추가

* rename: `Home` 컴포넌트 파일 위치 수정

* remove: 불필요한 css 코드 제거
- react-router-dom의 Link는 자동으로 cursor pointer가 적용되기 때문에 중복되는 css 코드인 cursor pointer 삭제

* style: RankDrawerCard 컴포넌트명 변경
- 파일명과 동일하도록 `RankCard` -> `RankDrawerCard`로 컴포넌트 명 변경
- export 방식 변경

* rename: Home 컴포넌트에서 쓰이는 아토믹한 컴포넌트 파일 위치 변경
- `DrawerRanking`, `RankDrawerCard` 컴포넌트를 `/src/home/components`로 위치 변경
- `Home` 컴포넌트를 `/src/home/pages`로 위치 변경

* style: change the Button, Footer unit (px -> rem)

* design: add cursor, hover style in Button

* feat: add GrayButton

- drawer '더보기' 버튼

* feat: add drawer main image (4x)

- 화질 유지를 위해 4x로 사용합니다.

* feat: implementation drawer main page

- export const 형식으로 변경합니다.

* design: modify Header

- sticky 설정 시 top: 0을 같이 설정해주어야 정상 작동합니다.
- 기존 background 속성이 투명이라 흰색으로 설정해주었습니다.

* design: modify Category

- Category 또한 스크롤과 관계없이 항상 보이도록 수정합니다.
- rem 값 수정 (figma dev mode)

* style: modify drawer pages path

- export default -> export const

* remove: src/components/Test

* fix: fix Footer text error

* style: remove font-style in YDS typo

* design: modify Category, Ranking layout

* feat: 홈화면 네비바 작업 (#23)

* chore: issue template추가

* feat: 로그인,미로그인시 네비바

* fix: dropdown폴더 루트로 이동

* remove: common 폴더 삭제및 하위 파일들 경로 수정

* fix: isProfileClicked네이밍 수정 & HomeLayout router.tsx에 반영

* fix: dropdown텍스트 spacing제거, padding추가

* fix: 프로필이미지 cursor추가

* refactor: navbar 시맨틱 태그로 변경

* [FEAT] normalize css추가 및 드롭다운 컴포넌트 리펙토링 (#30)

* feat: normalize css추가

* style: 드롭다운에 left속성 추가

* style: img태그 normalize속성 제거

* remove: normalize.css삭제 및 index.css에 추가

* fix: main.tsx에서 normalize삭제

* feat: Search화면 실시간 검색어 컴포넌트 및 검색 결과 없음 페이지 구현 (#10) (#31)

* feat: RealTimeKeyword 컴포넌트 제작

* feat: NoResultPage 컴포넌트 제작

* chore: 이미지 파일 위치 변경

* style: YDS 적용

* feat: 시간 앞에 0 붙히기

* chore: 이미지 파일 위치 수정

* style: 코드 리뷰 반영

* refactor: 코드 리뷰 반영

* style: border yds 수정

* style: 코드 리뷰 반영

* refactor: 코드 리뷰 반영

* design: 랭킹 숫자 크기 변경

* refactor: IconContext 적용

* chore: 이미지 위치 수정

---------

Co-authored-by: george <[email protected]>

* feat: 서랍장 상세 페이지 상단 화면 구현 (#32)

* refactor(drawer): `Header` 컴포넌트가 YDS Icon을 사용하도록 수정

* feat(drawer): `ServiceDetail` 컴포넌트 라우터 연결

* feat(drawer): `BackgroundImage` 컴포넌트 구현

* feat(drawer): `TitleText`, `DeveloperText`, `Thumbnail`, `Category` 컴포넌트 구현

* feat(drawer): `YDS BoxButton`으로 DOWNLOAD, Github 버튼 구현

* chore(drawer): TODO 주석 수정

* feat(drawer): `IconButton` 컴포넌트 구현

* fix(drawer): `FlexContainer`가 `children` props를 선택적으로 받을 수 있도록 수정

* refactor(drawer): normalize css 적용으로 인한 `Header` 컴포넌트 리팩토링

* style(drawer): `Header` 구분선 추가, css `%` 단위로 리팩토링

* rename: `realTimeKeyword.png` 파일 위치 변경 및 이미지 변경
- `realTimeKeyword.png`가 Home과 Search 모두 사용되어 파일 위치 수정
- `realTimeKeyword.png`의 파일 위치 변동으로 인한 `RealTimeKeyword`의 import 문 수정
- `realTimeKeyword.png` x4 png 파일로 변경

* feat: `SearchKeyword` 컴포넌트 구현

* design: `SearchKeyword` css 코드 수정
- border 두께 고려한 padding 수정
- 피그마와 동일하도록 height 및 padding 값 수정
- 키워드 열 간 간격 추가

* style: `SearchKeyword.style.ts` 파일에서 interface 선언해 이용하도록 수정

* style: YDS 폰트 적용

* chore: yarn add react-hook-from

* chore: yarn add use-debounce

* feat: search 검색바 및 검색 결과 리스트 아이템 컴포넌트 제작

* feat: add Spacing

* feat: add useForm

* feat: add SearchBar

* style: px -> rem 수정

* feat: add ResultListItem

* fix: 폴더 구조 수정

* feat: Logo 클릭시 홈으로 이동

* fix: 썸네일 5개 이상인 경우, countBox 추가

* fix: Spacing 컴포넌트 폴더 이동에 따른 수정

* refactor: Spacing 컴포넌트 리팩토링

* refactor: SearchBar 컴포넌트 useNavigate -> Link 리팩토링

* refactor: X Button 관련 사항 리팩토링

* fix: Error type ResultListItem.type.ts -> Common.type.ts 폴더 이동

* refactor: value ->  searchInputText 네이밍 변경

* fix: SearchIcon YDS 적용

* fix: searchBar / searchBox 스타일 파일 분리

* refactor: logo 중복 파일 제거 및 경로 수정

* fix: convetion 통일
XButton.svg -> x_button.svg 네이밍 수정

* refactor: YDS 컬러 통일 및 hex -> rgba

* refactor: export default -> export 통일

* refactor: icon IcXcircleFilled YDS 적용

* refactor: Spacing 경로 수정
@/search -> @/components

* refactor: 상대경로 -> 절대경로 수정

* fix: backend API 수정에 따른 response 값 수정

* refactor: styled 코드로 통일

* refactor: StyledThumbnailImage 가독성 증가
- Spacing -> gap 변경
- map으로 변경

* refactor: icon cursor YDS 적용

* refactor: svg 파일 분리

* feat: 서랍장 상세 페이지 하단 화면 구현 (#38)

* refactor(drawer): `Header` 컴포넌트가 YDS Icon을 사용하도록 수정

* feat(drawer): `ServiceDetail` 컴포넌트 라우터 연결

* feat: `BackgroundImage` 컴포넌트 구현

* feat: `ServiceDetail` 하단 영역 퍼블리싱

* design: StyledBackgroundImageContainer 크기 수정

- height, padding-left 값 조절

* fix: Header 병합 오류 수정

- 병합 완료 안됐는데 모르고 있었음

* feat: `StyledCarousel` 휠 이벤트 추가

- 스크롤 감지하면 가로 스크롤 이동시킴. 버튼 생길 시 제거 예정

* feat: `StyledCarousel` 슬라이드 버튼 추가

- 휠 이벤트 제거

* fix: 레이아웃 깨짐 현상 수정

- 너비가 작을 때 하단 영역 컨텐츠가 잘리는 현상을 수정했습니다

* design: `StyledCarousel` scroll-behavior 추가

---------

Co-authored-by: 2wndrhs <[email protected]>

* style: 서랍장 상세 화면 디자인 수정 (#51)

* �feat: 카드 레이아웃 작업 및 Setting 드롭다운 작업

* feat: 카드 컴포넌트 검색 결과 유무에 따른 변동 작업

검색, 즐겨찾기, 내서랍장 별로 분기

* feat: 내서랍장일 때 UserDrawerCard 적용

* fix: mydrawer일 때 카드 컴포넌트에 나타나는 Setting 드롭다운 구현

서비스 수정 및 서비스 삭제 드롭다운

* rename: drawerNot.png -> noResultDrawer.png

* fix: rename에 맞게 import 코드 수정

* fix: 카드 레이아웃 컴포넌트 margin-bottom: 4rem; 추가

* refactor: EmptyScreen 컴포넌트 분리

+ NOT_FOUND_TEXT 상수 대문자 처리

* fix: 드롭다운 bottom="-4.5rem"로 수정

Co-authored-by: 이유진 <[email protected]>

* fix: type="mydrawer" -> type="MYDRAWER"

Co-authored-by: hanna <[email protected]>

* fix: StyledDropdownContainer 이름 수정 및 style 파일로 이동

---------

Co-authored-by: 이유진 <[email protected]>
Co-authored-by: hanna <[email protected]>

* feat: Home 화면 SNS 컴포넌트 및 홈화면 구성 일부 구현 (#44)

* feat: sns 아이콘 이미지 추가

* feat: `SocialNetworkService` 컴포넌트 구현

* feat: `SocialNetworkSerivce` 컴포넌트 내 아이콘 링크 수정

* fix:`SocialNetworkService` 컴포넌트 내 map 함수 요소에 key값 추가

* design: `SocialNetworkService` 디자인 요소 수정
- Container 높이가 외부 요소로 늘어나지 않도록 수정
- 아이콘 이미지가 보이지 않는 문제 해결
- pointer 범위가 최대한 아이콘과 동일하도록 radius 요소 추가

* fix: `StyledNetworkService` 내 아이콘 링크 연결

* feat: `DrawerRanking`, `SearchKeyword`, `SocialNetworkSerivce` 컴포넌트를 조합하여 Home 페이지 일부 구현

* refactor: 데이터 호출을 각 컴포넌트에 하도록 구성
- 더미데이터 위치 수정

* style: `export default` -> `export const`로 수정

* style: `export default` -> `export const` 수정으로 인한 import 문 수정

* style: 추후에 변경해야 하는 코드 주석 표시

* fix: Dropdown style.ts dom warning

* feat: 내 서랍장 페이지 퍼블리싱 (#55)

* fix: 서랍장 `Button` 컴포넌트 typo 스타일 수정

- caption0 ➡ button2

* feat: `MyDrawer` 탭 기능 구현

- Stars, My Products 탭을 오가는 기능을 구현했습니다.

* refactor: `CardLayout` 내 empty screen 관련 상수 파일로 분리

* refactor: `ButtonProps` 타입이 React.ButtonHTMLAttributes를 확장하도록 수정

- 기존 button 태그의 속성 사용을 위함

* design: `Button` 컴포넌트 텍스트 정렬 스타일 추가

- 세로 정렬이 없어서 글자가 살짝 내려가 있었음

* chore: mydrawer.constant.ts 파일 추가

- 내 서랍장 페이지에서 사용하는 텍스트를 상수로 분리

* feat: `CardLayout`, `EmptyScreen`를 사용한 내 서랍장 컨텐츠 추가

- 탭 버튼 아래에 서비스 목록 or 빈 화면 JSX 추가

* refactor: 서랍장, Home화면 Card 컴포넌트 리팩토링 (#60)

* refactor: `CardSetting` 스타일 적용 방식 수정

- height 지정
  onClick을 SVGElement로 전달
  hex -> useTheme

* refactor: `CardContainer` 컴포넌트 div로 수정

- UserDrawerCard에서 중첩 Link가 생기는 일을 막기 위함

* refactor: `DropdownProps` 타입이 React.HTMLAttributes을 확장하도록 수정

- onClick 속성 사용을 위함

* fix: style.ts dom warning, folder 중복, path error 해결 (Search) (#59)

* feat: move RealTimeKeyword component

- component -> components

* fix: style.ts dom warning in Search

* fix: lint error in NoResult

* fix: path error in type.ts

* remove: remove test code in Search

* rename: searchBox -> SearchBox

* feat: 서랍장 서비스 등록 페이지 Input 컴포넌트 구현 (#54)

* feat: implement Input

* feat: implement Register basic layout

* refactor: remove input length props

* design: add input warned color

* refactor: add isNecessary props

* design: add overflow-x props in Layout

* feat: add media query & remove width props

* design: add media in StyledInput typo

* refactor: remove isNecesary props

- add props.required

* feat: Home 화면 공지 컴포넌트 구현 (#52)

* feat: 공지사항 컴포넌트 구현
- `Notification` 컴포넌트 구현
- 자동 슬라이드 구현

* design: `Notification` 컴포넌트 내부 너비 조정

* feat: `Notification` 컴포넌트 Home에 적용
- 스타일 컴포넌트 명 수정 및 마진 값 추가

* style: `px` -> `rem`으로 단위 수정

* fix: `Notification` 자동 슬라이드 스타일 지정 방식 수정
- `useInterval` 훅 생성

* rename: `useInterval` 파일 위치 `src/home/hooks` -> `/src/hooks`로 이동
- `useInterval` 내부에서 사용되는 props 관련 타입명 수정

* style: 공지 배열 map 함수의 key값 적용을 위한 배열 구조 변경

* feat: 서랍장 서비스 등록 페이지 TextArea 컴포넌트 구현 (#67)

* feat: `TextArea` 컴포넌트 구현

* style: `Input` 컴포넌트 스타일 수정

* style: `TextArea`에 텍스트가 있을 때 border-bottom 색상을 `buttonNormalPressed`로 변경하도록 수정

* style: `Input`에 텍스트가 있을 때 border-bottom 색상을 `buttonNormalPressed`로 변경하도록 수정

* feat: 서랍장 서비스 등록 페이지 카테고리 체크박스 컴포넌트 구현 + 경고문 (#63)

* fix: Category IsAllProps 추가 및 isAll에 따른 컴포넌트 분기

CategoryProps에 subcategories 추가(등록페이지에 이용)

* feat: CategoryWithoutAll 컴포넌트 작업

등록페이지 카테고리 등록 컴포넌트

* feat: 경고문 컴포넌트 WarningBox 작업

모바일 화면 시 WarningAccodian으로 변경

* fix: gap, margin 값 수정

* fix: CheckBox size='medium'으로 수정

* feat: CategoryWithoutAll 시, 두 개 이상 선택 안되도록 수정

* feat: add category, warning in Register

* fix: YDS 타이포 적용

* fix: WarningBox 우측 정렬

* fix: YDS color 적용

* fix: isAll = true 일 때, CategoryList 수정

"전체" 요소가 안나오는 문제 해결

* fix: YDS color 코드 수정

앞에 color: 붙이기!

* fix: margin-right 값 경고문에만 적용되도록 수정

* fix: 카테고리 컴포넌트 위치 조정

* refactor: 삼항 연산자 -> 병합 연산자로 적용

Co-authored-by: 이중곤 <[email protected]>

* refactor: 불필요한 isAll props 관련 수정

* rename: Accodion -> Accordion으로 모두 수정

* refactor: 24.375 * 16 -> `MOBILE_VIEW_WIDTH` constant로 수정

* feat: isAccordionOpen 시, IcArrowUpLine 적용

---------

Co-authored-by: Hanna922 <[email protected]>
Co-authored-by: 이중곤 <[email protected]>

* feat: change mobile breakpoint (#72)

* feat: 로그인 퍼블리싱 (#61)

* feat: 로그인 퍼블리싱

* refactor: 시맨틱태그 수정

* fix: 비밀번호 suffix제거

* fix: Link로 변경

* fix: watchQuery삭제

* fix: 머지후 충돌 병합

* feat: 서랍장 서비스 등록 페이지 반응형 헤더 구현 (#75)

* style: `SearchContainer` border 색상 변경

* fix: `Logo` 클릭 시의 라우팅 경로 수정

* feat: `useMediaQuery` 커스텀 훅 구현

* style: `Layout` 컴포넌트 `overflow-x` 속성 제거

* feat: 모바일 && 서랍장 등록 페이지라면 `MobileRegisterHeader`를 보여주는 기능 구현

* feat: `MobileRegisterHeader` 컴포넌트 구현

* chore: 사용하지 않는 `serviceId` 변수 주석 처리

* feat: 링크 유효성 검증 및 등록 페이지 레이아웃 작업 (#74)

* feat: add warning design in TextArea LabelTitle

* feat: add checkValid func in Input

* feat: implement layout in Register

* design: modify WarningBox style

* refactor: link Input (add map, constant)

* rename: register link url

* feat: 서치 무한 스크롤 기능 구현 (#71)

* refactor: searchBox에 react-hook-form 적용

* fix: StyledTitle overflow 잘림 버그 픽스

* fix: styled component 적용 안된 부분 수정

* fix: useForm 삭제

* refactor: state 관리 위치 수정
- SearchBox -> SearchBoxSvg 내부

* fix: api 수정에 따른 type 수정

* feat: 무한 스크롤 기능 구현

* refactor: log 삭제

* refactor: 불필요한 type 삭제

* fix: 무한스크롤 noResult 등장 버그 해결

* fix: api 수정에 따른 타입 변경

* refactor: 타입 단언 -> 제네릭 활용

* fix: query와 input 값 일치 / focus 문제 해결

* refactor: 불필요한 주석 삭제

* refactor: thumbnail length 상수화

* refactor: Search 폴더 이동

* refactor: 불필요한 코드 삭제

* refactor: YDS 색상 적용

* feat: 카테고리 및 경고문 validation isWarned 추가 (#83)

* feat: 전체 포함 카테고리 중복 선택 불가로 수정

* feat: CategoryWithoutAll isWarned Props 추가

+ isWarned 시 디자인 추가

* feat: 경고문 validation isWarned Props 추가

+ isWarned 디자인 추가

* refactor: 카테고리 id -> category 문자열로 변경

* feat: 서랍장 등록 페이지 썸네일 이미지 및 소개 이미지 첨부 작업 (#78)

* feat: 썸네일 이미지 첨부 작업

* feat: 소개 이미지 첨부 작업

* refactor: console.log 삭제

* style: OverviewImage와 ThumbnailInput 간격 조정

* style: 반응형 24.375rem -> 30rem으로 수정

* feat: 첨부된 파일 삭제 버튼 추가

+ OverviewImage.style 레이아웃 스타일 관련 수정

* refactor: console.log 삭제

* style: 폰트 수정

* style: margin-top 수정

* rename: 철자 틀린 부분 수정

+ isWarned 옵셔널로 변경

* refactor: OverviewFileUpload 따로 컴포넌트로 분리 및 key 관련 수정

+ splice -> filter 로 수정
+ handleFileChange 핸들러 수정

* remove: console.log

---------

Co-authored-by: Hanna922 <[email protected]>

* feat: 마이페이지 퍼블리싱 구현 (#79)

* feat: 유저 정보 섹션 구현

* feat: 유저 정보 섹션 닉네임 편집 모드 추가

* feat: 마이페이지 메뉴 목록 구현

* feat: 마이페이지 구현 및 라우팅 설정

* feat: 마이페이지 메뉴 리스트 중 서랍장 관련 메뉴 링크 연결

* fix: ListItem 중 isPressed 된 부분 삭제

* fix: 프로필 편집 모드에서만 설정 버튼이 보이도록 수정

* fix: 서랍장 이동 링크 수정

Co-authored-by: 이유진 <[email protected]>

---------

Co-authored-by: 이유진 <[email protected]>

* feat: 서랍장 서비스 삭제 모달 구현 (#80)

* chore: `@radix-ui/react-dialog` 라이브러리 추가

* style: `Card.Setting` 아이콘의 수직 정렬 방식을 `flex`로 변경

* fix: `Dropdown` 컴포넌트가 `ref`를 받을 수 있도록 수정

* style: `Header` 컴포넌트의 `z-index`를 0으로 수정

* feat: `ServiceRemoveModal` 컴포넌트 구현

* fix: `ServiceRemoveModal` 트리거 제거

* refactor: `UserDrawerCard` 구조 변경

* style: `px` -> `rem` 단위로 수정

* chore: eslint 오류 제거를 위한 import문 주석 처리

* feat: 실시간 검색어 API 연동 (#85)

* design: 실시간 검색어 키워드 높이 추가

* refactor: API CORS 에러 수정에 따라 BaseURL 변경

* feat: 실시간 검색어 키워드 API

* feat: 실시간 검색어 키워드 데이터 타입 설정

* feat: 기존 시간 로직 변경

* chore: 메인 화면 초기화

* feat: 실시간 검색어 키워드 쿼리 설정

* docs: 기존 search 삭제

* fix: min-width 적용

* fix: 최대 너비 스타일 수정

* fix: Suspense 사용을 통한 로직 간단화

* fix: useSuspenseQuery로 수정

* refactor: query 배열에 대해서 readonly 타입 설정

* feat: formatDateTime 함수 -> utils 분리

* chore: webp 이미지 추가

* design: webp 적용

* chore: 이미지 삭제

---------

Co-authored-by: george <[email protected]>

* refactor: 내 서랍장 페이지 초기 currentTab 설정 방식 수정 (#88)

* refactor: 내 서랍장 페이지 초기 currentTab 설정 방식 수정

- query string에서 따온다!

* refactor: 불필요한 함수 제거

- 삼항 연산자로 `getTabFromURL`을 대체, isTabType 인자 타입 수정

* refactor: `handleClickTab` 인자 타입 수정

- target 말고 TabType 바로 받아서 설정하는 방식

* feat: 서랍장 프로덕트 등록 페이지에 react-hook-form 연결 (#91)

* feat: 서비스 이름, 간단한 설명, 내용에 react-hook-form 연결

* feat: 서비스 링크에 react-hook-form 연결

* design: 상단 `StyledImportText`에 $isWarned 추가

- 링크쪽 StyledImportText는 색이 변하지만 상단 StyledImportText는 무조건 검정이라, false로 넣어줌

* feat: 카테고리에 react-hook-form 연결

- `Input` `TextArea` 값 확인 방식을 formState.errors에서 getValues()로 변경

* feat: 썸네일 이미지에 react-hook-form 연결

* feat: 소개 이미지에 react-hook-form 연결

* feat: `WarningBox` 값에 따라 제출 막기

- handleSubmit 내에서 isChecked가 true인 경우에만 데이터 출력

* design: WarningBox 레이아웃 문제 해결

- OverviewImage, BoxButton과의 간격 확보

* Revert "design: WarningBox 레이아웃 문제 해결"

This reverts commit 5dc4da511453a3596965e983fdc4ce13bc251852.

* Revert "Revert "design: WarningBox 레이아웃 문제 해결""

This reverts commit abb8a9773102371c816fec0da7696355a5d98107.

* chore: `Register` handleSubmit 주석 추가

- 나중에 추가할 서버 데이터 타입(ProductRegisterRequest)으로 타입 지정 필요

* refactor: useEffect 의존성 배열에서 `setIsWarned` 삭제

* refactor: `CategoryWithoutAll` useEffect 조건문 삭제

- 기존에 if문의 조건이었던걸 바로 setIsWarned로 넣음

Co-authored-by: Chaeyeon Seo <[email protected]>

* chore: `CategoryWithoutAll` 들여쓰기 수정

- 깃허브에서 바로 커밋하느라 들여쓰기 체킹이 안됐었음

* refactor: `Input` validate return 타입 변경

- string | undefined -> boolean

---------

Co-authored-by: Chaeyeon Seo <[email protected]>

* feat: 서치 페이지 반응형 / 에러 핸들링 및 로딩 처리 구현 (#86)

* fix: img onError시 대체 이미지 설정

* feat: ErrorBoundary 제작

* chore: yarn add react-lottie

* feat: loading 파일 생성

* fix: favicon 디자인과 다른 부분 수정

* refactor: preconnect 추가

* fix: 백엔드 api CORS 해결에 따른 변경

* feat: 서치 페이지 반응형 구현

* fix: favicon 이미지 로드 실패시 대체 이미지 설정

* refactor: 검색 결과 로딩 및 검색 결과 없음 표시 방식 리팩토링 작업

* fix: error 상태(no result) 지속되는 문제 해결

* refactor: useGetSearch / useTotalSearch 통합

* fix: 불필요한 코드 제거

* fix: 불필요한 네트워크 요청 줄이기

* refactor: getSearch 응답 data 타입 정의

* fix: api url 변경에 따른 수정

* refactor: 불필요한 코드 삭제 및 수정

* chore: upgrade @yourssu/design-system-react (#97)

- 1.0.0 -> 1.0.1

* fix: 확장자 수정 (#99)

에러 뜨는 확장자 수정

* fix: lint-error (#103)

fix: lint-error

* chore: 라우터 적용에 따른 vercel.json 추가 (#104)

chore: 라우터 적용에 따른 vercel.json 추가

* fix: 랭킹 페이지 `Category` 에러 해결 (#96)

- react-hook-form 훅은 등록 페이지에 있는 `Category`에서만 호출하게 분리

* chore: install @yourssu/logging-system-react (#106)

* feat: 서랍장 서비스 등록 API 연결 (#108)

* feat: `drawerClient` axios 인스턴스 추가

* feat: `uploadImages()` API 요청 함수 추가

* refactor: `ImageListResponse` 타입 분리

* feat: `registerProduct()` API 요청 함수 추가

* feat: `Loading` 컴포넌트 추가

* feat: `useRegisterProduct()` 커스텀 훅 추가

* feat: `Register` 컴포넌트 API 연결

* refactor: `ImageListResponse.type.ts` -> `image.type.ts`로 이름 변경

* fix: `baseURL` 환경변수로 분리

* refactor: `useRegisterProduct` -> `usePostRegisterProduct`로 이름 변경

* feat: `RegisterFormValue` 타입 추가

* refactor: `registerProduct()` 함수 `product` 매개변수에 타입 적용

* feat: 로그아웃 모달 구현 (#92)

* feat: 로그아웃 모달창 구현

* fix: `RealTimeKeywordImage` 구성 일부 수정
- 뿌슝이 이미지 .png -> .webp로 변경
- 검색 키워드 클릭시 이동하는 링크 변경

* rename: Home 페이지 파일 위치 이동

* fix: `LogoutModal`에서 close 안되는 문제 해결

* feat: 마이페이지 로그아웃 메뉴와 모달창 연결

* fix: 임시 타이포를 YDS 타이포로 변경 및 YDS 변경으로 인한 타이포 값 변경

* fix: 디자인 수정에 따라 로그아웃 모달 내 텍스트 삭제

* feat: 서랍장 상세 페이지 API 연결 (#109)

* feat: `ProductDetailResult` `ProductDetailResponse` 타입 생성

* feat: `ProductDetailResult` 타입에 `webpageUrl` 속성 추가

* feat: drawerClient, 상세 정보 api 함수 추가

* feat: 상세 정보 query 추가

* feat: `ProductResult` `ProductResponses` 타입 생성

* feat: 제작자 서비스 더보기 api 함수 추가

* feat: 제작자 서비스 더보기 query 추가

* refactor: actionType, category 속성 별도의 타입으로 분리

* refactor: baseUrl 환경변수화

* feat: `MoreProductSection` 썸네일 이미지 추가

- SmallDrawerCard props 중 smallImgSrc로 mainImage를 넘김

* refactor: useQuery select()를 사용한 data 빼내기

* refactor: `MoreProductSection` 컴포넌트를 /drawer/components 하위로 분리

* refactor: `getProductByProvider` page 인자 추가, 파라미터 위치 수정

- url에 백틱으로 넣던 파라미터를 params 객체로 옮김

* design: hex 값 YDS 컬러로 바꾸기

- base color logoXXX는 semantic color로 pointXXX임

* refactor: `useGetProductByProvider` queryKey에 수정

- 'productByProvider'를 추가함

Co-authored-by: hanna <[email protected]>

---------

Co-authored-by: hanna <[email protected]>

* feat: 이미지 첨부 시, 이미지 파일만 첨부될 수 있도록 조건 추가 (#101)

* feat: 이미지 첨부 시, 이미지 파일만 첨부될 수 있도록 조건 추가

* fix: `ThumbnailInput` 이미지 아닌 파일 첨부 막기

- image type이 아니면 form data 내 속성 값을 null로 설정하는 코드 추가

* refactor: 주석 제거

vercel error 확인용입니당

---------

Co-authored-by: nijuy <[email protected]>

* feat: 서랍장 메인(랭킹) 페이지 API 연결 (#110)

* chore: yarn to pnpm, remove storybook (#112)

* chore: remove storybook

* remove: yarn.lock

* chore: install pnpm-lock

* chore: update pnpm-lock file (#116)

* fix: 실시간 검색어 api 관련 수정 (#121)

* refactor: 변경된 로고 적용 (#119)

- 서랍장 헤더
- 로그인
- 검색바

* feat:  로그인 로직 개발 (#93)

* fix: SearchKeyword 에러

* feat: 로그인 useWatch연결

* feat:Homelayout변경

* feat: tokenService 추가

* feat: api 연결

* fix: 불필요한 console.log제거 및 LoginPage로 router.tsx변경

* refactor: export const로 수정

* fix: react-cookie추가

* fix: date-fns추가 + BoxButton 컴포넌트 에러해결에 따른 코드 변경

* fix: 불필요한 쿠키 설정 제거

* refactor: 컨벤션 통일

* refactor: router.tsx에도 컨벤션 바꾼 내용 반영

* fix: customedAxios export방식 변경에 따른 코드 수정

* feat: 401에러에 대해서 예외처리

* fix: auto fill 시 배경색 지우기

* refactor : Login.style.ts css수정사항 반영

* fix: 로그인 버튼 padding수정

* refactor: 깃 대소문자 구분 못하는 문제 수정

* refactor: css padding 상하좌우 속성 단축속성으로 변경

* refactor: 로그인시 별도 Error타입 삭제 및 기존 common Error type으로 변경

* refactor: LoginPage 삭제 및 router에 Login 컴포넌트 import

* fix: cache clean

* refactor: Login컴포넌트 코드를 -> Pages로 이동

* chore: package update

* fix: remove any type in error

* style: fix convention

---------

Co-authored-by: Hanna922 <[email protected]>

* style: fix code convention

* feat: 서랍장 카테고리 유형 드롭다운 구현 (#122)

* refactor: `Category` 컴포넌트 -> `RankingCategory`, `RegisterCategory` 컴포넌트로 분리

* chore: `@radix-ui/react-dropdown-menu` 라이브러리 추가

* feat: `CategoryDropdownMenu` 컴포넌트 구현

* feat: 랭킹, Star Ranking, New Releases 페이지에 `CategoryDropdownMenu` 컴포넌트 추가

* style: 1792px 이하의 화면에서 카테고리 드롭다운 메뉴가 보이도록 수정

* chore: `CategoryDropdownMenu` 컴포넌트를 `Category/CategoryDropdownMenu` 디렉토리 아래로 이동

* style: `StyledSmallDesktopCategoryContainer` -> `StyledDropdownCategoryContainer` 이름 변경

* chore: `SMALL_DESKTOP_MEDIA_QUERY` 문자열 상수 -> `mobileview.constant.ts` 파일로 이동

* chore: `CategoryList` 배열 -> `category.constant.ts` 파일로 이동

* chore: add husky, lint-staged, pre-commit (#128)

* chore: add husky, lint-staged, pre-commit

* feat: add prettier in lint-staged

* docs: CODEOWNERS.md 파일 업데이트 (#132)

- 비액티브 전환하신 분들 삭제 & 새로 합류하신 분들 추가

* feat: 개발자의 서비스 더보기 페이지 (#123)

* feat: 제작자 서비스 페이지 퍼블리싱

* feat: url에서 provierId 따오기

* fix: `ProductResult` 타입에 `isBookmarked` 속성 추가

* design: `CardSmallThumbnail` 컴포넌트에 $height 추가

* design: `StyledProviderContainer`의 gap삭제

- `CardLayout`에 margin-top: 2rem;과 중복됨

* feat: 개발자 서비스 관련 api, hook 수정

- page 기본 값을 0으로 수정, category 추가

* refactor: `CardLayout`에 있던 임시 타입, props 수정

* feat: 개발자 서비스 더보기 페이지에서 사용할 EmptyScreen 문구 추가

* feat: `Provider` 페이지 내 더미 데이터 삭제

* design: Soomsil/title22 -> YDS/title3

Co-authored-by: 이중곤 <[email protected]>

* refactor: api 함수 인자를 인터페이스로 분리

* refactor: data.length > 0 조건 명시하기

- data 조건은 useSuspenseQuery로 바꾸면서 삭제 가능할듯

* refactor: 화면 작아졌을 때 카테고리를 드롭다운 형식으로 변경

---------

Co-authored-by: 이중곤 <[email protected]>

* config: create bug report template (#135)

* config: create bug report template

* config: add setting in issue template

* config: feature_request 수정, refactor_request 추가

* Revert "config: feature_request 수정, refactor_request 추가"

This reverts commit 01e82097eb588b41c40e5cd229b0c030778164ba.

* docs: add refactor guide

---------

Co-authored-by: nijuy <[email protected]>

* feat: 홈페이지 API 연결 (#129)

* feat: 실시간 검색 키워드 API 연결

* feat: 공지사항 api 설정

* feat: 서랍장 랭킹 가져오는 hook 구현

* feat: 서랍장 랭킹 api 연동

* fix: 검색 api 오타 수정

* fix: 서랍장 랭킹 3개만 보이도록 수정

* rename: 모든 TF의 axiosClient를 soomsilClient 파일로 병합

* fix: useGetAnnouncement의 useQuery 세팅 제거 및 TODO 작성

* style: axiosClient 네이밍 수정 및 관련 import문 수정

* style: 불필요한 async 삭제

* feat: 내서랍장 페이지 API 연결 (#124)

* feat: 내 북마크, 내 서비스 api 작업

* feat: useGetBookMarked, useGetMyRegistered hook 추가

* feat: 내 서랍장 페이지 api 연결 작업

* feat: CardLayout props 수정 작업

* fix: bookmarkCount 및 ImgSrc 관련 수정

* fix: Card event.stopPropagation 추가

* style: Thumbnail object-fit: cover 추가

* feat: return 형태로 수정

* refactor: console.log 삭제

* feat: drawData length 비교하는 코드로 수정

* refactor: ProductListResponses -> ProductResponses

CardLayout.tsx data ProductResult[]로 변경

* rename: GetRanking -> RankingRequestParams

* feat: 회원가입 페이지 퍼블리싱 (#138)

* feat: 회원가입(Signup) 페이지 라우팅 처리

* feat: useFunnel 구현 완료

* feat: 재사용될 SignupFrame 컴포넌트 구현

* fix: 퍼널이 한개의 Step 만 가질 때 TS 문제

* feat: 약관문서 컨텐츠 구현 완료

* feat: 약관동의 퍼널 컴포넌트 구현 완료

* feat: AgreeTerms 필수 약관 동의 후 확인 버튼 클릭 시 이벤트 추가

* feat: 약관문서 컨테이너 디자인 피그마에 맞게 개선

* refactor: 회원가입 퍼널 컴포넌트에 공통적으로 사용되는 StyledComponent들 추출

* feat: 이메일 입력 퍼널 컴포넌트  구현 완료

* fix: 확장자명 오류 styled.ts -> style.ts

* feat: 초 단위 타이머 구현

* refactor: useSecondTimer의 resetTimer 함수를 useCallback 훅으로 감쌈

* feat: 이메일 인증 퍼널 컴포넌트 구현

* refactor: 불필요한 tsx 확장자명을 ts로 변경

* feat: 회원가입 폼 퍼널 구현 완료

* feat: 회원가입 완료 퍼널 구현 완료

* fix: 비밀번호 타입의 input 필드에서 입력한 값이 최초에만 가려지지 않는 문제

* refactor: 학교 메일 열기 링크를 window api 에서 react router Link로 변경

* feat: Signup 페이지 퍼널 구현 완료

* fix: 회원가입 폼의 닉네임에 한글, 영어, 숫자만 가능하도록 제한

* fix: 약관문서 validateDOMString 에러 수정(<ul> in <p>)

* refactor: 이메일 인증 제한시간 문자열 변환 로직을 date-fns 라이브러리로 개선

* refactor: 이용약관 동의에 대한 상태와 데이터 로직 분리

* refactor: 중복되는 padding 값 생략

* remove: Signup.style.ts 빈 파일 삭제

* fix: 이용약관 더보기 아이콘 hover 시 색상을 YDS SemanticColor로 변경

* refactor: <br> 태그를 white-space 속성으로 대체

* fix: edge에서 password type SimpleInputField에 자동으로 추가되는 suffix 제거

* fix: SignupForm에 값을 입력하는 도중에 validation을 수행하도록 수정

* refactor: 숭실대 도메인을 변수로 추출

* fix: ts as문을 타입 가드로 변경

* refactor: 삼항 연산자를 && 로 변경

* refactor: 이메일에 도메인 추가 로직을 코드 맥락에 맞게 변경

* refactor: SignupForm에서 SignupInput 컴포넌트 분리

* feat: SignupInput이 최초 한 번 valid한 값을 가지기 전까지는 경고를 띄우지 않음

* fix: drawerClient -> soomsilClient 로 변경 (#145)

* feat: 공통 로딩 컴포넌트 제작 (#139)

* chore: add "@tanem/react-nprogress": "^5.0.51"

* refactor: lazy loading 도입 및 로딩바 추가

* feat: 프로그레스바 컴포넌트 생성

* fix: 로딩 컴포넌트가 부모의 중앙에 위치하도록 수정

* fix: search 로딩 컴포넌트 공통 컴포넌트로 수정

* chore: lint-staged {ts, tsx}만 검사하도록 변경 (#142)

chore: add js, jsx in lint-staged

* fix: error type and naming (#147)

* rename: env baseUrl

- header 제거합니다.

* fix: url in DrawerRanking

* fix: remove Common Error & fix error type

* refactor: specify headers in postAuthSignIn

* refactor: apply review

* feat: 서랍장 상세 페이지 북마크 API 연결 (#125)

* feat: bookmark 관련 api 작업

* fix: page 0으로 설정

* feat: 서비스 상세 페이지 bookmarked api 연결 작업

* refactor: useGetNewRelease, useGetStarRank를 useQuery로 변환

* refactor: StarRanking, NewRelease 바뀐 hook에 맞게 수정

* delete: delete useGetMain, Ranking 수정

* feat: productBookmarkKey not nullable

* feat: data에 product 이름 설정

* feat: soomsilClient로 수정 및 undefined 삭제

* feat: product로 이름 수정 및 useMutation 작업

* feat: ErrorBoundary를 사용한 에러 처리 (#152)

* chore: react-error-boundary 설치

* refactor: `Search` 내 Errorboundary를 react-error-boundary로 교체

- 기존 클래스형 ErrorBoundary 삭제

* feat: `Fallback` 컴포넌트 구현

* feat: `Router` `DrawerLayout`에 `ErrorBoundary` 적용

* refactor: `useGetProductDetail`에 useSuspenseQuery 사용

- data !== undefined인 점이 보장되므로 `ServiceDetail`에서 isSuccess 관련 코드 삭제

* refactor: `useGetProductByProvider`에 useSuspenseQuery 사용

- - data !== undefined인 점이 보장되므로 `Provider`에서 data 조건 삭제

* refactor: `useGetBookmarked` `useGetMyRegistered`에 useSuspenseQuery 사용

- data !== undefined인 점이 보장되므로 `MyDrawer`에서 drawerData 조건 삭제

* feat: `Login`에서 400 에러 아닐 때만 ErrorBoundary로 넘기기

- 400 에러 = 요청 형식 문제 = 다시 입력할 수 있게 로그인 페이지에 남아있어야 함

* refactor: `Fallback` 컴포넌트에서 status를 보고 fallback 선택하도록 수정

- 에러 위치는 서버 메시지가 아니라 window.location으로 판단함. backUrl을 위해 분리해뒀던 FallbackDrawer도 삭제

* fix: `FallbackProps` import 경로 수정

- react-error-boundary에서 타입을 가져오도록 수정

* refactor: `getBackUrl()`을 삼항 연산자로 대체

* refactor: `renderFallback()`을 조건문으로 대체

- 굳이 함수로 빼서 처리할 이유가 없음

* refactor: `Router`에서 Fallback import 방식 수정

- 동적 로딩할 이유가 없음

* refactor: `Bar` 컴포넌트 React.FC 삭제

- 스타일 컴포넌트 오타 수정, 상대 경로 -> 절대 경로 수정도 끼움

* refactor: `FallbackWithNavigate` `FallbackWithDetail` 삭제

* refactor: `Fallback`으로 합침

- navigate button이 모든 fallback에 들어가면서 저 둘을 굳이 분리할 필요가 없어짐

* refactor: `FallbackContent` 타입의 buttonText를 필수 속성으로 변경

- 서버 에러든 클라이언트 에러든 버튼은 무조건 들어감

* docs: CODEOWNERS.md 파일 업데이트 (#159)

- 미루고 미루던 MJ 추가

* feat: Home 화면의 검색창 및 헤더 구현 (#150)

* feat: 홈 헤더 구현

* style: 서랍장 이동 링크 오타 수정

* feat: 검색 기능 구현

* style: HomeLayout을 Home으로 병합

* design: HomeLayout 삭제로 인한 회원가입 페이지의 요소들 위치 조정

* design: HomeLayout 삭제로 인한 Nav 위치 수정

* design: Nav의 Dropdown에서 로그아웃 버튼 curor: pointer 추가 TODO 주석 추가

* feat: 드롭다운 외부 영역 클릭 시 닫히도록 구현

* feat: 유저 정보를 저장하는 전역상태 구현

* feat: 유저 정보를 가져오는 api 및 hook 구현

* feat: 유저 정보 가져오는 api 연동
- 로그인 직후 유저 정보 가져오도록 구현
- 홈 진입 시, 로그인이 되어 있는데 유저 정보가 없는 경우 가져오도록 구현

* feat: Nav에 유저 정보 반영

* design: 디자인 코드 수정
- 홈에서 가로 스크롤 안 생기도록 수정
- px -> rem 으로 수정

* refactor: 중복되는 스타일의 div를 감싸는 것 대신 하위 컴포넌트의 스타일을 변경

* style: Home에서 로그인 여부 확인 로직을 useIsLoggedIn 커스텀 훅으로 분리

* style: 불필요한 css 코드 삭제

* design: 키워드 너비 고정되도록 수정

* design: 배경 이미지 height 수정 및 SearchBox padding 값 수정

* design: 화면 축소 시 세로 스크롤 생기는 문제 해결

* design: 서랍장 랭킹 섹션 width 고정되도록 변경

* style: 로그인 이후 로직 순서 변경

* rename: useIsLoggedIn 파일 위치 변경

* feat: 로그인 페이지에서 로고 클릭 시 홈페이지로 이동

* refactor: 토큰 저장 시 만료 기한 정보도 함께 저장되도록 수정
- 로그인 여부 확인하는 코드 수정
- 세션 스토리지를 이용한 토큰 만료기한 저장 코드 삭제

---------

Co-authored-by: fecapark <[email protected]>

* refactor: 서랍장 상세페이지 providerId -> providerName 교체 작업 (#157)

* feat: providerName 속성 추가

* feat: providerId -> providerName

* refactor: 서랍장 UI 버그 수정, 코드 리팩토링 (#153)

* refactor: NOT_FOUND_TEXT를 props에서 `EmptyScreen` 내부로 이동

* remove: ProductList.type.ts 삭제

- 기존에 여기 있던 타입을 사용하는 코드는 체리가 미리 수정해줘서 삭제만 함

* design: "카테고리 유형" 글씨에 스타일 적용

- Soomsil/Drawer/Web/title18 == YDS title5

* design: `StyledProductImage`에 flex-shrink:0 추가

- 부모 컨테이너 크기에 맞추느라 지정된 크기 (440 * 296) 보다 작아지던 현상을 수정

* refactor: `EmptyScreen`의 삼항 연산자를 &&로 대체

- 조건이 거짓일 때 띄울 게 없어서

* refactor: 불필요한 스프레드 연산자 삭제

Co-authored-by: MJ <[email protected]>

* fix: `Header` `ServiceRemoveModal` z-index 조절

- 나중에 서랍장 헤더에 달릴 DropDown의 z-index = 10이라 Modal에서는 z-index = 11로 함

* fix: `StyledIconButtonContainer`를 `DropDownMenu.Trigger` 외부로 이동

- 내부에 있으면 컨테이너 클릭해도 카테고리가 열림

* refactor: z-index를 객체로 관리하도록 수정

---------

Co-authored-by: MJ <[email protected]>

* Fix: ServiceDetail, Fallback 컴포넌트에서 발생하는 타입 에러 수정 (#166)

* fix: `MoreProductSection`에 providerName props 추가

- 원래 있던 코드인데 develop과 병합하면서 날아가서 다시 넣음

* fix: `getFallbackContent` 마지막 return문에 buttonText 필드 추가

* fix: providerId -> providerName

- 여기도 develop 합치면서 다시 돌아갔음

* feat: 회원가입 / 이메일 인증 api 연동 (#158)

* feat: 이메일 인증 요청 보내는 함수 구현

* feat: 이메일 인증 확인, 회원가입 api 연결

* fix: 에러 반환할 때 error 객체를 직접 반환하지 않고 error.response.data를 반환하도록 함

* fix: customedAxios를 authClinet로 변경

* feat: EmailAuth에 이메일 인증 & 확인 기능 추가

* refactor: EmailForm에서 인증 메일 요청을 보내도록 변경

* design: EmailForm에 이메일 에러 표시 추가

* refactor: Email Verification Type 지정

* refactor: sendAuthenticationMail props 삭제

* fix: error data type 관련 error 수정

* feat: 회원가입 기능 추가

* feat: 이메일 전송 중 버튼 disabled

* refactor: console 관련 TODO 해결 및 삭제

* refactor: postAuthVerificationEmail 함수 객체 형식으로 변경, api 관련 함수 타입 네이밍 params로 일괄 변경

* refactor: set 함수와 로직 분리

* refactor: storageKeys constant로 관리

* refactor: postAuthSignUp 호출 시 구조 분해 할당 적용

* feat: 회원 가입 이후 세션 정보 삭제

* feat: postAuthSignUp, postAuthVerificationEmail 함수 객체 자체를 받도록 변경

* feat: 로고 클릭 시 홈 화면으로 이동

* refactor: storageKeys.ts constant로 옮기고 네이밍 변경

* refactor: verificationCheckProps 삭제

* feat: EmailAuth 에러 텍스트로 표기, 재전송 관련 에러 처리

* refactor: setError 코드 간결화

* refactor: query parameter config에 명시

* refactor: EmailAuth, EmailForm, SignUpForm handler state hook으로 분리

* �feat: 계정탈퇴(Withdraw) 페이지 퍼블리싱 (#155)

* feat: 계정탈퇴 (Withdraw) 페이지 생성 및 라우팅 (lazy 적용)

* feat: 계정탈퇴 페이지 퍼블리싱 구현 (#143)

* refactor: 핸들러 함수 이름 변경

* refactor: Typos 중복 스타일 삭제

* refactor: StyledComponent 작성 방식 수정

* refactor: drawn 컴포넌트 삭제 후 기존 페이지에 병합

* [refactor] eslint 적용 안 되던 부분 수정

* [refactor] padding 스타일 겹치는 부분 수정

* [refactor] Styled 이름 변경

* [refactor] 없어도 되는 style 삭제 (text-align: left;)

* refactor: 중첩된 Withdrawn 함수를 외부로 이동

* refactor: handleCheckAgree를 함수형 업데이트로 상태 관리 변경

* rename: apply apis conventions in drawer apis (#170)

* rename: apply apis conventions in drawer apis

* refactor: add space for line error

* feat: Token management with axios interceptors (#169)

* feat: 로그인 페이지 코드 리팩토링  (#164)

* feat: email 도메인 관련 상수 추가

* feat: 이메일에 도메인을 붙여주는 useFullEmail.ts 추가

* feat: 로고 클릭시 홈으로 가는 기능 추가

* style: 로고에 cursor: pointer 추가

* refactor: 이메일에 도메인을 붙이는 과정을 useFullEmail로 추출

* refactor: 로그인 페이지 리팩토링

* refactor: StyledLoginInputHelperLabel color theme color로 변경

* feat: 로그인 상태시 /login에서 홈으로 리다이렉트

* refactor: 서랍장 상세페이지 providerId -> providerName 교체 작업 (#157)

* feat: providerName 속성 추가

* feat: providerId -> providerName

* refactor: 서랍장 UI 버그 수정, 코드 리팩토링 (#153)

* refactor: NOT_FOUND_TEXT를 props에서 `EmptyScreen` 내부로 이동

* remove: ProductList.type.ts 삭제

- 기존에 여기 있던 타입을 사용하는 코드는 체리가 미리 수정해줘서 삭제만 함

* design: "카테고리 유형" 글씨에 스타일 적용

- Soomsil/Drawer/Web/title18 == YDS title5

* design: `StyledProductImage`에 flex-shrink:0 추가

- 부모 컨테이너 크기에 맞추느라 지정된 크기 (440 * 296) 보다 작아지던 현상을 수정

* refactor: `EmptyScreen`의 삼항 연산자를 &&로 대체

- 조건이 거짓일 때 띄울 게 없어서

* refactor: 불필요한 스프레드 연산자 삭제

Co-authored-by: MJ <[email protected]>

* fix: `Header` `ServiceRemoveModal` z-index 조절

- 나중에 서랍장 헤더에 달릴 DropDown의 z-index = 10이라 Modal에서는 z-index = 11로 함

* fix: `StyledIconButtonContainer`를 `DropDownMenu.Trigger` 외부로 이동

- 내부에 있으면 컨테이너 클릭해도 카테고리가 열림

* refactor: z-index를 객체로 관리하도록 수정

---------

Co-authored-by: MJ <[email protected]>

* Fix: ServiceDetail, Fallback 컴포넌트에서 발생하는 타입 에러 수정 (#166)

* fix: `MoreProductSection`에 providerName props 추가

- 원래 있던 코드인데 develop과 병합하면서 날아가서 다시 넣음

* fix: `getFallbackContent` 마지막 return문에 buttonText 필드 추가

* fix: providerId -> providerName

- 여기도 develop 합치면서 다시 돌아갔음

* refactor: useFullEmail/useRedirectLoggedInEffect 훅 클린코드 및 confilct 해결

* �feat: 계정탈퇴(Withdraw) 페이지 퍼블리싱 (#155)

* feat: 계정탈퇴 (Withdraw) 페이지 생성 및 라우팅 (lazy 적용)

* feat: 계정탈퇴 페이지 퍼블리싱 구현 (#143)

* refactor: 핸들러 함수 이름 변경

* refactor: Typos 중복 스타일 삭제

* refactor: StyledComponent 작성 방식 수정

* refactor: drawn 컴포넌트 삭제 후 기존 페이지에 병합

* [refactor] eslint 적용 안 되던 부분 수정

* [refactor] padding 스타일 겹치는 부분 수정

* [refactor] Styled 이름 변경

* [refactor] 없어도 되는 style 삭제 (text-align: left;)

* refactor: 중첩된 Withdrawn 함수를 외부로 이동

* refactor: handleCheckAgree를 함수형 업데이트로 상태 관리 변경

* refactor: 파일 끝에 개행 적용(eslint 적용)

* refactor: 이메일 도메인 상수로 변경

* refactor: useEmailForm의 fullEmail 로직을 훅으로 변경

* fix: Login 페이지 하단 버튼에 textTertiary 색상 적용

* Merge branch 'develop' into feat/#149-login-page-refactoring

---------

Co-authored-by: fecapark <[email protected]>
Co-authored-by: 심민성 <[email protected]>
Co-authored-by: Chaeyeon Seo <[email protected]>
Co-authored-by: MJ <[email protected]>
Co-authored-by: solmee <[email protected]>
Co-authored-by: Hanna922 <[email protected]>

* feat: 마이페이지 요소 링크 / 비밀번호 변경 퍼블리싱 및 api 연결 (#160)

* feat: 마이페이지 하위 웹 정보 요소 클릭 시 링크 연결

* feat: 로그아웃 버튼 클릭 시 로그아웃 처리 후 홈화면으로 이동

* feat : 현재 비밀번호 입력 페이지 퍼블리싱

* feat: 비밀번호 확인 api

* feat: 비밀번호 input 컴포넌트 및 현재 비밀번호 매칭 페이지 퍼블리싱

* fix: axios client 네이밍 맞춰 수정

* feat: useFunnel 사용해서 비밀번호 변경 페이지 퍼블리싱

* fix: 비밀번호 변경 로직 수정 및 애니메이션 추가

* feat: 마이페이지에서 버튼 클릭 시 비밀번호 변경 페이지로 이동

* fix: 컴포넌트 배치 디테일 피그마 맞춰서 수정

* fix: 비밀번호 확인 api 리턴 객체 수정

* feat: sessionToken 상태 추가, 추후에 비밀번호 변경 api에 사용

* fix: Frame 만들어서 공통으로 들어가는 로고 배치

* fix: 필요없는 파일과 코드 삭제

* feat: 비밀번호 입력 input에 눈 모양 아이콘 추가

* feat: 로그인이 안돼있다면 alert창 띄움

* refactor: Mypage 절대경로 상대경로로 변경

* fix: api 네이밍 수정과 로직 간편화

* fix: password match api 네이밍 변경, if return 구조로 변경

* fix: NewPasswordForm 컴포넌트 상태 및 핸들러 분리

* fix: CurrentPassword components 상태 및 핸들러 분리

* fix: router 계층 구조 변경

* fix: interface 선언 위치 변경

* fix: style에서 yds color 적용, 함수 인자 구조 변경

* fix: Props 구조 변경, useLoggedIn 훅 사용

* fix: router 경로 오타 수정

* refactor: error type 적용, sessionStorage 변경 사항 적용

* refactor: yds 컬러 적용, 주석 삭제

* fix: correction of typos

* fix: error correction from #169 merge

* fix: getUserPasswordMatch 리턴 타입 변경
수정 전:  data와 error가  GetPasswordResponse의 멤버 match와 함께 sessionToken과  error로 반환
수정 후: GetPasswordResponse로 반환하지 않고 각자 data와 error로 반환

* fix: padding 스타일 수정

---------

Co-authored-by: 심민성 <[email protected]>
Co-authored-by: TCTA-015 <[email protected]>
Co-authored-by: Hanna922 <[email protected]>

* chore: update yds version, update pnpm (#176)

* refactor: 서랍장 메인 화면 배너 이미지 교체 (#151)

* refactor: 기존 soomsil 로고 파일 삭제

* refactor: 서랍장 배너 이미지를 S3에 업로드된 이미지로 교체

* chore: `soomsil_v2_logo` -> `soomsil_logo`로 파일 이름 변경

* refactor: remove unused custom event (#177)

* fix: 로고 파일 이름 변경 사항이 반영되지 않았던 컴포넌트 수정 (#179)

* chore: install YDS v1.1.1 (#188)

* refactor: ProviderProductResponses 구조 변경 및 관련 코드 리팩토링 (#187)

* feat: ProviderProductResponses 타입 생성

* fix: ProviderProductResponses 구조에 맞게 코드 수정

* refactor: 불필요한 select 삭제

* refactor: Provider.tsx id -> name 교체 및 ProviderProductResponses에 따른 수정

* �feat: 계정탈퇴 페이지 ��API 연결 (#173)

* feat: 회원탈퇴 post 보내는 함수 및 타입 구현

* feat: Withdraw 페이지에 함수 연결 후 탈퇴 구현

* fix: 로고 클릭 시 홈 이동 로직 추가 및 탈퇴 후 자동 홈 이동 로직 삭제

* fix: 탈퇴 완료 페이지 수정

* refactor: handleWithdrawAgree함수에서 필요없는 조건문 제거

* refactor: 에러 타입 단언 부분 수정

* 탈퇴 후 이동 로직(기존 Withdrawn)을 WithdrawSuccess 컴포넌트로 분리

* refactor: BoxButton에 필요 없는 style 속성 제거

* feat: 서랍장 상세 페이지 완성 (#178)

* feat: url마다 BoxButton 추가

* feat: `MoreProductSection`에 페이지 이동 버튼 추가

- 프로덕트는 최대 5개까지만 노출

* feat: SHARE 버튼 클릭시 클립보드에 url 복사

* fix: `productUrls.map()`에 key 추가

* feat: `ServiceDetail`에 YDS Toast 추가

- SHARE 버튼 클릭시 토스트 메시지로 복사된 걸 알림

* refactor: queryClient.invalidateQueries 쿼리키 수정

- productNo 추가
- MoreProductSection은 백엔드 스펙 변경으로 에러 나서 잠시 주석 처리

* refactor: `MoreProductSection`의 data.length를 if문으로 확인

* fix: slice(0,5)를 `MoreProducttSection` 내부로 이동

- useGetProductByProvider 훅은 Provider 페이지에서도 사용하는 훅이라 여기서 자르면 안됨

* fix: `handleClickShare`를 async 함수로 수정

- 클립보드 접근이 프로미스를 반환함

* refactor: `ServiceDetail`의 Category를 상수 파일로 이동

- CategoryObj로 이름 변경
- 직접 값 넣는 게 아니라 CategoryList를 가공해서 생성하도록 수정

* refactor: `MoreProductSection` 컴포넌트 파일 위치 이동

- src/drawer/components/ServiceDetailContents

* refactor: `ServiceDetail`에서 `Carousel` 분리

* refactor: `ServiceDetail`에서 `Description` 분리

* refactor: `ServiceDetail`에서 `ServiceAction` 분리

- 토스트 위치가 이상한데 YDS 구버전이 남아서 그런건지 확인 필요

* refactor: toastProps 타입 단언 -> const assertion

* refactor: `MoreProductSection` return undefined -> return null

* refactor: `MoreProductSection` data에 구조 분해 할당 적용

- providerName prop은 없어도 되는 값이라 삭제함 (훅에서 받는 데이터에도 있음)

* refactor: `useGetProductDetail`에서 useSuspenseQuery를 바로 반환하게 수정

* refactor: search 페이지 코드 개선 (#162)

* refactor: search FallbackComponent 추상화 작업

* refactor: ResultListItems -> ResultList 컴포넌트명 변경

* refactor: useScrollObserve hook 분리

* chore: ppussungError svg 추가

* feat: 서버에러 FallbackComponent 제작

* fix: 불필요한 코드 삭제

* fix: StyledTextContainer 스타일 속성 추가

* refactor: 검색 결과 없음 customErrorcode으로 리팩토링

* refactor: navigation_options 상수화

* refactor: 무한스크롤 코드 리팩토링

* refactor: suspense TotalCount 컴포넌트 내부로 이동

* refactor: YDS 제거 및 StyledBoxButton 추가

* fix: navigate(0) -> navigate(-1)

* fix: ResultListItem -> ResultList 폴더명 수정

* refactor: customError 함수형으로 수정 및 네이밍 수정

* fix: 이름 속성값 고정 -> 인자로 받는 것으로 변경

* fix: FallbackComponent -> ErrorFallback rename

* feat: NoResultFallback 컴포넌트 제작

* fix: 숨실 -> 숨쉴 오타 수정

* refactor: error 처리 방식 -> NoResultFallback 처리 방식 수정

* fix: 불필요한 코드 삭제

* fix: 불필요한 코드 삭제

* refactor: 로그인 / 회원가입 페이지의 TextField를 YDS 컴포넌트로 교체 (#182)

* refactor: 로그인 페이지 YDS 컴포넌트로 대체

* refactor: 회원가입 페이지 YDS 컴포넌트로 리팩토링

* refactor: hiddenfield를 위한 isMarked 추가

* chore: update pnpm lock file

local에서도 error를 감지할 수 있도록 pnpm store prune 실행 후 package도 재설치합니다.

* refactor: 비밀번호 변경 페이지 PasswordTextField 적용

* refactor: EmailAuth에 SuffixTextField 적용

* refactor: EmailForm에 SuffixTextField 적용

* refactor: CurrentPasswordForm.tsx 매개변수에 cammel case 적용

* refactor: NewPasswordForm.tsx의 2개 이상의 상태 조합을 변수로 추출

---------

Co-authored-by: Hanna922 <[email protected]>

* refactor: PasswordTextField의 isMarked에 기본값 적용 (#193)

* chore: update yds version (v1.1.2) (#195)

* feat: 개발자 서비스 더보기 페이지 무한 스크롤 구현 (#192)

* refactor: `useScrollObserve`를 공용 훅으로 이동

- SearchResponses로 고정되어있던 타입을 제네릭으로 수정

* feat: `useGetProductByProvider`를 `useSuspenseInfiniteQuery`로 변경

- page param 삭제

* feat: `Provider` 페이지에 무한 스크롤 적용

* fix: `useGetProductByProvider` 훅 변경에 따른 `MoreProductSection` 수정

- 0페이지의 프로덕트만 쓰도록 수정

* refactor: `Provider` 표현식 조건 수정

- 0페이지 products가 비었을 때만 `EmptyScreen`

* feat: 내 서랍장, 랭킹 페이지 무한 스크롤 구현 (#185)

* feat: 랭킹 페이지(StarRanking, NewRelease) 무한 스크롤 적용

* feat: 내서랍장 페이지(Star, MyProduct) 무한 스크롤 적용

* fix: page props 옵셔널 설정

* fix: 데이터 없을 시 EmptyScreen 안뜨는 문제 해결

* refactor: ProductRequestParams로 이름 변경 및 page 필수 속성으로 변경

* refactor: ProductRequestParams 이름 변경에 따른 코드 수정

*필수 속성인 page 속성 필요 없는 훅에 Omit 처리

* refactor: flat().map() 형식으로 수정 및 list 및에 div 두는 방식으로 수정

* feat: PRODUCTS_PER_PAGE 상수로 따로 생성

* fix: getNextPageParam 조건 에러 수정사항

*상수로 만든 PRODUCTS_PER_PAGE 이용

* feat: 내서랍장 부분 무한 스크롤 적용

* refactor: 검색 키워드 컴포넌트 통합 (#189)

* refactor: RealTimeKeyword와 SearchKeyword 코드 일치

* refactor: RealTimeKeyword와 SearchKeyword 통합

* refactor: props => variant 받도록 변경

* refactor: children props 대신에 태그 사이에 넣도록 변경

* fix: styled-component props $ 컨벤션으로 수정

* design: StyledListItemRanking YDS font로 변경

* refactor: props와 component 코드 사이에 엔터 추가

* refactor: variantStyles constant 파일로 분리

* refactor: white-space + 개행 문자로 줄바꿈

* design: figma icon 관련 변경 사항 적용

* design: ListItem 삭제 후 figma 디자인 재반영

* refactor: StyledListItem div에서 li로 변경

* chore: install YLS v1.1.0, utils v0.2.1 (#213)

* chore: install YLS v1.1.0, utils v0.2.1

* feat: setting YLSWrapper

* �feat: Home 공지사항 API 연결 (#205)

* feat: 공지사항 API 타입 정의

* feat: 더미데이터 삭제 및 공지사항 API 연결

* refactor: useQuery를 useSuspenseQuery로 바꾸어 선언적으로 에러와 로딩 상태 처리

* refactor: useGetAnnouncement 훅에 select 사용 및 Notification 컴포넌트의 데이터 처리 변경

* refactor: 배열 추가 방법을 수정하여 무한 슬라이드 로직 단순화

* refactor: useEffect를 사용하여 무한 슬라이딩 로직 관리

* fix: 비밀번호 정규식 및 코멘트 변경 (#217)

* fix: 비밀번호 정규식 및 코멘트 변경

* fix: 공백으로만 이루어진 문자열 필터링

* feat: 서랍장 로그인 모달 제작  (#200)

* feat: 전역상태 DialogState 생성

* feat: 공용 컴포넌트 `CustomDialog`  생성

- Dialog는 radix랑 이름이 겹쳐서 Custom 붙임
- 사용처에서 Dialog 내부 컨텐츠를 children으로 넘겨주는 방식

* feat: `LoginDialog` 컴포넌트 생성

- 서랍장에서 비로그인 상태로 회원 전용 기능을 시도 / 페이지에 접근할 때 발생

* design: `CustomDialog` 크기, padding 수정

* chore: `ProfileSvg` 컴포넌트를 공용 컴포넌트로 이동

- 홈 말고 서랍장에서도 써야함

* chore: defaultProfile 이미지 공용 에셋으로 이동

- 서랍장에서도 씀

* refactor: `CustomDialog`를 `BrowserRouter` 내부로 이동

- `LoginDialog`에서 useNavigate() 쓰려고

* fix: `DialogState`의 persist 삭제

* refactor: Dialog의 type을 지정하는 방식으로 수정

* fix: `Header` handleClick e 타입 지정

- 이름도 event로 수정

* refactor: dialog 객체를 상수로 분리, DiglogData 타입 수정

- DialogType을 삭제하고 keyof typeof DIALOG를 사용

* refactor: bookmarkMutation을 1개로 통합

- product.isBookmarked로 mutationFn만 바꿈

* refactor: `ServiceRemoveModal` -> `ServiceRemoveDialog`

* refactor: `LoginDialog` handleClick 삭제

- dialog 닫는 건 DialogClose로 감싸면 될 일

* refactor: `ServiceRemoveDialog`에서 setDialog(null) 삭제

- Dialog.Close로 감싸져있어서 안해도 됨

* Revert "refactor: `ServiceRemoveDialog`에서 setDialog(null) 삭제"

This reverts commit f2dc6e683f9176f2e1d4e1183f8d417057aee1cb.

* Revert "refactor: `ServiceRemoveModal` -> `ServiceRemoveDialog`"

This reverts commit 2a5d8187d80e1af258c59b59bbb86770e49c3b31.

* refactor: `handleClick` -> `handleClickAuthTab` in Header.tsx

- 로그인이 필요한 메뉴를 클릭했을 때 작동하는 핸들러임을 드러내도록 이름 수정

* refactor: `handleClickStar`의 조건을 긍정으로 수정

* feat: 서랍장 헤더 프로필 아이콘에 드롭다운 메뉴 연결 (#202)

* feat: `ProfileDropdownMenu` 컴포넌트 구현

* feat: `ProfileIconButton` 컴포넌트 구현

* feat: 서랍장 헤더에 `ProfileIconButton` 컴포넌트 연결

* refactor: 메인페이지 헤더에 `Dropdown` 컴포넌트 대신 `ProfileIconButton` 컴포넌트 연결

* feat: `CardSettingDropdownMenu` 컴포넌트 구현

* refactor: `UserDrawerCard` 컴포넌트가 `Dropdown` 컴포넌트 대신 `CardSettingDropdownMenu` 컴포넌트를 사용하도록 변경

* chore: 사용하지 않는 `Dropdown` 컴포넌트 제거

* chore: `CardSetting` 컴포넌트의 인자 이름을 `forwardRef` -> `ref`로 변경

* refactor: `props` 이후에 `onClick` prop을 넘기도록 수정

* refactor: 로그인 로직을 mutation으로 분리

* feat: `getUserData` 쿼리에 `staleTime: Infinity`를 설정하여 불필요한 네트워크 요청 방지

* fix: 드롭다운 width의 크기가 고정인 문제

---------

Co-authored-by: Sanghyeok Park <[email protected]>

* fix: 회원탈퇴 후 유저정보가 남아있는 버그 수정 (#208)

* feat: LoginState, UserState, logout을 전부 초기화 하는 useResetUserInfo훅 구현

* fix: 기존 postWithdraw 함수에서 로그아웃 부분 제거

* fix: Withdraw에서 탈퇴 성공 시 useResetUserInfo 불러와서 정보 삭제하도록 수정

* refactor: 기존 resetUserInfo으로 분리했던 코드를 하나로 통합

* refactor: postWithdraw 로직을 mutation을 활용하여 분리 및 alert 대신 errorboundary로 수정

* fix: UserState 관련 코드 삭제

* feat: usePreventDuplicateClick 생성 및 회원 가입 프로세스에 적용 (#219)

* feat: 서랍장 서비스 삭제 API 연결 (#211)

* feat: `deleteProduct` api 함수 생성

* feat: 서비스 삭제 API 연결

- 내 서비스를 북마크했을 수도 있어서 내 서랍장 쿼리 2개 모두 무효화

* fix: 쿼리 무효화 코드를 onSuccess로 이동

* fix: 회원가입 약관 중 커뮤니티 이용규칙 수정 (#227)

* fix: `CommunityTerm` 내용 수정

* chore: `커뮤니티 이용규칙` required: true로 변경

* design: `커뮤니티 이용규칙` 시행일자 strong -> StyledTermParagraph

* fix: 프로덕트 이미지 등록 조건 서버와 통일하기 (#226)

* fix: input accept 포맷 제한

- 이미지 중에서도 일부 포맷만 허용함

* design: `파일 첨부` 버튼 커서 모양 지정

* fix: 이미지 type 검사 조건 변경

* refactor: 로그인/회원가입 폼에 react-hook-form 적용 (#223)

* rebase: from develop

* refactor: SignupForm에 rhf 적용완료

* refactor: pr #217에 맞게 수정

* refactor: import 경로 @ 적용

* refactor: 확장자명 tsx -> ts

* fix: button들에 type=button 설정

* fix: button들에 type button 추가 설정

* fix: 닉네임 검사시 누락된 isBlank 함수 추가

* fix: 약관동의를 첫 페이지로

* remove: 중복되는 파일 제거

* feat: 서랍장 검색 페이지 작업 (#212)

* feat: 서랍장 검색 api getSearchData 작업

* feat: ProductSearchRequestParams 타입 추가

* feat: useGetSearchData 훅 작업

* feat: 서랍장 검색 api 연결 및 검색 페이지 추가

* design: YDS Typo로 변경(subtitle2)

* refactor: api.logout() -> useResetUserInfo() (#230)

* feat: 로그아웃 기능 추가 (ProfileDropdownMenu)

* feat: 로그아웃 기능 추가 (LogoutModal)

* feat: 비밀번호 변경 API 연결 (#196)

* feat: 비밀번호 변경 api 구현

* feat: 비밀번호 변경 api 로그인 정보 및 유저 정보 확인

* feat: 변경 성공 시 새로운 accessToken 쿠키 설정

* refactor: 이전 비밀번호와 같은 비밀번호 입력 시 새로운 에러메세지 출력

* fix: 비밀번호 확인 시 에러메세지 표시되지 않는 버그 수정

* refactor: state 줄이고 if return 문으로 구조 변경

* fix: package-lock.json 제거

* refactor: newPasswordForm 컴포넌트 react-hook-form으로 리팩토링

* refactor: 비밀번호 확인 유효성 검사 로직 수정 및 api 호출부 함수 분리

* refactor : mutation으로 api 호출 후 동작 위임, 맞춰서 PostChangePassword api 수정

* fix: import 오류 fix, 비밀번호 정규식 통일

* fix: api error throw 삭제

* fix: 사용하지 않는 import 삭제

* fix: userState 사용하는 로직 삭제

* fix: soomsilClient.response.interceptor 무한 루프 문제 (#210)

* feat: `authClient.response.interceptor` 추가

- accessToken 재발급 과정에서도 에러 나면 로그아웃 처리

* refactor: interceptor 인자에 함수 바로 넣는 방식으로 수정

* refactor: 로그아웃 처리를 soomsilClient로 이동

- authClient용 인터셉터 삭제
- refreshToken 함수 수정

* feat: home-yls (#220)

* feat: 퀵링크에 logging-system 연결

* refactor: useQuickLink 훅에서 QuickLink 컴포넌트로 변경

* fix: user data recoil에서 react-query로 변경

* fix: 모든 퀵링크 로그 남기도록 수정

* delete: platform 제거

* �feat: 비밀번호 재설정 페이지 퍼블리싱 및 API 연결 (#233)

* feat: 초기 페이지 생성 및 라우터에 페이지 추가

* feat: 비밀번호 재설정 페이지 퍼블리싱

* feat: email 상태 추가

* feat: 이메일 인증 요청하기 api 연결

* feat: 이메일인증 스텝에 이메일 인증 요청하기 api 연결하여 인증 메일 재전송 구현

* feat: 이메일인증 스텝에 이메일 인증 여부 확인하기 api 연결

* feat: 비밀번호 변경 api 연결

* chore: 인증 메일 재전송 버튼에 커서 효과 추가

* fix: 인증 메일 재전송 버튼을 PlainButton으로 변경

* feat: 로그인 페이지에 학교 메일 찾기 링크 연결

* fix: StyledLink에 안쓰는 속성 삭제

* fix: StyledLink에 visited 속성 추가하여 링크 이동시 PlainButton 색상 바뀌는 버그 수정

* feat: 로그인 페이지에 비밀번호 재설정 navigate 기능 추가

* refactor: 각 컴포넌트에 react-hook-form 사용

* refactor: useEmailInputForm 훅을 사용하여 state와 handler를 기존 컴포넌트에서 분리

* refactor: useEmaiVerification 훅을 사용하여 state와 handler를 기존 컴포넌트에서 분리

* refactor: useResetPasswordInput 훅을 사용하여 state와 handler를 기존 컴포넌트에서 분리

* feat: hasNumberAndEnglishWithSymbols 사용하여 비밀번호 정규식 검사 추가

* refactor: 폼 제출과 관련 없는 이메일 인증에서 react-hook-form 제거 및 비밀번호 재설정하기 BoxButton에 disabled 옵션 추가

* refactor: 이메일입력 폼에 로딩 표시 추가

* refactor: 에러 메시지 멘트 수정 및 css 디자인에 맞게 수정

* fix: 비밀번호 재설정 완료 후 로그인 페이지로 라우팅 경로 변경

* fix: 비밀번호 변경 에러메시지 멘트 수정

* fix: useFullEmail을 useParseFullEmail로 수정

* fix: eslint 적용

* fix: 두번째 PasswordTextField의 에러 메시지를 첫번째로 변경

* refactor: div태그를 form태그로 변경 및 버튼에 타입(button, submit) 지정

* fix: useRedirectLoggedInEffect 사용하여 로그인 상태에서 비밀번호 재설정 접근 금지 설정

* fix: 비밀번호 재설정 완료 페이지 문구 변경

* feat: `UserInformationCard`에 현재 로그인 중인 사용자 정보 넣기 (#232)

* feat: `UserInformationCard`에 현재 로그인 중인 사용자 정보 넣기

- 프로필 수정 기능에 접근하지 못하게 주석 처리 해둠

* chore: `UserInformationCard` 주석 범위 수정

* fix: `pre-commit` 훅에서 `lint-staged` 명령이 정상적으로 동작하지 않는 버그 수정 (#244)

* feat: 마이페이지 리팩토링 (#222)

* refactor: 하단에 hidden component를 추가하여 relative하게 중앙 정렬

* feat: 마이페이지에 계정 탈퇴 메뉴 추가

* refactor: useQuery로 api 호출 방식 변경

* feat: privateRoute hooks 구현

* feat: Nav Bar 로그아웃 기능 추가

* refactor: privateRoute에서 로그아웃 후 login 페이지로 이동하는 방식으로 변경

* refactor: PrivateRoute outlet 중첩 라우팅으로 수정

* fix: 기존에 userState 사용하는 로직 삭제, resetUserInfo 적용

* refactor: useQuery에서 useMutation으로 변경, useCurrentPasswordForm 내부로 위치 변경

* fix: resetUserInfo 중복 선언 제거

* fix: PrivateRoute 적용 페이지 추가

* feat: title, favicon, meta 태그 설정 (#247)

* feat: 서랍장 YLS 연결 작업 (#236)

* feat: DetectClick 작업

* feat: useGetDetectProvider 훅 생성

* feat: ranking에 DetectClick 적용

* fix: 커스텀 컴포넌트 div 태그로 감싸기

* 로컬 스토리지에 로그 안찍히는 오류 해결

* refactor: 테스트용 문장 삭제 및 platform 속성 삭제

* fix: BigDrawerCard와 Card에 onClick 속성 추가

* fix: useSuspenseQuery -> useQuery

* chore: update YDS version(v1.1.3), YLS version(v1.1.2) (#249)

* chore: update YDS version(v1.1.3), YLS version(v1.1.2)

* chore: setting packageManager version

* feat: search YLS 연결 (#240)

* chore: update lock file

* feat: 검색 결과 클릭시 로깅 추가

* fix: platform: 'web' 제거

Co-authored-by: 이유진 <[email protected]>

---------

Co-authored-by: 이유진 <[email protected]>

* feat: 회원가입 페이지에 학교 메일 찾기 링크 걸기 (#246)

* feat: 학교 메일 찾기 링크를 email.constant.ts에 추가하여 전역으로 설정

* feat: 로그인 페이지의 MAIL_SEARCH_URL 재설정

* feat: 회원가입 페이지의 이메일 인증에 메일 링크 추가

* feat: 회원가입에 useRedirectLoggedInEffect 추가

* fix: useEmailInput을 useEmailInputForm으로 이름 변경

* feat: 서랍장 서비스 수정 페이지 제작 및 관련 자잘한 업데이트 (#241)

* feat: edit 라우트 처리 및 사진을 제외한 서비스 데이터 로딩+폼에 채우기

* feat: 수정 페이지 완료

* feat: 서비스 등록 성공시 navigate 제거 및 수정 성공시 effect 리팩토링

* fix: move env path (#250)

* feat: 라이트 모드 강제 & PrivateRoute 수정 (#248)

* feat: theme light로 강제

* fix: PrivateRoute 컴포넌트로 변경

* feat: PrivateRoute 이동 경로 추가

* fix: resetPassword useRedirect 훅 삭제

* fix: search box background가 theme에 맞지 않는 색상으로 나오던 버그 수정

* fix: PrivateRoute의 toPath 로직 변경

* fix: modal과 navigate 중 선택 가능하도록 적용

* fix: useRedirect 복구

* fix: path from에 따라 뒤로가기 적용

* fix: recoil 훅 변경

* fix: 뒤로가기 대신 라우트 주소를 props로 받을 수 있도록 변경

* fix: 삼항연산자 수정

* refactor: `StyledBackgroundImageContainer` -> `StyledBackgroundContainer` (#252)

- 배경 이미지를 컬러로 교체

* feat: 서랍장 배너 API 연결 (#237)

* feat: 서랍장 배너 리스트를 가져오는 `useGetDrawerBanner()` 쿼리 추가

* feat: `Ranking` 페이지에서 배너 리스트를 가져와 보여주는 기능 구현

* style: 배너 이미지가 서랍장 화면 전체를 차지하도록 수정

* refactor: `BannerSection` 컴포넌트로 분리 && `useSuspenseQuery()` 적용

* refactor: `RankingSection` 컴포넌트로 분리 && `useSuspenseInfiniteQuery()` 적용

* refactor: `NewReleaseSection` 컴포넌트로 분리 && `useSuspenseInfiniteQuery()` 적용

* refactor: `BannerSection`, `RankingSection`, `NewReleaseSection` 컴포넌트로 분리

* fix: `flex-gap`이 `BannerSection`에 적용되지 않는 문제 수정

* feat: 서랍장 서비스 등록 페이지 네이티브 웹뷰 연결 (#216)

* feat: 네이티브로부터 유저의 accessToken을 받아올 수 있도록하는 effect 추가

* feat: 네이티브에서 유저의 `accessToken`을 얻기 위한 global 타입 선언

* refactor: 네이티브에서 받아온 유저 `accessToken` 만료 시간을 1시간으로 수정

* feat: 서랍장 서비스 등록이 성공하면 '내서랍장' 페이지로 이동하는 기능 구현

* fix: `soomsilClient`의 request interceptor가 `refreshToken` 대신 `accessToken`을 확인하도록 수정

* feat: 웹뷰에서 서비스 등록이 성공적으로 수행되면 네이티브로 성공 여부를 알려주는 로직 추가

* fix: 웹뷰에서의 접근을 위해 서비스 등록하기 페이지를 `PrivateRoute`에서 제거

* feat: 웹뷰에서 서비스 등록 페이지에 접속하면 헤더가 보이지 않도록 수정

* fix: 서랍장 서비스 등록 페이지의 `textarea` 요소의 배경색을 흰색으로 수정 (#255)

* style: `textarea` 요소의 배경색을 흰색으로 수정

* style: 서랍장 헤더 검색 폼의 텍스트 색상을 검은색으로 수정

* docs: create deploy.yml (#253)

* docs: create deploy.yml

* docs: `deploy.yml` step 순서 조정

- 환경변수 설정 다음에 빌드하도록

* refactor: 비밀번호 재설정 리팩토링 (#256)

* fix: useCurrentPassword 삭제, useForm으로 리팩토링

* fix: 불필요한 컴포넌트 삭제

* fix: 키보드 입력 위해 form 형식으로 변경

* fix: usePostChangePassword props 수정

* fix: ResetPassword에 mutate 적용

* fix: form 컴포넌트 제거

* fix: hook 모두 삭제

* fix: 프로퍼티 수정

* fix: wrapper에 form 적용

---------

Co-authored-by: Hanna922 <[email protected]>
Co-authored-by: JungminLee <[email protected]>
Co-authored-by: seocylucky <[email protected]>
Co-authored-by: seocylucky <[email protected]>
Co-authored-by: 2wndrhs <[email protected]>
Co-authored-by: Chaeyeon Seo <[email protected]>
Co-authored-by: aaminha <[email protected]>
Co-authored-by: 고현림 <[email protected]>
Co-authored-by: george <[email protected]>
Co-authored-by: intersoom <[email protected]>
Co-authored-by: MJ <[email protected]>
Co-authored-by: Sanghyeok Park <[email protected]>
Co-authored-by: 심민성 <[email protected]>
Co-authored-by: solmee <[email protected]>
Co-authored-by: 심민성 <[email protected]>
Co-authored-by: 조수민 <[email protected]>
Co-authored-by: TCTA-015 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fix home
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FIX]: 회원탈퇴 이후 유저 정보가 남아있는 문제
4 participants