Skip to content

Conversation

@jlkim909
Copy link
Member

@jlkim909 jlkim909 commented Jul 28, 2025

PULL REQUEST

그룹 생성 이후 페이징 목록이 즉시 갱신되지 않던 문제를 해결하고, 서버가 다음 페이지 유무를 판단하기 위해 추가 데이터를 함께 보내는 방식에 대응하도록 Paging 로직을 개선했습니다.

Description

그룹 생성 후 페이징 목록이 즉시 반영되지 않던 문제 해결

  • 기존에는 그룹 생성 직후 .refresh()를 호출했지만, 그룹 생성 API가 비동기적으로 처리되어 목록에 새로운 그룹이 바로 반영되지 않는 경우가 있었습니다.
  • 이를 해결하기 위해 ViewModel.createGroup()suspend 함수로 변경하고, UI에서 coroutine으로 해당 함수를 호출한 뒤 .refresh()를 순차적으로 실행하도록 구조를 변경했습니다.

서버의 추가 데이터 포함 응답 방식에 대응한 페이징 처리 개선

  • 서버는 각 페이지 요청 시 최대 pageSize + 1개의 항목을 반환하고, 클라이언트는 이 추가 데이터를 통해 다음 페이지의 존재 여부를 판단합니다.
  • 이러한 방식에 맞춰 OffsetPagingSource는 다음과 같이 동작하도록 수정했습니다:
    • 서버로부터 받은 전체 항목 중 pageSize까지만 화면에 노출
    • 항목 개수가 pageSize를 초과할 경우에만 nextKey를 설정

jlkim909 added 2 commits July 28, 2025 20:15
- 서버가 페이지당 최대 11개의 데이터를 내려줄 때, 실제 클라이언트에는 10개만 노출되도록 페이징 처리 로직을 수정
- `pageSize` 파라미터를 추가하여 nextKey 판단 기준을 명확히 함
- 데이터는 `items.take(pageSize)`로 제한하고, `items.size > pageSize`일 때만 다음 페이지가 존재하는 것으로 판단
- createGroup() 함수에서 viewModelScope.launch를 제거하고 suspend 함수로 변경
- HomeScreen에서 rememberCoroutineScope를 사용해 그룹 생성 후 정확한 타이밍에 refresh() 호출되도록 개선
- 그룹 생성 후 목록에 반영되지 않는 문제를 해결하고 구조적 일관성을 확보
@jlkim909 jlkim909 requested a review from hyunjung-choi July 28, 2025 11:27
@jlkim909 jlkim909 self-assigned this Jul 28, 2025
@jlkim909 jlkim909 added bug 버그 수정 refactor 코드 리팩토링 labels Jul 28, 2025
@jlkim909 jlkim909 linked an issue Jul 28, 2025 that may be closed by this pull request
5 tasks
@jlkim909 jlkim909 merged commit 0c93ac8 into develop Jul 28, 2025
1 check passed
@jlkim909 jlkim909 deleted the feature/paging-overfetch-handling branch July 28, 2025 11:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug 버그 수정 refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix over-fetch handling in OffsetPagingSource

1 participant