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

SKRF-131 카카오 로그인 API 커스텀 훅, 에러처리 #27

Merged
merged 17 commits into from
Oct 27, 2023

Conversation

hyesung99
Copy link
Collaborator

📝요구사항과 구현내용

  • axios oauthLogin post 기능 구현
  • tanstack query의 usemutation으로 useOauthLogin 커스텀 훅 제작
  • 로그인 성공시 토큰 로컬 스토리지에 저장
  • 로그인 성공이후 최초 로그인 유저일시 -> register페이지 / 가입된 유저일시 -> main페이지 라우팅
  • OauthRedirectPage 기능 useOauthLogin으로 위임
  • 모킹 데이터로 테스트 완료

구현 스크린샷

image
image

✨pr포인트 & 궁금한 점

에러잡기가 목표였는데 구현하다보니 api가 많이 엮여있어서 주객전도 됐네요
에러 처리 후 Toast나 에러 페이지 redirect는 TODO로 남겨뒀습니다.

여기저기 폴더구조를 많이 생성했는데 컨벤션에 어긋났는지 확인 부탁드립니다! 아직 안정해진 컨벤션도 있는것 같은데 일단 프로젝트 흐름과 최대한 비슷하게 만들었어요.

많은 질타와 가르침 PLZ

@hyesung99 hyesung99 self-assigned this Oct 26, 2023
SongInjae
SongInjae previously approved these changes Oct 26, 2023
Copy link
Collaborator

@SongInjae SongInjae left a comment

Choose a reason for hiding this comment

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

고생하셨습니다:)

Copy link
Collaborator

@colorkite10 colorkite10 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다! tanstack query, msw... 새로운 라이브러리의 향연에도 불구하고 해내신 모습 박수 드립니다.

isNewMember: boolean;
}

export { OauthLoginRequest, OauthLoginResponse };
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 친구들은 type이 아닌가요? 몰라서 여쭤봅니다...!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

그러네요! 왜 여기다했지?ㅋㅋ... 찾아주셔서 감사합니다

},
} as const;

export { PATH };
Copy link
Collaborator

Choose a reason for hiding this comment

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

귀찮은 일을 깔끔하게 해주셨군요 👏👏👏

onError: () => {
//TODO: Toast 띄우기
navigate(PATH.LOGIN);
throw new Error('로그인 중 서버에서 오류가 발생했습니다');
Copy link
Collaborator

@colorkite10 colorkite10 Oct 26, 2023

Choose a reason for hiding this comment

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

여기서 data.message(에러 시 응답으로 받은 에러메시지)를 사용할 수도 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

그것도 좋겠네요!


import { useEffect } from 'react';

const OauthRedirectPage = () => {
const authCode = new URL(window.location.href).searchParams.get('code');
const code = new URLSearchParams(window.location.search).get('code') ?? '';
Copy link
Collaborator

@colorkite10 colorkite10 Oct 26, 2023

Choose a reason for hiding this comment

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

??는 무슨 연산자인가요? 없으면 빈값 이런 뜻인가요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

nullish 체크 연산자입니다!
?? 앞의 변수가 null || undefinded면 뒤에 값을 할당합니다!

URLSearchParms의 get메서드는 특정 파람값(여기서는 code)을 찾아주는 기능을하는데 찾지 못하면 null을 반환합니다 생각해보니 ??연산자는 필요없겠네요!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

if (!code) {
//TODO: 에러페이지로 이동시켜주기
throw new Error('code is not exist');
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

에러페이지도 피그마에 만들어놔야겠군요...🤔🤔

<Global styles={GlobalStyle} />
<RouterProvider router={router} />
</ThemeProvider>
</QueryClientProvider>
</React.StrictMode>,
);
Copy link
Collaborator

Choose a reason for hiding this comment

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

그럼 전역에서 어떤 사용자가 로그인 중인지 판단할 수 있는 거죠?!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

로그인시 로컬스토리지에 토큰값을 저장할 예정입니다!

colorkite10
colorkite10 previously approved these changes Oct 26, 2023
token: 'test token',
isNewMember: false,
});
}),
];
Copy link
Collaborator

Choose a reason for hiding this comment

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

사용법 배우고 갑니다 👍

@hyesung99 hyesung99 dismissed stale reviews from colorkite10 and SongInjae via 3f92491 October 27, 2023 03:14
colorkite10
colorkite10 previously approved these changes Oct 27, 2023
SongInjae
SongInjae previously approved these changes Oct 27, 2023
Copy link
Collaborator

@SongInjae SongInjae left a comment

Choose a reason for hiding this comment

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

고생하셨습니다:)

@SongInjae SongInjae dismissed stale reviews from colorkite10 and themself via 57a08e5 October 27, 2023 06:17
@SongInjae SongInjae merged commit 65552bc into main Oct 27, 2023
2 checks passed
colorkite10 pushed a commit that referenced this pull request Oct 27, 2023
* feat : isNewUser response에 추가

* fix : 불필요한 파일 삭제

* feat : PATH상수 추가

* feat : kakaoLogin api 모킹 테스트

* feat : QueryClient 설정

* fix : 확장성을 위해 용어 변경 kakao => oauth

* fix : 불필요한 파일 삭제

* feat : Oauth API 통신 type 선언

* feat : axios oauthLogin post 요청기능

* feat : useOauthLogin 커스텀 훅 추가

* feat : OauthRedirectPage 로그인 기능 커스텀 훅으로 위임

* fix : 모킹 데이터 오류 수정

* chore : PATH타입 리터럴로 추론

* fix : auth관련 타입 conatant폴더에서 type폴더로 옮김

* feat : auth error발생시 서버 에러 메시지 전송

* fix: user.ts 충돌오류해결

---------

Co-authored-by: SongInJae <[email protected]>
colorkite10 added a commit that referenced this pull request Oct 27, 2023
* SKRF-131 카카오 로그인 API 커스텀 훅, 에러처리 (#27)

* feat : isNewUser response에 추가

* fix : 불필요한 파일 삭제

* feat : PATH상수 추가

* feat : kakaoLogin api 모킹 테스트

* feat : QueryClient 설정

* fix : 확장성을 위해 용어 변경 kakao => oauth

* fix : 불필요한 파일 삭제

* feat : Oauth API 통신 type 선언

* feat : axios oauthLogin post 요청기능

* feat : useOauthLogin 커스텀 훅 추가

* feat : OauthRedirectPage 로그인 기능 커스텀 훅으로 위임

* fix : 모킹 데이터 오류 수정

* chore : PATH타입 리터럴로 추론

* fix : auth관련 타입 conatant폴더에서 type폴더로 옮김

* feat : auth error발생시 서버 에러 메시지 전송

* fix: user.ts 충돌오류해결

---------

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

* refactor: Avatar 컴포넌트 포인터 속성 삭제, 기본 이미지 아이콘 추가, 편집 아이콘 추가

---------

Co-authored-by: hyesung99 <[email protected]>
Co-authored-by: SongInJae <[email protected]>
@hyesung99 hyesung99 deleted the SKRF-131-kakao-login-error branch October 28, 2023 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants