MBP-4700 Pagination 트리거 로직을 개선하고 Secion 단위가 아닌 List 단위로 콜백받을 수 있도록 변경해요. #43
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
배경
UICollectionViewDelegate
의willDisplayItem:at
함수를 이용하여 마지막 아이템의 index보다 threshold 만큼의 차이가 나는 아이템이 노출되었을때 NextBatchTrigger 이벤트를 콜백하는 방식으로 구현되어 있어요.변경사항
리뷰노트
트리거 시점을 설정하기 위해 CollectionViewAdapterConfiguration의 leadingScreensForBatching 속성을 설정합니다.
leadingScreensForNextBatching
값은 리스트의 높이(혹은 너비) 값의 배수만큼 떨어져있음을 의미합니다)NextBatchFetchDecisionProvider
프로토콜을 구현하여 Next Batch Trigger 이벤트를 콜백받을지 여부를 반환합니다. 혹은 미리 구현된AnyNextBatchFetchDecisionProvider
구현체를 사용할 수 있습니다.List
에.onNextBatchTrigger
이벤트를 주입합니다.데이터 가져오기를 마친 후에는 KarrotListKit에 프로세스가 완료되었음을 알리는 것이 매우 중요합니다. 그러기 위해서는
NextBatchContext
의completeBatchFetching()
메소드를 호출해야 합니다. 이렇게 하면 전체 일괄 가져오기 메커니즘이 동기화 상태로 유지되고 다음 일괄 가져오기 주기가 발생할 수 있습니다.