Skip to content

Commit fba3013

Browse files
authored
Merge pull request #88 from YAPP-Github/feature/moneymong-306-예외-처리
Feature/moneymong 306 예외 처리
2 parents f8319a3 + 453861d commit fba3013

7 files changed

Lines changed: 57 additions & 24 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
android:exported="true"
3232
android:label="${appLabel}"
3333
android:windowSoftInputMode="adjustResize"
34-
android:theme="@style/Theme.Moneymongandroid">
34+
android:theme="@style/Theme.Moneymongandroid"
35+
android:screenOrientation="portrait">
3536
<intent-filter>
3637
<action android:name="android.intent.action.MAIN" />
3738

feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ fun LedgerDetailScreen(
187187
.background(Gray01)
188188
.padding(it)
189189
) {
190-
Spacer(modifier = Modifier.height(12.dp))
190+
Spacer(modifier = Modifier.height(4.dp))
191191
Box(
192192
modifier = Modifier
193193
.fillMaxSize()
@@ -565,20 +565,20 @@ fun LedgerDetailScreen(
565565
MDSButton(
566566
modifier = Modifier
567567
.fillMaxWidth()
568-
.padding(vertical = 24.dp, horizontal = 20.dp),
568+
.padding(vertical = 12.dp, horizontal = 20.dp),
569569
text = "완료하기",
570570
enabled = state.enabledEdit,
571-
size = MDSButtonSize.MEDIUM,
571+
size = MDSButtonSize.LARGE,
572572
type = MDSButtonType.PRIMARY,
573573
onClick = { viewModel.eventEmit(LedgerDetailSideEffect.LedgerDetailEditDone) }
574574
)
575575
} else {
576576
MDSButton(
577577
modifier = Modifier
578578
.fillMaxWidth()
579-
.padding(vertical = 24.dp, horizontal = 20.dp),
579+
.padding(vertical = 12.dp, horizontal = 20.dp),
580580
text = "수정하기",
581-
size = MDSButtonSize.MEDIUM,
581+
size = MDSButtonSize.LARGE,
582582
type = MDSButtonType.PRIMARY,
583583
onClick = { viewModel.eventEmit(LedgerDetailSideEffect.LedgerDetailEdit) }
584584
)

feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/view/LedgerDetailTopbarView.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ fun LedgerDetailTopbarView(
4343
.noRippleClickable {
4444
onClickPrev()
4545
}
46-
.padding(vertical = 10.dp, horizontal = MMHorizontalSpacing)
46+
.padding(vertical = 18.dp, horizontal = MMHorizontalSpacing)
4747
.align(Alignment.CenterStart),
4848
painter = painterResource(id = drawable.ic_chevron_left),
4949
contentDescription = null,
5050
tint = Gray07
5151
)
5252
Text(
5353
modifier = Modifier
54-
.padding(vertical = 8.dp)
54+
.padding(vertical = 16.dp)
5555
.align(Alignment.Center),
5656
text = title,
5757
style = Heading1,
@@ -75,7 +75,7 @@ fun LedgerDetailTopbarView(
7575
.noRippleClickable {
7676
onClickDelete()
7777
}
78-
.padding(vertical = 10.dp, horizontal = MMHorizontalSpacing)
78+
.padding(vertical = 18.dp, horizontal = MMHorizontalSpacing)
7979
.align(Alignment.CenterEnd),
8080
painter = painterResource(id = drawable.ic_delete),
8181
contentDescription = null,

feature/ocr-detail/src/main/java/com/moneymong/moneymong/ocr_detail/OCRDetailViewModel.kt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ import org.orbitmvi.orbit.syntax.simple.intent
2121
import org.orbitmvi.orbit.syntax.simple.postSideEffect
2222
import org.orbitmvi.orbit.syntax.simple.reduce
2323
import java.io.File
24+
import java.text.SimpleDateFormat
25+
import java.util.Date
26+
import java.util.Locale
2427
import javax.inject.Inject
2528

2629
@HiltViewModel
@@ -39,12 +42,26 @@ class OCRDetailViewModel @Inject constructor(
3942

4043
fun init(document: DocumentEntity?) = intent {
4144
val receipt = document?.images?.first()?.receipt?.result
42-
val paymentDateString = receipt?.paymentInfo?.date?.formatted.run {
43-
"${this?.year ?: ""}${this?.month ?: ""}${this?.day ?: ""}"
44-
}
45-
val paymentTimeString = receipt?.paymentInfo?.time?.formatted.run {
46-
"${this?.hour ?: ""}${this?.minute ?: ""}${this?.second ?: ""}"
47-
}
45+
val currentDate = SimpleDateFormat("yyyyMMdd", Locale.KOREA).format(Date(System.currentTimeMillis()))
46+
val currentTime = SimpleDateFormat("HHmmss", Locale.KOREA).format(Date(System.currentTimeMillis()))
47+
val paymentDateString = receipt?.paymentInfo?.date?.formatted?.let {
48+
("${it.year}${it.month}${it.day}").run {
49+
if (validateValue(length = 8, isDigit = true) && isValidPaymentDate()) {
50+
this
51+
} else {
52+
currentDate
53+
}
54+
}
55+
} ?: currentDate
56+
val paymentTimeString = receipt?.paymentInfo?.time?.formatted?.let {
57+
("${it.hour}${it.minute}${it.second}").run {
58+
if (validateValue(length = 6, isDigit = true) && isValidPaymentTime()) {
59+
this
60+
} else {
61+
currentTime
62+
}
63+
}
64+
} ?: currentTime
4865
reduce {
4966
state.copy(
5067
document = document,
@@ -77,7 +94,7 @@ class OCRDetailViewModel @Inject constructor(
7794
id = state.agencyId,
7895
storeInfo = state.storeNameValue.text,
7996
fundType = state.fundType,
80-
amount = state.totalPriceValue.text.toInt(),
97+
amount = state.totalPriceValue.text.replace(".", "").toInt(),
8198
description = state.memoValue.text,
8299
paymentDate = state.postPaymentDate,
83100
receiptImageUrls = state.receiptImageUrls,

feature/ocr-result/src/main/java/com/moneymong/moneymong/ocr_result/OCRResultState.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package com.moneymong.moneymong.ocr_result
22

33
import com.moneymong.moneymong.common.base.State
44
import com.moneymong.moneymong.common.ext.toZonedDateTime
5+
import com.moneymong.moneymong.common.ui.isValidPaymentDate
6+
import com.moneymong.moneymong.common.ui.isValidPaymentTime
57
import com.moneymong.moneymong.common.ui.toWonFormat
8+
import com.moneymong.moneymong.common.ui.validateValue
69
import com.moneymong.moneymong.domain.entity.ocr.DocumentEntity
710
import com.moneymong.moneymong.domain.entity.ocr.DocumentResultEntity
811
import java.io.File
@@ -46,16 +49,28 @@ data class OCRResultState(
4649
val formattedDate: String
4750
get() {
4851
val currentDate = SimpleDateFormat("yyyy년 MM월 dd일", Locale.KOREA).format(Date(System.currentTimeMillis()))
49-
return receipt?.paymentInfo?.date?.let {
50-
"${it.formatted?.year}${it.formatted?.month}${it.formatted?.day}"
52+
return receipt?.paymentInfo?.date?.formatted?.let {
53+
("${it.year}${it.month}${it.day}").run {
54+
if (validateValue(length = 8, isDigit = true) && isValidPaymentDate()) {
55+
"${it.year}${it.month}${it.day}"
56+
} else {
57+
currentDate
58+
}
59+
}
5160
} ?: currentDate
5261
}
5362

5463
val formattedTime: String
5564
get() {
5665
val currentTime = SimpleDateFormat("HH:mm:ss", Locale.KOREA).format(Date(System.currentTimeMillis()))
57-
return receipt?.paymentInfo?.time?.let {
58-
"${it.formatted?.hour}:${it.formatted?.minute}:${it.formatted?.second}"
66+
return receipt?.paymentInfo?.time?.formatted?.let {
67+
("${it.hour}${it.minute}${it.second}").run {
68+
if (validateValue(length = 6, isDigit = true) && isValidPaymentTime()) {
69+
"${it.hour}:${it.minute}:${it.second}"
70+
} else {
71+
currentTime
72+
}
73+
}
5974
} ?: currentTime
6075
}
6176

feature/ocr/src/main/java/com/moneymong/moneymong/ocr/view/OCRHelperView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fun OCRHelperView(
4848
) {
4949
Icon(
5050
modifier = Modifier
51-
.padding(vertical = 10.dp, horizontal = 20.dp)
51+
.padding(vertical = 16.dp, horizontal = 20.dp)
5252
.noRippleClickable { onClickClose() },
5353
painter = painterResource(id = R.drawable.ic_close_default),
5454
contentDescription = null,

feature/ocr/src/main/java/com/moneymong/moneymong/ocr/view/OCRTopbarView.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ fun OCRTopbarView(
4646
if (visibleHelp) {
4747
Icon(
4848
modifier = Modifier
49-
.padding(vertical = 10.dp, horizontal = 20.dp)
49+
.padding(vertical = 16.dp, horizontal = 20.dp)
5050
.noRippleClickable { onClickHelp() },
5151
painter = painterResource(id = drawable.ic_warning_outline),
5252
contentDescription = null,
@@ -57,7 +57,7 @@ fun OCRTopbarView(
5757
}
5858
Icon(
5959
modifier = Modifier
60-
.padding(vertical = 10.dp, horizontal = 20.dp)
60+
.padding(vertical = 16.dp, horizontal = 20.dp)
6161
.noRippleClickable { onClickClose() },
6262
painter = painterResource(id = drawable.ic_close_default),
6363
contentDescription = null,
@@ -67,7 +67,7 @@ fun OCRTopbarView(
6767
Box(
6868
modifier = Modifier
6969
.fillMaxWidth()
70-
.padding(start = 20.dp, top = 42.dp, end = 20.dp)
70+
.padding(start = 20.dp, top = 56.dp, end = 20.dp)
7171
.drawBehind {
7272
drawIntoCanvas {
7373
val paint = Paint()

0 commit comments

Comments
 (0)