Add strings and make qr scan call callback

pr/1451-buttons
Andrew 1 month ago
parent 853c165949
commit a054fae758

@ -122,12 +122,12 @@ private fun NewMessage(
val pagerState = rememberPagerState { TITLES.size }
Column(modifier = Modifier.background(MaterialTheme.colors.primarySurface)) {
AppBar(stringResource(R.string.messageNew), onClose = { onClose() }, onBack = { onBack() })
AppBar(stringResource(R.string.messageNew), onClose = onClose, onBack = onBack)
SessionTabRow(pagerState, TITLES)
HorizontalPager(pagerState) {
when (TITLES[it]) {
R.string.enter_account_id -> EnterAccountId(state, callbacks, onHelp)
R.string.qrScan -> MaybeScanQrCode()
R.string.qrScan -> MaybeScanQrCode(onScan = callbacks::onScan)
}
}
}

@ -10,6 +10,7 @@ import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
@ -78,7 +79,7 @@ class LinkDeviceActivity : BaseActionBarActivity() {
setContent {
val state by viewModel.stateFlow.collectAsState()
AppTheme {
LoadAccountScreen(state, viewModel::onChange, viewModel::onContinue)
LoadAccountScreen(state, viewModel::onChange, viewModel::onContinue, viewModel::scan)
}
}
}.let(::setContentView)
@ -86,7 +87,12 @@ class LinkDeviceActivity : BaseActionBarActivity() {
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun LoadAccountScreen(state: LinkDeviceState, onChange: (String) -> Unit = {}, onContinue: () -> Unit = {}) {
fun LoadAccountScreen(
state: LinkDeviceState,
onChange: (String) -> Unit = {},
onContinue: () -> Unit = {},
onScan: (String) -> Unit = {}
) {
val pagerState = rememberPagerState { TITLES.size }
Column {
@ -99,7 +105,7 @@ class LinkDeviceActivity : BaseActionBarActivity() {
when (title) {
R.string.sessionRecoveryPassword -> RecoveryPassword(state, onChange, onContinue)
R.string.qrScan -> MaybeScanQrCode(viewModel.qrErrorsFlow)
R.string.qrScan -> MaybeScanQrCode(viewModel.qrErrorsFlow, onScan = onScan)
}
}
}
@ -128,14 +134,15 @@ fun RecoveryPassword(state: LinkDeviceState, onChange: (String) -> Unit = {}, on
Text(stringResource(R.string.activity_link_enter_your_recovery_password_to_load_your_account_if_you_haven_t_saved_it_you_can_find_it_in_your_app_settings))
Spacer(Modifier.size(24.dp))
SessionOutlinedTextField(
text = state.recoveryPhrase,
modifier = Modifier
.contentDescription(R.string.AccessibilityId_recovery_phrase_input)
.padding(horizontal = 64.dp),
placeholder = stringResource(R.string.recoveryPasswordEnter),
onChange = onChange,
onContinue = onContinue,
error = state.error
text = state.recoveryPhrase,
modifier = Modifier
.fillMaxWidth()
.contentDescription(R.string.AccessibilityId_recovery_phrase_input)
.padding(horizontal = 64.dp),
placeholder = stringResource(R.string.recoveryPasswordEnter),
onChange = onChange,
onContinue = onContinue,
error = state.error
)
Spacer(Modifier.size(12.dp))
state.error?.let {

@ -17,8 +17,6 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@ -36,12 +34,10 @@ import org.thoughtcrime.securesms.BaseActionBarActivity
import org.thoughtcrime.securesms.showSessionDialog
import org.thoughtcrime.securesms.ui.AppTheme
import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin
import org.thoughtcrime.securesms.ui.LocalButtonColor
import org.thoughtcrime.securesms.ui.PreviewTheme
import org.thoughtcrime.securesms.ui.SessionShieldIcon
import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
import org.thoughtcrime.securesms.ui.classicDarkColors
import org.thoughtcrime.securesms.ui.colorDestructive
import org.thoughtcrime.securesms.ui.components.DestructiveButtons
import org.thoughtcrime.securesms.ui.components.OutlineButton
import org.thoughtcrime.securesms.ui.components.QrImage

@ -32,18 +32,18 @@ import org.thoughtcrime.securesms.util.start
private val TITLES = listOf(R.string.view, R.string.scan)
class QRCodeActivity : PassphraseRequiredActionBarActivity(), ScanQRCodeWrapperFragmentDelegate {
class QRCodeActivity : PassphraseRequiredActionBarActivity() {
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
super.onCreate(savedInstanceState, isReady)
supportActionBar!!.title = resources.getString(R.string.activity_qr_code_title)
setComposeContent {
Tabs(TextSecurePreferences.getLocalNumber(this)!!)
Tabs(TextSecurePreferences.getLocalNumber(this)!!, onScan = ::handleQRCodeScanned)
}
}
override fun handleQRCodeScanned(string: String) {
fun handleQRCodeScanned(string: String) {
if (!PublicKeyValidation.isValid(string)) {
return Toast.makeText(this, R.string.invalid_session_id, Toast.LENGTH_SHORT).show()
}
@ -60,7 +60,7 @@ class QRCodeActivity : PassphraseRequiredActionBarActivity(), ScanQRCodeWrapperF
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun Tabs(sessionId: String) {
fun Tabs(sessionId: String, onScan: (String) -> Unit) {
val pagerState = rememberPagerState { TITLES.size }
Column {
@ -71,7 +71,7 @@ fun Tabs(sessionId: String) {
) { page ->
when (TITLES[page]) {
R.string.view -> QrPage(sessionId)
R.string.scan -> MaybeScanQrCode()
R.string.scan -> MaybeScanQrCode(onScan = onScan)
}
}
}

@ -64,7 +64,6 @@ import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.recipients.Recipient
import org.session.libsession.utilities.truncateIdForDisplay
import org.session.libsignal.utilities.Log
import org.session.libsignal.utilities.getProperty
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
import org.thoughtcrime.securesms.avatar.AvatarSelection
import org.thoughtcrime.securesms.components.ProfilePictureView

@ -67,7 +67,7 @@ fun MaybeScanQrCode(
data = Uri.fromParts("package", packageName, null)
}.let(::startActivity)
} },
onScan: (String) -> Unit = {}
onScan: (String) -> Unit
) {
Box(modifier = Modifier.fillMaxSize()) {
LocalSoftwareKeyboardController.current?.hide()

@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.ui.components
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardActions
@ -26,6 +27,7 @@ fun SessionOutlinedTextField(
Column(modifier = modifier) {
OutlinedTextField(
value = text,
modifier = Modifier.fillMaxWidth(),
onValueChange = { onChange(it) },
placeholder = { Text(placeholder) },
colors = outlinedTextFieldColors(error != null),

@ -1122,4 +1122,7 @@
<string name="accountIdOrOnsEnter">Enter account ID or ONS</string>
<string name="messageNewDescription">Start a new conversation by entering your friend\'s Account ID, ONS or scanning their QR code.</string>
<string name="messageNew">New Message</string>
<string name="unknown">Unknown</string>
<string name="contacts">Contacts</string>
<string name="conversations">Conversations</string>
</resources>

Loading…
Cancel
Save