diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt index 8217456f43..8666777a06 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt @@ -39,6 +39,7 @@ import org.thoughtcrime.securesms.ui.components.OnPrimaryButtons import org.thoughtcrime.securesms.ui.components.OutlineButton import org.thoughtcrime.securesms.ui.components.SmallButtons import org.thoughtcrime.securesms.ui.components.TemporaryStateButton +import org.thoughtcrime.securesms.ui.contentDescription import org.thoughtcrime.securesms.ui.small @AndroidEntryPoint @@ -78,6 +79,7 @@ class InviteFriendFragment : Fragment() { TextSecurePreferences.getLocalNumber(LocalContext.current)!!, textAlign = TextAlign.Center, modifier = Modifier + .contentDescription("Your account ID") .align(Alignment.Center) .padding(22.dp) ) @@ -94,7 +96,8 @@ class InviteFriendFragment : Fragment() { SmallButtons { Row(horizontalArrangement = spacedBy(20.dp)) { OutlineButton( - modifier = Modifier.weight(1f), + modifier = Modifier.weight(1f) + .contentDescription("Share button"), onClick = { requireContext().sendInvitation() } ) { Text(stringResource(R.string.share)) @@ -102,7 +105,8 @@ class InviteFriendFragment : Fragment() { TemporaryStateButton { source, temporary -> OutlineButton( - modifier = Modifier.weight(1f), + modifier = Modifier.weight(1f) + .contentDescription("Copy button"), interactionSource = source, onClick = { requireContext().copyPublicKey() }, ) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt index 9c2ae98bcd..9f6fec4b07 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt @@ -61,7 +61,7 @@ class NewConversationHomeFragment : Fragment() { Divider(modifier = Modifier.padding(start = 80.dp)) ItemButton(textId = R.string.dialog_join_community_title, icon = R.drawable.ic_globe) { delegate.onJoinCommunitySelected() } Divider(modifier = Modifier.padding(start = 80.dp)) - ItemButton(textId = R.string.activity_settings_invite_button_title, icon = R.drawable.ic_invite_friend) { delegate.onInviteFriend() } + ItemButton(textId = R.string.activity_settings_invite_button_title, icon = R.drawable.ic_invite_friend, contentDescription = R.string.AccessibilityId_invite_friend_button) { delegate.onInviteFriend() } Column( modifier = Modifier .padding(horizontal = 32.dp) diff --git a/app/src/main/java/org/thoughtcrime/securesms/dms/NewMessageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/dms/NewMessageFragment.kt index 2907871e20..1454e3dbd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dms/NewMessageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dms/NewMessageFragment.kt @@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2 import org.thoughtcrime.securesms.dependencies.DatabaseComponent import org.thoughtcrime.securesms.showOpenUrlDialog import org.thoughtcrime.securesms.ui.AppTheme +import org.thoughtcrime.securesms.ui.GetString import org.thoughtcrime.securesms.ui.LoadingArcOr import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider @@ -150,13 +151,19 @@ fun EnterAccountId( ) { SessionOutlinedTextField( text = state.newMessageIdOrOns, - modifier = Modifier.padding(horizontal = 64.dp), + modifier = Modifier.padding(horizontal = 64.dp) + .contentDescription("Session id input box"), placeholder = stringResource(R.string.accountIdOrOnsEnter), onChange = callbacks::onChange, onContinue = callbacks::onContinue, error = state.error?.string(), ) - if (state.error == null) BorderlessButtonSecondary(text = stringResource(R.string.messageNewDescription)) { onHelp() } + if (state.error == null) { + BorderlessButtonSecondary( + text = stringResource(R.string.messageNewDescription), + contentDescription = GetString(R.string.AccessibilityId_help_desk_link), + ) { onHelp() } + } Spacer(modifier = Modifier.weight(1f)) @@ -165,11 +172,11 @@ fun EnterAccountId( .align(Alignment.CenterHorizontally) .padding(horizontal = 64.dp, vertical = 20.dp) .width(200.dp) - .contentDescription(R.string.continue_2), + .contentDescription(R.string.next), onClick = { callbacks.onContinue() } ) { LoadingArcOr(state.loading) { - Text(stringResource(R.string.continue_2)) + Text(stringResource(R.string.next)) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LinkDeviceViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LinkDeviceViewModel.kt index b855e9109b..13fe4ba7b0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LinkDeviceViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LinkDeviceViewModel.kt @@ -34,7 +34,6 @@ class LinkDeviceEvent(val mnemonic: ByteArray) class LinkDeviceViewModel @Inject constructor( private val application: Application ): AndroidViewModel(application) { - private val QR_ERROR_TIME = 3.seconds private val state = MutableStateFlow(LinkDeviceState()) val stateFlow = state.asStateFlow() @@ -43,10 +42,7 @@ class LinkDeviceViewModel @Inject constructor( private val qrErrors = Channel() - @OptIn(FlowPreview::class, ExperimentalCoroutinesApi::class) val qrErrorsFlow = qrErrors.receiveAsFlow() -// .debounce(QR_ERROR_TIME) - .takeWhile { event.isEmpty } .mapNotNull { application.getString(R.string.qrNotRecoveryPassword) } private val codec by lazy { MnemonicCodec { MnemonicUtilities.loadFileContents(getApplication(), it) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt index 691f27c98e..3c82652985 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt @@ -141,7 +141,6 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) { Text( seed, modifier = Modifier - .contentDescription(R.string.AccessibilityId_hide_recovery_password_button) .padding(vertical = 24.dp) .border( width = 1.dp, diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt index 7b16130a9f..c186e2ba95 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt @@ -121,10 +121,12 @@ fun FilledButton( @Composable fun BorderlessButtonSecondary( text: String, + contentDescription: GetString = GetString(text), onClick: () -> Unit ) { BorderlessButton( text, + contentDescription = contentDescription, contentColor = MaterialTheme.colors.onSurface.copy(ContentAlpha.medium), onClick = onClick ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt index 3dfe7fa028..ca42ee2b3b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt @@ -45,7 +45,7 @@ fun QrImage( val scope = rememberCoroutineScope() LaunchedEffect(string) { scope.launch(Dispatchers.IO) { - val c = 150 + val c = 100 val w = c * 2 bitmap = QRCodeUtilities.encode(string, w).also { val hw = 30 diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 364a54484c..a481526655 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -43,7 +43,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" - android:contentDescription="@string/AccessibilityId_username" + android:contentDescription="@string/AccessibilityId_account_id" android:paddingTop="12dp" android:paddingBottom="12dp" android:visibility="invisible" diff --git a/app/src/main/res/menu/settings_general.xml b/app/src/main/res/menu/settings_general.xml index a965be5fb1..e65c599524 100644 --- a/app/src/main/res/menu/settings_general.xml +++ b/app/src/main/res/menu/settings_general.xml @@ -6,6 +6,7 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9d757a2404..0a4dc9a11c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1133,4 +1133,6 @@ This is your Account ID. Other users can scan it to start a conversation with you. Hey, I\'ve been using Session to chat with complete privacy and security. Come join me! My Account ID is \n\n%1$s\n\nDownload it at https://getsession.org/ This QR code does not contain an Account ID. + Invite friend button + Help desk link