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

[Android][예약 내역 API] Feat : 예약 신청 내역 화면 API 연동 및 기능 구현 완료 #156

Merged
merged 10 commits into from
Feb 22, 2024

Conversation

99winnmin
Copy link
Collaborator

#️⃣ 연관된 이슈

ex) #이슈번호, #이슈번호

📝 작업 내용

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

스크린샷 (선택)

2024-02-22.6.31.11.mov

💬 리뷰 요구사항(선택)

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

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

- FragmentMyReservationBinding을 사용하여 뷰 바인딩 초기화 및 리소스 정리 로직 구현
- MyReservationViewModel을 통해 사용자의 예약 상태(WAIT, APPROVE, REJECT)에 따른 예약 내역 조회 로직 구현
- 예약 내역을 표시하기 위한 RecyclerView에 ReservationHistoryAdapter 적용 및 레이아웃 매니저 설정
- RecyclerView 스크롤 리스너를 추가하여 스크롤이 끝에 도달할 때마다 추가 예약 내역을 비동기적으로 불러오는 로직 구현
- 사용자의 예약 상태 선택(ChipGroup)에 따라 해당 상태의 예약 내역만 조회하고 표시하는 기능 구현
- 예약 내역이 없을 경우 빈 상태 화면을 표시하는 로직 구현

Related to: #150
- getMyReservationHistory 함수 구현: 사용자의 액세스 토큰, 정렬 타입(sortType), 마지막 조회된 예약 ID(lastReservationId)를 받아, ReservationService의 getReservationHistory 메소드를 호출하여 사용자의 예약 내역을 비동기적으로 조회
- 조회 과정 중 상태를 Resource 타입으로 감싸서 Flow를 통해 반환, 로딩 상태, 성공 상태, 오류 상태를 스트림으로 전달
- 성공적인 API 응답 처리 시, 응답 본문에서 예약 내역 데이터를 추출하여 Resource.Success로 감싸서 반환
- API 호출 실패 또는 예외 발생 시, Resource.Error를 반환하고 오류 로그 출력

Related to: #150
- DataSource 에서 받아온 값을 Model 객체로 변환하는 getMyReservationHistory 메서드 구현

Related to: #150
- 예약 내역 항목(ReservationHistoryItemBinding) 및 로딩 항목(ProgressBarItemBinding)을 위한 뷰 홀더(ReservationHistoryViewHolder, LoadingViewHolder) 구현
- getItemViewType을 오버라이드하여 항목 타입을 구분하고, 적절한 뷰 홀더 생성 로직 구현
- 예약 상태(WAIT, APPROVE, USED, REJECT)에 따라 다른 칩 색상과 텍스트 설정
- 예약 내역의 목록을 관리하는 reservationHistoryList와 이를 업데이트하는 함수(setReservationHistoryList, removeLoadingFooter, clearReservationHistoryList) 구현
- 페이지네이션을 위한 로딩 푸터 추가 및 제거 로직 구현

Related to: #150
- MyReservationViewModel에서 사용자의 예약 내역 상태를 관리하기 위한 _myReservationHistory MutableStateFlow 및 공개 StateFlow 정의
- 로딩 상태를 관리하기 위한 _isLoading MutableStateFlow와 이를 외부에서 관찰할 수 있도록 하는 isLoading StateFlow 정의
- fetchMyReservationHistory 함수 구현: 사용자의 액세스 토큰을 UserPreferencesRepository에서 조회하고, ReservationRepository의 getMyReservationHistory 함수를 호출하여 예약 내역을 비동기적으로 로드. 로딩 상태 관리 및 예외 처리 포함
- 로드된 예약 내역 데이터를 _myReservationHistory에 할당하고, 로딩 상태를 업데이트

Resolved: #150
@99winnmin 99winnmin added feat 새로운 기능을 추가한 경우 승민 🌊 승민이가 작업했어요 Android 프론트_안드로이드 labels Feb 22, 2024
@99winnmin 99winnmin added this to the 3주차 스프린트 milestone Feb 22, 2024
@99winnmin 99winnmin self-assigned this Feb 22, 2024
Copy link
Collaborator

@kimseongwooo kimseongwooo left a comment

Choose a reason for hiding this comment

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

확인했습니다. 고생 많으습니다!

@99winnmin 99winnmin merged commit c50af5a into dev Feb 22, 2024
@yeriinnn yeriinnn changed the title [AOS][예약 내역 API] Feat : 예약 신청 내역 화면 API 연동 및 기능 구현 완료 [Android][예약 내역 API] Feat : 예약 신청 내역 화면 API 연동 및 기능 구현 완료 Feb 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Android 프론트_안드로이드 feat 새로운 기능을 추가한 경우 승민 🌊 승민이가 작업했어요
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants