Usernames 1.01 Fast-Follow Part 1.

This commit is contained in:
Alex Hart
2024-03-06 09:06:50 -04:00
parent 83c16a46de
commit 4b4b263423
8 changed files with 241 additions and 25 deletions

View File

@@ -4,6 +4,8 @@ import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
@@ -185,25 +187,20 @@ public final class RecipientBottomSheetDialogFragment extends BottomSheetDialogF
: recipient.getDisplayName(requireContext());
fullName.setVisibility(TextUtils.isEmpty(name) ? View.GONE : View.VISIBLE);
SpannableStringBuilder nameBuilder = new SpannableStringBuilder(name);
boolean appendedToName = false;
if (recipient.showVerified()) {
appendedToName = true;
SpanUtil.appendCenteredImageSpan(nameBuilder, ContextUtil.requireDrawable(requireContext(), R.drawable.ic_official_28), 28, 28);
SpanUtil.appendCenteredImageSpanWithoutSpace(nameBuilder, new ColorDrawable(Color.TRANSPARENT), 8, 8);
SpanUtil.appendCenteredImageSpanWithoutSpace(nameBuilder, ContextUtil.requireDrawable(requireContext(), R.drawable.ic_official_28), 28, 28);
} else if (recipient.isSystemContact()) {
appendedToName = true;
Drawable drawable = ContextUtil.requireDrawable(requireContext(), R.drawable.symbol_person_circle_24);
drawable.setTint(ContextCompat.getColor(requireContext(), R.color.signal_colorOnSurface));
SpanUtil.appendCenteredImageSpan(nameBuilder, drawable, 24, 24);
SpanUtil.appendCenteredImageSpanWithoutSpace(nameBuilder, new ColorDrawable(Color.TRANSPARENT), 8, 8);
SpanUtil.appendCenteredImageSpanWithoutSpace(nameBuilder, drawable, 24, 24);
}
if (!recipient.isSelf() && recipient.isIndividual()) {
Drawable drawable = ContextUtil.requireDrawable(requireContext(), R.drawable.symbol_chevron_right_24);
drawable.setBounds(0, 0, (int) DimensionUnit.DP.toPixels(24), (int) DimensionUnit.DP.toPixels(24));
drawable.setTint(ContextCompat.getColor(requireContext(), R.color.signal_colorOutline));
if (!appendedToName) {
nameBuilder.append(" ");
}
nameBuilder.append(SpanUtil.buildCenteredImageSpan(drawable));
fullName.setText(nameBuilder);

View File

@@ -66,6 +66,7 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.dialog
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import kotlinx.coroutines.launch
import org.signal.core.ui.Animations.navHostSlideInTransition
import org.signal.core.ui.Animations.navHostSlideOutTransition
@@ -81,6 +82,7 @@ import org.thoughtcrime.securesms.PassphraseRequiredActivity
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.main.UsernameQrScannerActivity
import org.thoughtcrime.securesms.invites.InviteActions
import org.thoughtcrime.securesms.permissions.compose.Permissions
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberVisualTransformation
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
@@ -103,6 +105,7 @@ class FindByActivity : PassphraseRequiredActivity() {
FindByViewModel(FindByMode.valueOf(intent.getStringExtra(MODE)!!))
}
@OptIn(ExperimentalPermissionsApi::class)
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
val qrScanLauncher: ActivityResultLauncher<Unit> = registerForActivityResult(UsernameQrScannerActivity.Contract()) { recipientId ->
if (recipientId != null) {
@@ -136,6 +139,14 @@ class FindByActivity : PassphraseRequiredActivity() {
navigationIconPainter = painterResource(id = R.drawable.symbol_arrow_left_24)
) {
val context = LocalContext.current
val cameraPermissionController = Permissions.cameraPermissionHandler(
rationale = stringResource(id = R.string.PaymentsTransferFragment__to_scan_a_qr_code_signal_needs_access_to_the_camera),
onPermissionGranted = {
qrScanLauncher.launch(Unit)
}
)
Content(
paddingValues = it,
state = state,
@@ -157,7 +168,7 @@ class FindByActivity : PassphraseRequiredActivity() {
navController.navigate("select-country-prefix")
},
onQrCodeScanClicked = {
qrScanLauncher.launch(Unit)
cameraPermissionController.request()
}
)
}