Skip to content

Commit

Permalink
Redesign address error
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelekol committed Feb 26, 2025
1 parent 5d44d02 commit b46091c
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ fun EnterAddressScreen(navController: NavController, input: EnterAddressFragment
value = uiState.value,
hint = stringResource(id = R.string.Send_Hint_Address),
state = uiState.inputState,
showStateIcon = false,
textPreprocessor = paymentAddressViewModel,
navController = navController,
chooseContactEnable = false,
Expand Down Expand Up @@ -157,7 +158,10 @@ fun EnterAddressScreen(navController: NavController, input: EnterAddressFragment
modifier = Modifier
.fillMaxWidth()
.padding(start = 16.dp, end = 16.dp),
title = stringResource(R.string.Button_Next),
title = if (uiState.addressValidationError != null)
stringResource(R.string.Send_Address_Error_InvalidAddress)
else
stringResource(R.string.Button_Next),
onClick = {
uiState.address?.let {
navController.slideFromRight(
Expand Down Expand Up @@ -188,31 +192,33 @@ fun AddressCheck(
navController: NavController,
onPaidAction: (action: IPaidAction) -> Unit
) {
Column(
modifier = Modifier
.padding(top = 16.dp)
.padding(horizontal = 16.dp)
.fillMaxWidth()
.clip(RoundedCornerShape(12.dp))
.border(
0.5.dp,
ComposeAppTheme.colors.steel20,
RoundedCornerShape(12.dp)
)
) {
checkResults.forEach { (addressCheckType, checkData) ->
CheckCell(
title = stringResource(addressCheckType.title),
checkType = addressCheckType,
inProgress = checkData.inProgress,
checkResult = checkData.checkResult,
navController,
onPaidAction
)
if (addressValidationError == null || addressValidationError is AddressValidationError.SendToSelfForbidden) {
Column(
modifier = Modifier
.padding(top = 16.dp)
.padding(horizontal = 16.dp)
.fillMaxWidth()
.clip(RoundedCornerShape(12.dp))
.border(
0.5.dp,
ComposeAppTheme.colors.steel20,
RoundedCornerShape(12.dp)
)
) {
checkResults.forEach { (addressCheckType, checkData) ->
CheckCell(
title = stringResource(addressCheckType.title),
checkType = addressCheckType,
inProgress = checkData.inProgress,
checkResult = checkData.checkResult,
navController,
onPaidAction
)
}
}
}

Errors(addressValidationError, checkResults)
Errors(addressValidationError, checkResults)
}
}

@Composable
Expand Down Expand Up @@ -297,7 +303,7 @@ private fun CheckCell(
contentDescription = null,
tint = ComposeAppTheme.colors.jacob,
modifier = Modifier
.padding(end = 3.dp)
.padding(end = 8.dp)
.size(20.dp)
)
subhead2_grey(text = title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@ class TronAddressValidator(
override suspend fun validate(address: Address) {
val validAddress = io.horizontalsystems.tronkit.models.Address.fromBase58(address.hex)
if (token.type == TokenType.Native && adapter.isOwnAddress(validAddress)) {
throw Exception(Translator.getString(R.string.Send_Error_SendToSelf, "TRX"))
throw AddressValidationError.SendToSelfForbidden(
Translator.getString(R.string.Send_Error_SendToSelf, "TRX")
)
}
}
}
Expand All @@ -63,7 +65,13 @@ class ZcashAddressValidator(
try {
adapter.validate(address.hex)
} catch (e: ZcashError.SendToSelfNotAllowed) {
throw Exception(Translator.getString(R.string.Send_Error_SendToSelf, "ZEC"))
throw AddressValidationError.SendToSelfForbidden(
Translator.getString(R.string.Send_Error_SendToSelf, "ZEC")
)
}
}
}

sealed class AddressValidationError : Throwable() {
class SendToSelfForbidden(override val message: String) : AddressValidationError()
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ fun FormsInputAddress(
value: String,
hint: String,
state: DataState<Address>? = null,
showStateIcon: Boolean = true,
textPreprocessor: TextPreprocessor = TextPreprocessorImpl,
navController: NavController,
chooseContactEnable: Boolean,
Expand Down Expand Up @@ -127,20 +128,28 @@ fun FormsInputAddress(
HSCircularProgressIndicator()
}
is DataState.Error -> {
Icon(
modifier = Modifier.padding(end = 8.dp),
painter = painterResource(id = R.drawable.ic_attention_20),
contentDescription = null,
tint = cautionColor
)
if(showStateIcon) {
Icon(
modifier = Modifier.padding(end = 8.dp),
painter = painterResource(id = R.drawable.ic_attention_20),
contentDescription = null,
tint = cautionColor
)
} else {
HSpacer(28.dp)
}
}
is DataState.Success -> {
Icon(
modifier = Modifier.padding(end = 8.dp),
painter = painterResource(id = R.drawable.ic_check_20),
contentDescription = null,
tint = ComposeAppTheme.colors.remus
)
if(showStateIcon) {
Icon(
modifier = Modifier.padding(end = 8.dp),
painter = painterResource(id = R.drawable.ic_check_20),
contentDescription = null,
tint = ComposeAppTheme.colors.remus
)
} else {
HSpacer(28.dp)
}
}
else -> {
Spacer(modifier = Modifier.width(28.dp))
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,7 @@
<string name="Send_Address_Recent">Recent</string>
<string name="Send_Address_Error_CheckLocked">Locked</string>
<string name="Send_Address_Error_Incorrect">Invalid</string>
<string name="Send_Address_Error_InvalidAddress">Invalid Address</string>
<string name="Send_Address_Error_Correct">Correct</string>
<string name="Send_Address_Error_Detected">Detected</string>
<string name="Send_Address_Error_Clear">Clear</string>
Expand Down

0 comments on commit b46091c

Please sign in to comment.