Implement UX feedback in new conversation start flows.

This commit is contained in:
Cody Henthorne
2024-02-15 15:23:40 -05:00
parent 3f8a9e1be2
commit ebd8d85a3d
9 changed files with 62 additions and 42 deletions

View File

@@ -41,6 +41,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
@@ -347,7 +348,11 @@ private fun Content(
.padding(horizontal = 16.dp, vertical = 10.dp)
.focusRequester(focusRequester)
.heightIn(min = 44.dp),
contentPadding = TextFieldDefaults.contentPaddingWithoutLabel(top = 10.dp, bottom = 10.dp)
contentPadding = if (state.mode == FindByMode.PHONE_NUMBER) {
TextFieldDefaults.contentPaddingWithoutLabel(start = 4.dp, top = 10.dp, bottom = 10.dp)
} else {
TextFieldDefaults.contentPaddingWithoutLabel(top = 10.dp, bottom = 10.dp)
}
)
if (state.mode == FindByMode.USERNAME) {
@@ -395,18 +400,27 @@ private fun PhoneNumberEntryPrefix(
onSelectCountryPrefixClick: () -> Unit
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(end = 16.dp)
) {
Row(
modifier = Modifier.clickable(onClick = onSelectCountryPrefixClick, enabled = enabled)
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.clip(RoundedCornerShape(1000.dp))
.clickable(onClick = onSelectCountryPrefixClick, enabled = enabled)
) {
Text(
text = selectedCountryPrefix.toString()
text = selectedCountryPrefix.toString(),
modifier = Modifier
.padding(start = 12.dp, top = 6.dp, bottom = 6.dp)
)
Icon(
painter = painterResource(id = R.drawable.symbol_dropdown_triangle_24),
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurfaceVariant
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier
.size(24.dp)
.padding(end = 1.dp)
)
}
Dividers.Vertical(
@@ -414,7 +428,7 @@ private fun PhoneNumberEntryPrefix(
color = MaterialTheme.colorScheme.outline,
modifier = Modifier
.padding(vertical = 2.dp)
.padding(start = 8.dp)
.padding(start = 7.dp)
.height(20.dp)
)
}

View File

@@ -20,6 +20,7 @@ import org.thoughtcrime.securesms.profiles.manage.UsernameRepository
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.registration.util.CountryPrefix
import org.thoughtcrime.securesms.util.UsernameUtil
import org.whispersystems.signalservice.api.util.PhoneNumberFormatter
import java.util.concurrent.TimeUnit
class FindByViewModel(
@@ -104,12 +105,20 @@ class FindByViewModel(
ContactDiscovery.refresh(context, recipient, false, TimeUnit.SECONDS.toMillis(10))
val resolved = Recipient.resolved(recipient.id)
if (!resolved.isRegistered) {
FindByResult.NotFound(recipient.id)
if (PhoneNumberFormatter.isValidNumber(nationalNumber, countryCode.toString())) {
FindByResult.NotFound(recipient.id)
} else {
FindByResult.InvalidEntry
}
} else {
FindByResult.Success(recipient.id)
}
} catch (e: Exception) {
FindByResult.NotFound(recipient.id)
if (PhoneNumberFormatter.isValidNumber(nationalNumber, countryCode.toString())) {
FindByResult.NotFound(recipient.id)
} else {
FindByResult.InvalidEntry
}
}
} else {
FindByResult.Success(recipient.id)