문제
인증샷 상세 화면에서 찌르기 쿨타임이 남아 있는 상태로 진입하면 pokeCooldownRemaining이 양수로 저장되고, isPokeDisabled가 true가 되어 찌르기 액션이 막힙니다.
PokeGoalUseCase.remainingCooldown()은 호출 시점의 System.currentTimeMillis()로 남은 시간을 계산하지만, 상세 화면에서는 이 값을 init 시점에 한 번만 상태로 저장합니다. 이후 시간 경과에 따라 pokeCooldownRemaining을 다시 계산하거나 감소시키는 흐름이 없어, 실제 쿨타임이 만료되어도 화면을 유지한 상태에서는 버튼이 계속 비활성 상태로 남을 수 있습니다.
기대 동작
- 쿨타임이 남아 있으면 찌르기 버튼은 비활성화됩니다.
- 시간이 지나 쿨타임이 만료되면 화면을 다시 진입하지 않아도 찌르기 버튼이 활성화됩니다.
- 남은 시간 안내 토스트는 최신 남은 시간을 기준으로 표시됩니다.
수정 방향
- 인증샷 상세 화면의 쿨타임 상태를 현재 시간 기준으로 갱신하는 흐름을 추가합니다.
- 쿨타임 만료 시
pokeCooldownRemaining이 0L이 되도록 보장합니다.
- 가능하면 ViewModel 단위 테스트로 만료 시 버튼 활성화 조건을 고정합니다.
관련 코드
feature/photolog/detail/src/main/java/com/twix/photolog/detail/PhotologDetailViewModel.kt
feature/photolog/detail/src/main/java/com/twix/photolog/detail/contract/PhotologDetailUiState.kt
domain/src/main/java/com/twix/domain/usecase/PokeGoalUseCase.kt
문제
인증샷 상세 화면에서 찌르기 쿨타임이 남아 있는 상태로 진입하면
pokeCooldownRemaining이 양수로 저장되고,isPokeDisabled가true가 되어 찌르기 액션이 막힙니다.PokeGoalUseCase.remainingCooldown()은 호출 시점의System.currentTimeMillis()로 남은 시간을 계산하지만, 상세 화면에서는 이 값을init시점에 한 번만 상태로 저장합니다. 이후 시간 경과에 따라pokeCooldownRemaining을 다시 계산하거나 감소시키는 흐름이 없어, 실제 쿨타임이 만료되어도 화면을 유지한 상태에서는 버튼이 계속 비활성 상태로 남을 수 있습니다.기대 동작
수정 방향
pokeCooldownRemaining이0L이 되도록 보장합니다.관련 코드
feature/photolog/detail/src/main/java/com/twix/photolog/detail/PhotologDetailViewModel.ktfeature/photolog/detail/src/main/java/com/twix/photolog/detail/contract/PhotologDetailUiState.ktdomain/src/main/java/com/twix/domain/usecase/PokeGoalUseCase.kt