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

[기능구현] 보호자 시니어 추가 페이지 + 기타 코드 수정 #98

Merged
merged 12 commits into from
Oct 21, 2024

Conversation

Diwoni
Copy link
Collaborator

@Diwoni Diwoni commented Oct 21, 2024

#️⃣ 연관된 이슈

ex) #85

📝 작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요.(이미지 첨부 가능)

보호자 시니어 추가 페이지 기능 구현

  • 시니어 조회, 추가, 삭제, 수정 API 와 연동하였습니다. 시니어를 추가,삭제,수정 API 요청 후 성공 시에 refetch 를 콜백으로 실행해 실시간으로 다시 데이터를 보여주게끔 구현하였습니다.

전화번호 관련 hook

  • 회원가입 시에 전화번호에 '-' 를 떼고 보낸다거나, 정보를 가져올 때 전화번호에 '-' 를 붙여서 보여준다거나 그런 경우가 많은 것 같아 이와 관련된 함수들을 구현해놓았습니다. 필요 시에 사용하면 될 것 같습니다!

기타 코드 수정

  • 포인트 내역의 경우 포인트 상태에 따라 포인트 앞에 + , - 를 붙이고 색상을 입히도록 조건부 스타일을 넣었습니다. 따로 컴포넌트로 분리를 할까도 생각을 했었지만, 요청 대기, 충전 대기, 충전 취소 등 대부분의 상태에는 포인트의 변화가 있지 않은 경우가 대부분이기에 삼중 연산자를 중첩해서 4개의 상태(적립, 충전완료, 출금완료, 소비확정)에서만 조건적으로 스타일 적용되게 구현했습니다.

스크린샷 (선택)

포인트 스타일 변경

포인트 내역에서 내용이 긴 부분은 성훈님과 이야기해서 줄이기로 했습니다. (~인한 포인트 환불, ~인한 포인트 .. 제거)

image

시니어 추가 페이지

image

💬 리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

⏰ 현재 버그

현재 시니어 추가 페이지에서 제가 시니어 추가 API 로 추가한 시니어는 삭제가 잘 되는데,
기존에 있던 시니어는 삭제가 되지 않는 문제(수정은 또 됨)가 있습니다.
콘솔로 확인했을 때도 시니어 추가 API 를 통해 추가한 시니어 객체와 기존에 db에 있던 시니어 정보들이 다르거나 별다르게 id 가 누락됐거나
하지 않은데 어디가 잘못된 건지 모르겠네요..ㅠ

image

기존에 있던 시니어 (오예림)
시니어 추가 페이지에서 직접 추가한 시니어 (정지원)
오예림 의 경우 에러가 발생

image

✏ Git Close

close #85

@Diwoni Diwoni added ✨ Feature 새로운 기능 추가 및 구현하는 경우 🎨 Design 디자인 관련 작업을 진행하는 경우 📡 API 비동기 통신 코드를 짜는 경우, 백엔드와의 통신하는 경우 labels Oct 21, 2024
@Diwoni Diwoni requested review from Dobbymin and JYN523 October 21, 2024 13:51
@Diwoni Diwoni self-assigned this Oct 21, 2024
@Diwoni Diwoni linked an issue Oct 21, 2024 that may be closed by this pull request
Copy link
Contributor

@Dobbymin Dobbymin left a comment

Choose a reason for hiding this comment

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

고생하셨습니다~ 필요했던 기능이 바로바로 피드백 되는것 같아서 좋습니다! 조금 귀찮더라도 import 할떄 경로 부분에 조금 더 신경써주시면 좋을것 같아요.
500 관련 에러는 백엔드 한테 물어보는것도 좋아보이네용

