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

[Feature/#70] 내 정보 관리 페이지 & api 구현 #92

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

Conversation

sunnny619
Copy link
Contributor

@sunnny619 sunnny619 commented Jan 9, 2025

Issue

Description

  1. 휴대폰 인증 / 이메일 인증 기능을 추가하고,
  2. 타이머(3분) 동안은 “인증번호 받기” 버튼이 비활성화되도록 로직을 구현했습니다.
  3. 인증 성공 시 원본 값이 갱신되어, 다시 동일한 필드로 인증이 필요 없도록 상태를 업데이트합니다.

코드 구조 요약

MyInfoScreen (UI)

  1. Consumer를 통해 ViewModel의 상태(인증 진행 중, 타이머, 버튼 활성화 등)를 구독
  2. 전화번호/이메일 입력, 인증번호 입력, 타이머 표시, 확인 버튼 등을 배치
  3. 인증 성공/실패 시 showSnackbar로 결과 메시지 출력

MyInfoViewModel (로직 & 상태 관리)

  1. 타이머 관리
  • Timer 객체 2개(_codeTimer, _emailTimer)로 휴대폰/이메일 각각 3분 카운트다운
  • 카운트다운 중이면 “인증번호 받기” 버튼 비활성화
  • 0초 되면 버튼 활성화
  1. 인증 로직
  • 서버 통신 (userService.sendVerificationCode, userService.emailVerificationCode)
  • 인증 번호 검증
  • 인증 성공 시 상태 해제 & 원본 값 갱신
  1. UI 상태 제어
  • isVerifyingPhone, isVerifyingEmail → “재발송” 텍스트 노출 여부
  • isEditable → “저장하기” 버튼 활성화 여부
  • showVerificationField, isClickEmailSendBtn → 입력 필드 표시 여부 등

TODO

현재 코드에서 updateUserInfo(), 서버에게 사용자 정보 patch하기가 작동하지 않습니다.
계속해서 302 오류가 뜨는데 서버분들께서 확인하신 후 추후 고치도록 하겠습니다.

Screenshot

Screen_recording_20250110_035716.mp4

💬 리뷰 요구사항(선택)

현재 재전송 제한 시간을 3분으로 설정해놨는데 몇 분 정도로 해야 적당한지 고민입니다!

@sunnny619 sunnny619 added the feature 기능 구현 label Jan 9, 2025
@sunnny619 sunnny619 requested a review from HI-JIN2 January 9, 2025 11:02
@sunnny619 sunnny619 self-assigned this Jan 9, 2025
@sunnny619 sunnny619 marked this pull request as draft January 9, 2025 11:02
@sunnny619 sunnny619 marked this pull request as ready for review January 9, 2025 19:14
@sunnny619 sunnny619 linked an issue Jan 9, 2025 that may be closed by this pull request
2 tasks
Copy link
Collaborator

@HI-JIN2 HI-JIN2 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다! ThirdButton의 상하좌우 패딩이 좀 넓은 것 같은데, 혹시 줄일 수 있을까요?

final TextInputType keyboardType;

/// 수정 가능 여부 체크
final bool readOnly;
Copy link
Collaborator

Choose a reason for hiding this comment

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

isEditable 이런건 어떨까유 수정 가능 여부면은 true일때 수정이 가능한게 좀더 자연스러워 보여욥

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넹 수정하겠습니당

Comment on lines +238 to +247
/// 인증 완료 다이얼로그
void showSnackbar(BuildContext context, String text) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(text, style: CogoTextStyle.body14),
backgroundColor: Colors.white,
duration: const Duration(seconds: 4),
),
);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

이거 스낵바도 util로 만들어두면 좋을 것 같아요~

Copy link
Contributor Author

Choose a reason for hiding this comment

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

위젯 말고 util로 만드나요?

Copy link
Collaborator

Choose a reason for hiding this comment

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

상관 없서요~ 유틸로 만들라는 의미가 한줄로 string 값만 받아서 사용할 수 있도록 만들어서 쓰면 좋지 않을까~ 였습니다

@sunnny619
Copy link
Contributor Author

수고하셨습니다! ThirdButton의 상하좌우 패딩이 좀 넓은 것 같은데, 혹시 줄일 수 있을까요?

혹시 어떻게 넓다는 말씀이실까욥?

@HI-JIN2
Copy link
Collaborator

HI-JIN2 commented Jan 14, 2025

수고하셨습니다! ThirdButton의 상하좌우 패딩이 좀 넓은 것 같은데, 혹시 줄일 수 있을까요?

혹시 어떻게 넓다는 말씀이실까욥?

스크린샷 2025-01-14 오후 3 55 01 스크린샷 2025-01-14 오후 3 55 29

제가 봤을때는 tag랑 스펙이 같은걸로 보이는데, 구현상으로는 ThirdButton의 마진이나 패딩이 좀 넓어보여서요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 기능 구현
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] 내 정보 수정화면 ui & api
2 participants