fix(series-detail): 조회 실패 시 이전 화면으로 복귀한다
This commit is contained in:
@@ -44,12 +44,13 @@ class SeriesDetailActivity : BaseActivity<ActivitySeriesDetailBinding>(
|
|||||||
Toast.LENGTH_LONG
|
Toast.LENGTH_LONG
|
||||||
).show()
|
).show()
|
||||||
finish()
|
finish()
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
bindData()
|
bindData()
|
||||||
|
|
||||||
viewModel.seriesId = seriesId
|
viewModel.seriesId = seriesId
|
||||||
viewModel.getSeriesDetail()
|
viewModel.getSeriesDetail { finish() }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setupView() {
|
override fun setupView() {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class SeriesDetailViewModel(
|
|||||||
private val unknownErrorMessage: String
|
private val unknownErrorMessage: String
|
||||||
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
|
get() = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
|
||||||
|
|
||||||
fun getSeriesDetail() {
|
fun getSeriesDetail(onFailure: (() -> Unit)? = null) {
|
||||||
_isLoading.value = true
|
_isLoading.value = true
|
||||||
|
|
||||||
compositeDisposable.add(
|
compositeDisposable.add(
|
||||||
@@ -51,6 +51,10 @@ class SeriesDetailViewModel(
|
|||||||
_seriesDetailLiveData.value = seriesDetailResponse
|
_seriesDetailLiveData.value = seriesDetailResponse
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.value = it.message ?: unknownErrorMessage
|
_toastLiveData.value = it.message ?: unknownErrorMessage
|
||||||
|
|
||||||
|
if (onFailure != null) {
|
||||||
|
onFailure()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
},
|
},
|
||||||
@@ -58,6 +62,10 @@ class SeriesDetailViewModel(
|
|||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
it.message?.let { message -> Logger.e(message) }
|
it.message?.let { message -> Logger.e(message) }
|
||||||
_toastLiveData.postValue(unknownErrorMessage)
|
_toastLiveData.postValue(unknownErrorMessage)
|
||||||
|
|
||||||
|
if (onFailure != null) {
|
||||||
|
onFailure()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
18
docs/20260226_시리즈상세오류시이전페이지이동.md
Normal file
18
docs/20260226_시리즈상세오류시이전페이지이동.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
- [x] SeriesDetailActivity/SeriesDetailViewModel 오류 처리 흐름 확인
|
||||||
|
- [x] 시리즈 상세 조회 실패 시 이전 페이지 이동 로직 반영
|
||||||
|
- [x] 관련 테스트 실행 및 결과 확인
|
||||||
|
|
||||||
|
## 검증 기록
|
||||||
|
|
||||||
|
- 일시: 2026-02-26
|
||||||
|
- 무엇을/왜: 시리즈 상세 진입 후 `getSeriesDetail` 실패 시 토스트만 노출되고 화면이 유지되어 사용자 요청대로 이전 페이지 복귀가 필요함.
|
||||||
|
- 어떻게:
|
||||||
|
- `SeriesDetailViewModel.getSeriesDetail`에 `onFailure` 콜백을 추가하고 실패 분기(`success=false`, `onError`)에서 콜백을 실행하도록 수정.
|
||||||
|
- `SeriesDetailActivity`에서 `viewModel.getSeriesDetail { finish() }` 형태로 호출해 조회 실패 시 이전 페이지로 이동.
|
||||||
|
- `seriesId <= 0` 가드에서 `finish()` 이후 `return`을 추가해 후속 로직 실행 방지.
|
||||||
|
- 실행 명령:
|
||||||
|
- `./gradlew :app:testDebugUnitTest && ./gradlew :app:assembleDebug`
|
||||||
|
- 결과:
|
||||||
|
- `:app:testDebugUnitTest` 성공
|
||||||
|
- `:app:assembleDebug` 성공
|
||||||
|
- Kotlin LSP 미구성 환경으로 `lsp_diagnostics`는 실행 불가(도구에서 `.kt` 서버 미설정 오류 확인)
|
||||||
Reference in New Issue
Block a user