-
Notifications
You must be signed in to change notification settings - Fork 8
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
[AN/USER] feat: 예매 실패 케이스 처리(#369) #593
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다!
@@ -105,8 +109,14 @@ class TicketReserveViewModel @Inject constructor( | |||
it.toTicketReserveItem() | |||
} | |||
|
|||
private fun Throwable.logNetworkFailure(key: String) { | |||
analyticsHelper.logNetworkFailure(key, message.toString()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이거는 Throwable 확장함수로 뺄 수 있지 않을까요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이미 Throwable 확장함수인데 Util 로 빼는걸 말씀하시는거겠죠..?
단순히 코드 간결성을 위한 함수 분리입니다.
개인적으로 기본 타입의 확장함수를 Util 로 빼는 것은 지양하고 싶습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다 👍
.onFailure { throwable -> | ||
val message = throwable.message ?: "ERROR_UNKNOWN" | ||
val error: Throwable = when { | ||
"NEED_STUDENT_VERIFICATION" in message -> ErrorCode.NEED_STUDENT_VERIFICATION() | ||
"RESERVE_TICKET_OVER_AMOUNT" in message -> ErrorCode.RESERVE_TICKET_OVER_AMOUNT() | ||
"TICKET_SOLD_OUT" in message -> ErrorCode.TICKET_SOLD_OUT() | ||
else -> throwable | ||
} | ||
return Result.failure(error) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이거는 여기에서 처리하는 게 좋을까요 뷰모델에서 처리하는 게 좋을까요? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
에러 코드에 따라 다른 Throwable 를 던지는게 데이터 레이어의 역할이라 생각해서 이 부분에서 처리했습니다!
class NEED_STUDENT_VERIFICATION : ErrorCode() | ||
class RESERVE_TICKET_OVER_AMOUNT : ErrorCode() | ||
class TICKET_SOLD_OUT : ErrorCode() | ||
class UNKNOWN : ErrorCode() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
object로 바꾸는 건 어떤가요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
object 로 변경을 고려했었습니다. 그 이유는 이것입니다.
- 메모리 관리 차원에서 별 차이 없다. (object 라도 static 은 아니라서 사용될 때 메모리 할당)
- 생성자 인자가 없으니 생성해서 사용할 필요가 있을까?
그럼에도 class 를 사용한 이유는 다른 Throwable 객체(Exception(), IlegalArgumentException() 등)와 통일성 있게 작성하기 위해서 입니다.
* [AN/USER] feat: 티켓 예매 디자인 수정 (#567) (#570) * feat: 티켓 예매 바텀 시트 화면 디자인 수정 * feat: 포스터 크기 수정 * refactor: 티켓을 선택하면 INVISIBLE로 변환 * refactor: 화면 겹치는 현상 제거 * refactor: 불필요한 공백 제거 --------- Co-authored-by: re4rk <[email protected]> * [AN/USER] feat: 페스타고 유저 앱 버전 변경 (#571) (#572) * [BE] chore: 개발 환경의 서브 모듈을 업데이트 (#573) (#574) * refactor: 사용하지 않게된 클래스를 제거한다. (#513) * [BE] feat: 회원의 학생 인증 정보 조회 API 구현 (#496) (#531) * refactor: 메서드 네이밍 수정 (verifiacte -> verify) * feat: 학생 인증 정보 조회 기능 구현 * refactor: findByMemberIdWithFetch INNER JOIN으로 수정 * refactor: inner line return 으로 수정 * refactor: 캐싱된 Response 반환 * [AN/USER] fix: 예매 완료 화면 버그 픽스 (#575) (#576) * fix: getParcelableExtraCompat * update: 버전 변경 * [ALL] 프로젝트 README 추가 (#552) (#577) * Update README.md * Update README.md * Update README.md * Update README.md * docs: 기능 간단 소개 작성 * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * docs: update * Update README.md 줄바꿈 수정 * docs: Update README.md * Update README.md 백엔드 기술스택 추가 * Update README.md - JUnit5 오타 수정 * Update README.md 백엔드 기술스택 flyway 추가 * 인프라 아키텍처 사진 추가 * Update infra structure image * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md --------- Co-authored-by: xxeol2 <[email protected]> Co-authored-by: Hyun-Seo Oh / 오현서 <[email protected]> Co-authored-by: 해시 <[email protected]> Co-authored-by: Guga <[email protected]> * [AN/USER] refactor: ViewModel Test Code Dispatcher Rule 추가 (#590) * feat: coroutine dispatcher main rule 추가 * refactor: 티켓 예매 화면 ViewModel 테스트 리팩터링 * refactor: 티켓 목록 화면 ViewModel 테스트 리팩터링 * refactor: 티켓 기록 화면 ViewModel 테스트 리팩터링 * refactor: 티켓 입장 화면 ViewModel 테스트 리팩터링 * refactor: 학생 인증 화면 ViewModel 테스트 리팩터링 * refactor: 로그인 화면 ViewModel 테스트 리팩터링 * refactor: 학교 선택 화면 ViewModel 테스트 리팩터링 * refactor: 마이페이지 화면 ViewModel 테스트 리팩터링 * refactor: 홈 화면 ViewModel 테스트 리팩터링 * refactor: 축제 목록 화면 ViewModel 테스트 리팩터링 * refactor: 마이페이지 화면 ViewModel 테스트 재변경 * [AN/USER] feat: 버튼 더블 클릭 막기(#584) (#585) * feat: SingleClick Util 추가 * feat: 바텀 시트 바깥 클릭 막기 * feat: single 클릭 적용 * refactor: SingleClick 메서드명 변경 * refactor: xml 파일 호출 순서 맞추기 * [AN/USER] feat: 홈 화면에서 뒤로가기 누르면 곧바로 종료되지 않는다. (#588) * feat: 홈화면 뒤로가기 상수 추가 * feat: 홈화면 뒤로가기 두 번 클릭 시 종료 * [AN/USER] feat: SingleLivedata 제거 (#586) (#587) * refactor: 사용하지않는 SingleLiveData 제거 * refactor: 사용하지않는 Event 제거 * [AN/USER] feat: 예매 실패 케이스 처리(#369) (#593) * feat: 에러 코드를 구분한다 * feat: API 요청 실패 결과에 따라 에러 코드를 예외로 던진다 * feat: 티켓 예매 요청에 실패하면 예외 이벤트가 발생한다. * feat: 에러 코드에 따라 다른 메세지를 띄운다 * [AN/USER] refactor: 네트워크 에러 로깅을 확장함수 없이 직접 처리한다(#595) (#596) refactor: 네트워크 에러 로깅을 확장함수 없이 직접 처리한다 * [BE] feat: 축제 조회 필터링 구현(#602) (#603) * feat: specification 정의 * feat: FestivalFilter 정의 * feat: 축제 진행 상태에 따른 Controller, Service 생성 * refactor: private 생성자를 lombok 을 통해 생성 * chore: 괄호 제거 * chore: 변수 상수화 * chore: given 절 타입 명시 * feat: 축제 조회 ALL 삭제 및 기본값을 진행 중으로 변경 * feat: 축제 당일이 Progress에 포함되도록 변경 및 Spec 리팩터링 * feat: 축제 진행 상황별 정렬 조건 추가 * chore: 메서드 순서 변경 * chore: index 추가 * chore: 에러 메시지 변경 * chore: test 개행 변경 및 변수 재활용 * [AN/USER] feat: 홈화면 필터링 기능을 제공한다 (#600) (#606) * feat: 축제 목록 필터 이름 상수화 * feat: 축제 목록 칩 색깔 및 텍스트 스타일 작성 * feat: 축제 목록 칩으로 필터링하기 화면 그리기 * feat: 축제 필터 분류 정의 * feat: FestivalRepository 필터링 요청 가능하도록 재정의 * feat: 축제 목록 ViewModel 에 축제 필터링 기능 적용 * feat: 축제 목록 Fragment 에 필터링 기능 적용 * feat: 축제 목록 필터링 API 연동 작업 * feat: 페스타고 홈화면 아이콘 추가 * refactor: 칩 색깔 selector 네이밍 수정 * refactor: 축제 목록 칩 색깔 네이밍 변경 * feat: 필터링 칩 다크모드 적용 * feat: 필터링 상태를 ViewModel 에서 관리하지 않는다 * feat: 현재 선택된 칩의 필터링에 해당하는 리스트를 요청한다 * fix: Loading 이 아니면 구성 변경 시 축제 목록을 재요청하지 않는다 * [BE] refactor: /stages/{stageId}/tickets API의 N+1을 해결한다.(#517) (#578) * refactor: findAllByStageId fetch 조인으로 변경 * refactor: fetch join 메서드 사용하도록 변경 * chore: Inner 조건 명시하도록 변경 * [BE] 도메인 엔티티의 예외를 정의, 적용하고 테스트 패키지 구조를 정리한다. (#482) (#515) * feat: DomainValidException 추가 * fix: DomainValidException -> ValidException 변경, 수정 * feat: Validator 검증 로직 추가 * refactor: 검증 로직 도메인에 적용 * refactor: ValidException 에러코드 수정, Validator 로직 추가 * feat: Admin 검증 추가 * feat: EntryCode 검증 추가 * refactor: 검증 로직 대폭 개선 * test: 테스트 코드 패키지 구조에 맞게 이동 * test: 테스트 코드 추가 * test: Member 테스트 코드 추가 * fix: EntryState IllegalArgumentException 변경 * fix: 테스트 코드 깨짐 수정 * refactor: Validator 호출 시 필드명 변수로 추출 * feat: IllegalArgumentException을 대체하는 UnexpectedException 추가, 적용 * feat: OAuth2Clients 중복 추가 시 에러 로그 추가 * feat: UnexpectedException 예외 핸들러 추가 --------- Co-authored-by: BGuga <[email protected]> * [BE] test properties show sql 관련 설정 삭제 (#605) (#607) test: 테스트 로그에 쿼리 로그 제거하도록 변경 * [BE] refactor: 사용하지 않는 AdminService 제거 (#610) (#611) * test: 테스트 코드에 서비스 클래스 제거 * refactor: AdminService 삭제 * refactor: AdminDTO 삭제 * style: 개행 수정 * [BE] 학교 정보 API에 Swagger Annotation을 추가 (#597) (#598) feat: SchoolController에 Swagger 정보 추가 Co-authored-by: hyunseo <> * [AN/USER] feat: 축제 목록 화면 UX 개선(#614) (#615) * [AN] release: v1.2.0 (#618) (#619) chore: release v1.2.0 --------- Co-authored-by: re4rk <[email protected]> Co-authored-by: 해시 <[email protected]> Co-authored-by: Hyun-Seo Oh / 오현서 <[email protected]> Co-authored-by: xxeol2 <[email protected]> Co-authored-by: seokjin8678 <[email protected]> Co-authored-by: Guga <[email protected]>
📌 관련 이슈
✨ PR 세부 내용