@@ -4,13 +4,16 @@ import android.net.Uri
44import androidx.compose.runtime.Composable
55import androidx.compose.runtime.LaunchedEffect
66import androidx.compose.runtime.getValue
7+ import androidx.compose.runtime.mutableIntStateOf
78import androidx.compose.runtime.mutableStateOf
89import androidx.compose.runtime.rememberCoroutineScope
910import androidx.compose.runtime.setValue
1011import androidx.core.net.toUri
1112import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
13+ import com.ninecraft.booket.core.common.utils.UiText
1214import com.ninecraft.booket.core.common.utils.handleException
1315import com.ninecraft.booket.core.ocr.recognizer.CloudOcrRecognizer
16+ import com.ninecraft.booket.feature.record.R
1417import com.ninecraft.booket.feature.record.ocr.OcrSideEffect.ShowToast
1518import com.ninecraft.booket.feature.screens.OcrScreen
1619import 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
0 commit comments