@@ -44,6 +44,7 @@ const HeaderBox = styled.header`
justify-content: center;
align-items: center;
background-color: var(--color-white);
z-index: 999;
Copy link
Contributor

Choose a reason for hiding this comment

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

이런 css 코드도 있나요...?
https://developer.mozilla.org/ko/docs/Web/CSS/z-index

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

999 값으로 설정한 건 그냥 막연히 헤더가 항상 다른 요소들을 가려야한다고 생각해서, 큰 정수 값을 넣었습니다..!

보기에 좀 그럴 수도 있겠네요.. 적당한 값 10 으로 수정할게요..ㅠ!

Comment on lines +1 to +9
export const formatPhoneNumber = (phone: string): string => {
const match = phone.match(/(\d{3})(\d{4})(\d{4})/);
return match ? `${match[1]}-${match[2]}-${match[3]}` : phone;
};

export const parsePhoneNumber = (phone: string): string => {
const match = phone.match(/(\d{3})-(\d{4})-(\d{4})/);
return match ? `${match[1]}${match[2]}${match[3]}` : phone;
};
Copy link
Contributor

Choose a reason for hiding this comment

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

이 코드가 utils 폴더에 위치한 이유가 있나요?? 저라면 useFormatPhoneNumber, useParsePhoneNumber 라고 정하고, shared/hooks 에 넣을 것 같아요.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

저도 shared/hooks 폴더에 처음에 넣었는데, 유틸리티 함수라고 보는 게 제 개인적인 생각에서는 개발하면서 사용하기에 유용한 함수(?) 느낌으로 바꿔 넣은 것 같아요. 둘 다 큰 상관 없을 것 같긴 합니다만 기존 hooks 폴더 안에 함수들과는 약간 다른 느낌에 옮겼습니다!

https://velog.io/@okko8522/utils-%ED%8F%B4%EB%8D%94%EC%97%90-%EB%93%A4%EC%96%B4%EA%B0%88-%EA%BF%80-%ED%95%A8%EC%88%98%EB%93%A4

Copy link
Collaborator

Choose a reason for hiding this comment

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

저도 formatting 관련은 utils가 조금 더 적절한 것 같다고 생각합니다.

@GitJIHO
Copy link
Member

GitJIHO commented Oct 21, 2024

현재 시니어 추가 페이지에서 제가 시니어 추가 API 로 추가한 시니어는 삭제가 잘 되는데,
기존에 있던 시니어는 삭제가 되지 않는 문제(수정은 또 됨)가 있습니다.
콘솔로 확인했을 때도 시니어 추가 API 를 통해 추가한 시니어 객체와 기존에 db에 있던 시니어 정보들이 다르거나 별다르게 id 가 누락됐거나
하지 않은데 어디가 잘못된 건지 모르겠네요..ㅠ

기존 Cascade가 순환참조 문제가 생겨서 해결했습니다

문제 생기면 곧바로 백엔드로 알려주시면 감사드리겠습니다

Copy link
Collaborator

@JYN523 JYN523 left a comment

Choose a reason for hiding this comment

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

전체적으로 컴포넌트 잘 분리하셔서 깔끔하게 구현하신 것 같습니다.
고생하셨습니다!

Comment on lines +38 to +49
<SeniorFormField
label='시니어의 전화번호'
placeholder='010-0000-0000'
error={errors.seniorPhoneNumber?.message}
registerProps={register('seniorPhoneNumber', {
required: '연락처를 입력해주세요.',
pattern: {
value: /^010-\d{4}-\d{4}$/,
message: '유효한 연락처 형식이 아닙니다.',
},
})}
/>
Copy link
Collaborator

Choose a reason for hiding this comment

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

제가 회원가입 ui 구현할 때 validation도 010-0000-0000 형태로만 입력할 수 있게 해놨긴 한데, 지금 생각해보니 시니어가 휴대전화가 아닌 집전화나 지역번호를 쓰는 경우도 있을까요? 만약 앞자리가 다른 번호도 사용 가능하게 한다면 validation을 약간 수정해야할 것 같아요. 아니면 010으로만 등록할 수 있도록 제한하고 수정하지 않아도 괜찮을 것 같습니다!

Comment on lines +1 to +9
export const formatPhoneNumber = (phone: string): string => {
const match = phone.match(/(\d{3})(\d{4})(\d{4})/);
return match ? `${match[1]}-${match[2]}-${match[3]}` : phone;
};

export const parsePhoneNumber = (phone: string): string => {
const match = phone.match(/(\d{3})-(\d{4})-(\d{4})/);
return match ? `${match[1]}${match[2]}${match[3]}` : phone;
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

저도 formatting 관련은 utils가 조금 더 적절한 것 같다고 생각합니다.

@Diwoni Diwoni merged commit 0243a6b into Weekly Oct 21, 2024
1 check passed
@Diwoni Diwoni deleted the Feat/issue-#85 branch October 21, 2024 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📡 API 비동기 통신 코드를 짜는 경우, 백엔드와의 통신하는 경우 🎨 Design 디자인 관련 작업을 진행하는 경우 ✨ Feature 새로운 기능 추가 및 구현하는 경우
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[기능구현] 보호자 시니어 추가 페이지
4 participants