Skip to content

Commit c576319

Browse files
committed
Merge remote-tracking branch 'origin/BOOK-491-feature/#251' into BOOK-491-feature/#251
2 parents d889432 + 7af19b7 commit c576319

4 files changed

Lines changed: 11 additions & 7 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal fun HandleOcrSideEffects(
1414
RememberedEffect(state.sideEffect) {
1515
when (state.sideEffect) {
1616
is OcrSideEffect.ShowToast -> {
17-
Toast.makeText(context, state.sideEffect.message, Toast.LENGTH_SHORT).show()
17+
Toast.makeText(context, state.sideEffect.message.asString(context), Toast.LENGTH_SHORT).show()
1818
}
1919

2020
null -> {}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@ import android.net.Uri
44
import androidx.compose.runtime.Composable
55
import androidx.compose.runtime.LaunchedEffect
66
import androidx.compose.runtime.getValue
7+
import androidx.compose.runtime.mutableIntStateOf
78
import androidx.compose.runtime.mutableStateOf
89
import androidx.compose.runtime.rememberCoroutineScope
910
import androidx.compose.runtime.setValue
1011
import androidx.core.net.toUri
1112
import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
13+
import com.ninecraft.booket.core.common.utils.UiText
1214
import com.ninecraft.booket.core.common.utils.handleException
1315
import com.ninecraft.booket.core.ocr.recognizer.CloudOcrRecognizer
16+
import com.ninecraft.booket.feature.record.R
1417
import com.ninecraft.booket.feature.record.ocr.OcrSideEffect.ShowToast
1518
import com.ninecraft.booket.feature.screens.OcrScreen
1619
import com.ninecraft.booket.feature.screens.OcrScreen.OcrResult
@@ -52,6 +55,7 @@ class OcrPresenter(
5255
@Composable
5356
override fun present(): OcrUiState {
5457
val scope = rememberCoroutineScope()
58+
var isLoading by rememberRetained { mutableStateOf(false) }
5559
var currentUi by rememberRetained { mutableStateOf(OcrUi.CAMERA) }
5660
var isPermissionDialogVisible by rememberRetained { mutableStateOf(false) }
5761
var selectedImage by rememberRetained { mutableStateOf("") }
@@ -62,11 +66,9 @@ class OcrPresenter(
6266
var isCameraRecognitionFailedDialogVisible by rememberRetained { mutableStateOf(false) }
6367
var isGalleryRecognitionFailedDialogVisible by rememberRetained { mutableStateOf(false) }
6468
var isRecaptureDialogVisible by rememberRetained { mutableStateOf(false) }
65-
var isLoading by rememberRetained { mutableStateOf(false) }
69+
var cameraFailureCount by rememberRetained { mutableIntStateOf(0) }
6670
var sideEffect by rememberRetained { mutableStateOf<OcrSideEffect?>(null) }
6771

68-
var cameraFailureCount by rememberRetained { mutableStateOf(0) }
69-
7072
LaunchedEffect(isTextDetectionFailed) {
7173
if (isTextDetectionFailed) {
7274
delay(2000)
@@ -124,7 +126,7 @@ class OcrPresenter(
124126

125127
val handleErrorMessage = { message: String ->
126128
Logger.e("Cloud Vision API Error: ${exception.message}")
127-
sideEffect = OcrSideEffect.ShowToast(message)
129+
sideEffect = ShowToast(UiText.DirectString(message))
128130
}
129131

130132
handleException(
@@ -159,7 +161,7 @@ class OcrPresenter(
159161

160162
is OcrUiEvent.OnCaptureFailed -> {
161163
isLoading = false
162-
sideEffect = ShowToast("이미지 캡처에 실패했어요")
164+
sideEffect = ShowToast(UiText.StringResource(R.string.ocr_capture_failed))
163165
Logger.e("ImageCaptureException: ${event.exception.message}")
164166
}
165167

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.ninecraft.booket.feature.record.ocr
22

33
import android.net.Uri
44
import androidx.compose.runtime.Immutable
5+
import com.ninecraft.booket.core.common.utils.UiText
56
import com.slack.circuit.runtime.CircuitUiEvent
67
import com.slack.circuit.runtime.CircuitUiState
78
import kotlinx.collections.immutable.ImmutableList
@@ -28,7 +29,7 @@ data class OcrUiState(
2829
@Immutable
2930
sealed interface OcrSideEffect {
3031
data class ShowToast(
31-
val message: String,
32+
val message: UiText,
3233
private val key: String = UUID.randomUUID().toString(),
3334
) : OcrSideEffect
3435
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,5 @@
5656
<string name="ocr_recognition_failed_dialog_direct_input">직접 입력하기</string>
5757
<string name="ocr_recognition_failed_dialog_camera">다시 촬영하기</string>
5858
<string name="ocr_recognition_failed_dialog_image">이미지 선택하기</string>
59+
<string name="ocr_capture_failed">이미지 캡처에 실패했어요</string>
5960
</resources>

0 commit comments

Comments
 (0)