Skip to content

Commit 2ed9202

Browse files
committed
[BOOK-275] feat: 촬영 시작 시 로딩 상태 띄우기 및 캡쳐 실패 이벤트 추가
1 parent e53d4bf commit 2ed9202

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/ocr/OcrPresenter.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,17 @@ class OcrPresenter @AssistedInject constructor(
9797
isPermissionDialogVisible = false
9898
}
9999

100-
is OcrUiEvent.OnCaptureButtonClick -> {
100+
is OcrUiEvent.OnCaptureStart -> {
101+
isLoading = true
102+
}
103+
104+
is OcrUiEvent.OnCaptureFailed -> {
105+
isLoading = false
106+
sideEffect = OcrSideEffect.ShowToast("이미지 캡처에 실패했어요")
107+
Logger.e("ImageCaptureException: ${event.exception.message}")
108+
}
109+
110+
is OcrUiEvent.OnImageCaptured -> {
101111
isTextDetectionFailed = false
102112

103113
recognizeText(event.imageUri)

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/ocr/OcrUi.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ private fun CameraPreview(
252252
Button(
253253
enabled = !state.isLoading,
254254
onClick = {
255+
state.eventSink(OcrUiEvent.OnCaptureStart)
256+
255257
val executor = ContextCompat.getMainExecutor(context)
256258
val photoFile = File.createTempFile("ocr_", ".jpg", context.cacheDir)
257259
val output = ImageCapture.OutputFileOptions.Builder(photoFile).build()
@@ -261,11 +263,11 @@ private fun CameraPreview(
261263
executor,
262264
object : ImageCapture.OnImageSavedCallback {
263265
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
264-
state.eventSink(OcrUiEvent.OnCaptureButtonClick(photoFile.toUri()))
266+
state.eventSink(OcrUiEvent.OnImageCaptured(photoFile.toUri()))
265267
}
266268

267269
override fun onError(exception: ImageCaptureException) {
268-
Logger.e("ImageCaptureException: ${exception.message}")
270+
state.eventSink(OcrUiEvent.OnCaptureFailed(exception))
269271
}
270272
},
271273
)

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/ocr/OcrUiState.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ sealed interface OcrUiEvent : CircuitUiEvent {
3232
data object OnCloseClick : OcrUiEvent
3333
data object OnShowPermissionDialog : OcrUiEvent
3434
data object OnHidePermissionDialog : OcrUiEvent
35-
data class OnCaptureButtonClick(val imageUri: Uri) : OcrUiEvent
35+
data object OnCaptureStart : OcrUiEvent
36+
data class OnCaptureFailed(val exception: Exception) : OcrUiEvent
37+
data class OnImageCaptured(val imageUri: Uri) : OcrUiEvent
3638
data object OnReCaptureButtonClick : OcrUiEvent
3739
data object OnSelectionConfirmed : OcrUiEvent
3840
data object OnRecaptureDialogConfirmed : OcrUiEvent

0 commit comments

Comments
 (0)