- 안드로이드 멘토님이 사용하는 throttleFirst
internal fun <T> Flow<T>.throttleFirst(throttleTime: Long): Flow<T> = flow {
var lastEmissionTime = 0L
collect { upstream ->
val currentTime = System.currentTimeMillis()
val mayEmit = currentTime - lastEmissionTime > throttleTime
if (mayEmit) {
lastEmissionTime = currentTime
emit(upstream)
}
}
}
- 테스트 어떻게? → TestDispatcher를 통해 시간을 강제로 바꿀 수 있다.
- error 전달 방식은 괜찮은 것 같다. 에러 케이스별로 구분해보자?
- 업로드 재시도 요청 등도 처리해 보면 좋을 것 같다.
다른팀 피드백
- Adapter를 주입해서 쓰면 메모리 릭 문제를 해결하면서 Adapter를 재생성하지 않아도 된다.
- 다이얼로그는 왜 ViewModel을 만들지 않았나요?