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

Feat/#480 프로필 편집 페이지에서 닉네임 변경 기능 추가 #490

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

ukkodeveloper
Copy link
Collaborator

📝작업 내용

프로필 편집 페이지에서 닉네임 변경 기능 추가

이번 PR에서 작업한 내용을 간략히 설명(이미지 첨부 가능)
Oct-04-2023 00-16-33

💬리뷰 참고사항

  • 로그인 관련되어 있어서 로컬에서 테스트가 힘들어요! dev 서버에서 확인하셔야 합니다.
    • 추가로 이부분 어떻게 로컬에서 확인할 수 있는 지 아시는 분 있으시면 공유 부탁드립니다! 😢

닉네임 변경 정책

닉네임 변경 요청 시 access token을 파기하고 로그인 전역 상태를 초기화 합니다.
jwt에 유저 정보가 포함되어 있기 때문에 닉네임 변경 시 access token을 갱신을 해야합니다.
따라서 닉네임 변경 후에는 다시 로그인하도록 로그인 페이지로 리다이렉트 해줍니다.

닉네임은 2글자 이상 10글자 이하입니다.

응답 상태코드

  • 204: 동일한 닉네임으로 변경 요청
  • 400: 중복된 닉네임, 20자가 넘는 닉네임, 공백 닉네임의 이유로 닉네임 변경 실패

400 에러처리는 따로 하지 않았습니다. 에러 핸들링 논의 해야할 것 같습니다.
현재 중복된 닉네임으로 요청시 마치 성공한 것과 같은 유저 플로우가 진행됩니다. 따라서 에러 핸들링 적용 뒤에 머지가 되어야 합니다.

#️⃣연관된 이슈

close #480

@ukkodeveloper ukkodeveloper self-assigned this Oct 4, 2023
@ukkodeveloper ukkodeveloper added [ 🌞 FE ] 프론트엔드 크루들의 빛나는 개발 이야기 하나둘셋 호! ✨ Feat 꼼꼼한 기능 구현 중요하죠 labels Oct 4, 2023
Copy link
Collaborator

@Creative-Lee Creative-Lee left a comment

Choose a reason for hiding this comment

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

우코 닉네임 변경기능 만든다고 고생하셨습니다.
실수로 놓치신 부분들이나, 제안드릴 사항에 대한 피드백 남겨 보았습니다.
내용이 조금 많으니 천천히 확인해주시고 다시 요청주세요!
혹시 피드백 내용중에 이야기 나누고 싶은 부분 있으면 바로 대화요청주시고요~ㅎㅎ


별도의 디자인 제안을 하나 하려해요.
최근에 PC에서의 킬링파트 듣기 페이지 디자인 개선이 이뤄지면서,
개인적으로는 다른 모든 페이지도 마치 PC first로 개발한것 만큼의 레이아웃이 갖추어져야 겠구나 생각했어요.

현재 shook의 마이페이지는 필요 이상으로 길게 늘어져 있다고 생각해서, 왼쪽으로 정렬해보면 어떨까 제안드려요.

아래에는 오늘의집 마이페이지 인데요~!
여러 사이트의 마이페이지를 눌러봤는데 가장 깔끔하다고 생각해서 레퍼런스로 가져왔어요.

PC 버전 레이아웃
PC 버전 레이아웃 제안

Copy link
Collaborator

Choose a reason for hiding this comment

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

우코가 만든 Login, withdraw, NicknameChangingModal 들은 공통점이 있어요.
모두 사용자의 의도를 묻는 contents취소시 모달 닫기, 수락시 특정 함수를 실행하는 Confirm 이 목적인 모달이라는거죠.
이걸 고려해서 ConfirmModal이라는 공통 컴포넌트를 만들 수 있을것 같아요.

이후엔 사용자에게 질문하려고 할 때 마다 매번 위와 같은 xxx모달 컴포넌트를 만들지 않아도 되겠네요😀


return (
<Modal isOpen={isOpen} closeModal={closeModal}>
<>
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 프래그먼트는 없어도 되겠네요~
withdrawalModal에도 동일한 부분에 같은 프라그 먼트가 있으니 삭제해 주세요.

export default NicknameChangingModal;

const ModalContent = styled.div`
align-self: start;
Copy link
Collaborator

Choose a reason for hiding this comment

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

💬 없어도 아무런 변화가 없던데, 위 속성은 어떤 역할을 하나요?

return (
<Modal isOpen={isOpen} closeModal={closeModal}>
<>
<ModalContent>{`닉네임 변경 시 다시 로그인을 해야합니다.\n닉네임을 ${nickname}로 바꾸겠습니까?`}</ModalContent>
Copy link
Collaborator

Choose a reason for hiding this comment

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

시멘틱 + 웹접근성 측면에서
div 안에 바로 문장 내용을 보여주는 것 보단, 별도의 태그로 내용물을 분리하는게 좋을 것 같아요.

font-weight: 700;
line-height: 1.6;
Copy link
Collaborator

Choose a reason for hiding this comment

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

line-height 단위를 % or 숫자 하나로 통일하는게 좋겠네요.

Comment on lines 40 to 45
<Input
id="nickname"
value={nicknameEntered}
onChange={handleChangeNickname}
autoComplete="off"
/>
Copy link
Collaborator

Choose a reason for hiding this comment

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

💬 maxlength를 활용해봐도 좋을 것 같아요

autoComplete="off"
/>
<Spacing direction={'vertical'} size={8} />
{hasError && <BottomError>{nicknameErrorMessage}</BottomError>}
Copy link
Collaborator

Choose a reason for hiding this comment

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

💬 위치를 나타내는 것 보다 어떤 역할인지 나타내주는건 어떤가요?

const SubmitButton = styled.button<{ disabled: boolean }>`
cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};
const SubmitButton = styled.button`
cursor: pointer;
Copy link
Collaborator

Choose a reason for hiding this comment

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

글로벌 스타일에 있습니다~


${disabledStyle};
background-color: ${({ theme }) => theme.color.primary};
border: none;
Copy link
Collaborator

Choose a reason for hiding this comment

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

글로벌 스타일 확인해주세용

transition: box-shadow 0.3s ease;

&:focus {
box-shadow: 0 0 0 2px inset ${({ theme }) => theme.color.primary};
Copy link
Collaborator

Choose a reason for hiding this comment

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

💬 개인적인 의견으로는 input을 입력하다가 정책상 금지된 행동을 했을때,
붉은 계열의 테두리가 생기는게 일반적이라고 생각해요.
focus만 했는데, 붉은 계열의 테두리가 생겨서 '내가 뭘 잘못했나?' 생각할수도 있을것 같네요.
어떻게 생각하세요?

@github-actions
Copy link

Unit Test Results

  97 files    97 suites   14s ⏱️
384 tests 384 ✔️ 0 💤 0
389 runs  389 ✔️ 0 💤 0

Results for commit d7384ff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[ 🌞 FE ] 프론트엔드 크루들의 빛나는 개발 이야기 하나둘셋 호! ✨ Feat 꼼꼼한 기능 구현 중요하죠
Projects
Status: In Code Review
Development

Successfully merging this pull request may close these issues.

[FEAT] 닉네임 변경이 가능하게 한다.
2 participants