mirror of
https://github.com/oxen-io/session-android.git
synced 2025-03-13 21:30:56 +00:00
Add strings and make qr scan call callback
This commit is contained in:
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…
x
Reference in New Issue
Block a user