Skip to content

Commit c3342b0

Browse files
committed
[BOOK-95] feat: 다시 촬영 시 다이얼로그 확인 요청 구현
1 parent e86c7a1 commit c3342b0

File tree

4 files changed

+37
-1
lines changed

4 files changed

+37
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class OcrPresenter @AssistedInject constructor(
3030
var selectedIndices by rememberRetained { mutableStateOf(setOf<Int>()) }
3131
var mergedSentence by rememberRetained { mutableStateOf("") }
3232
var isTextDetectionFailed by rememberRetained { mutableStateOf(false) }
33+
var isRecaptureDialogVisible by rememberRetained { mutableStateOf(false) }
3334

3435
fun handleEvent(event: OcrUiEvent) {
3536
when (event) {
@@ -61,7 +62,7 @@ class OcrPresenter @AssistedInject constructor(
6162
}
6263

6364
is OcrUiEvent.OnReCaptureButtonClick -> {
64-
currentUi = OcrUi.CAMERA
65+
isRecaptureDialogVisible = true
6566
}
6667

6768
is OcrUiEvent.OnSelectionConfirmed -> {
@@ -77,6 +78,16 @@ class OcrPresenter @AssistedInject constructor(
7778
selectedIndices + event.index
7879
}
7980
}
81+
82+
is OcrUiEvent.OnRecaptureDialogConfirmed -> {
83+
selectedIndices = emptySet()
84+
isRecaptureDialogVisible = false
85+
currentUi = OcrUi.CAMERA
86+
}
87+
88+
is OcrUiEvent.OnRecaptureDialogDismissed -> {
89+
isRecaptureDialogVisible = false
90+
}
8091
}
8192
}
8293

@@ -85,6 +96,7 @@ class OcrPresenter @AssistedInject constructor(
8596
sentenceList = sentenceList,
8697
selectedIndices = selectedIndices,
8798
isTextDetectionFailed = isTextDetectionFailed,
99+
isRecaptureDialogVisible = isRecaptureDialogVisible,
88100
eventSink = ::handleEvent,
89101
)
90102
}

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import com.ninecraft.booket.core.designsystem.theme.Neutral950
5858
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
5959
import com.ninecraft.booket.core.designsystem.theme.White
6060
import com.ninecraft.booket.core.ui.component.ReedCloseTopAppBar
61+
import com.ninecraft.booket.core.ui.component.ReedDialog
6162
import com.ninecraft.booket.core.ui.component.ReedFullScreen
6263
import com.ninecraft.booket.feature.record.R
6364
import com.ninecraft.booket.feature.record.ocr.component.CameraFrame
@@ -284,6 +285,22 @@ private fun TextScanResult(
284285
)
285286
}
286287
}
288+
289+
if (state.isRecaptureDialogVisible) {
290+
ReedDialog(
291+
title = stringResource(R.string.recapture_dialog_title),
292+
description = stringResource(R.string.recapture_dialog_description),
293+
confirmButtonText = stringResource(R.string.recapture_dialog_confirm),
294+
onConfirmRequest = {
295+
state.eventSink(OcrUiEvent.OnRecaptureDialogConfirmed)
296+
},
297+
dismissButtonText = stringResource(R.string.recapture_dialog_cancel),
298+
onDismissRequest = {
299+
state.eventSink(OcrUiEvent.OnRecaptureDialogDismissed)
300+
301+
},
302+
)
303+
}
287304
}
288305

289306
@ComponentPreview

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ data class OcrUiState(
1111
val sentenceList: ImmutableList<String> = emptyList<String>().toPersistentList(),
1212
val selectedIndices: Set<Int> = emptySet(),
1313
var isTextDetectionFailed: Boolean = false,
14+
var isRecaptureDialogVisible: Boolean = false,
1415
val eventSink: (OcrUiEvent) -> Unit,
1516
) : CircuitUiState
1617

@@ -20,6 +21,8 @@ sealed interface OcrUiEvent : CircuitUiEvent {
2021
data object OnCaptureButtonClick : OcrUiEvent
2122
data object OnReCaptureButtonClick : OcrUiEvent
2223
data object OnSelectionConfirmed : OcrUiEvent
24+
data object OnRecaptureDialogConfirmed : OcrUiEvent
25+
data object OnRecaptureDialogDismissed : OcrUiEvent
2326
data class OnSentenceSelected(val index: Int) : OcrUiEvent
2427
}
2528

feature/record/src/main/res/values/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@
1717
<string name="ocr_selection_confirm">선택 완료</string>
1818
<string name="ocr_recapture">다시 촬영하기</string>
1919
<string name="ocr_error_text_detection_failed">문장을 인식하지 못했어요\n다시 한 번 촬영해주세요</string>
20+
<string name="recapture_dialog_title">다시 촬영하시겠어요?</string>
21+
<string name="recapture_dialog_description">선택한 문장은 삭제될 예정입니다.</string>
22+
<string name="recapture_dialog_confirm">확인</string>
23+
<string name="recapture_dialog_cancel">취소</string>
2024
</resources>

0 commit comments

Comments
 (0)