mirror of
https://github.com/oxen-io/session-android.git
synced 2025-05-10 10:56:50 +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 }
|
val pagerState = rememberPagerState { TITLES.size }
|
||||||
|
|
||||||
Column(modifier = Modifier.background(MaterialTheme.colors.primarySurface)) {
|
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)
|
SessionTabRow(pagerState, TITLES)
|
||||||
HorizontalPager(pagerState) {
|
HorizontalPager(pagerState) {
|
||||||
when (TITLES[it]) {
|
when (TITLES[it]) {
|
||||||
R.string.enter_account_id -> EnterAccountId(state, callbacks, onHelp)
|
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.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
@ -78,7 +79,7 @@ class LinkDeviceActivity : BaseActionBarActivity() {
|
|||||||
setContent {
|
setContent {
|
||||||
val state by viewModel.stateFlow.collectAsState()
|
val state by viewModel.stateFlow.collectAsState()
|
||||||
AppTheme {
|
AppTheme {
|
||||||
LoadAccountScreen(state, viewModel::onChange, viewModel::onContinue)
|
LoadAccountScreen(state, viewModel::onChange, viewModel::onContinue, viewModel::scan)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.let(::setContentView)
|
}.let(::setContentView)
|
||||||
@ -86,7 +87,12 @@ class LinkDeviceActivity : BaseActionBarActivity() {
|
|||||||
|
|
||||||
@OptIn(ExperimentalFoundationApi::class)
|
@OptIn(ExperimentalFoundationApi::class)
|
||||||
@Composable
|
@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 }
|
val pagerState = rememberPagerState { TITLES.size }
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
@ -99,7 +105,7 @@ class LinkDeviceActivity : BaseActionBarActivity() {
|
|||||||
|
|
||||||
when (title) {
|
when (title) {
|
||||||
R.string.sessionRecoveryPassword -> RecoveryPassword(state, onChange, onContinue)
|
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))
|
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))
|
Spacer(Modifier.size(24.dp))
|
||||||
SessionOutlinedTextField(
|
SessionOutlinedTextField(
|
||||||
text = state.recoveryPhrase,
|
text = state.recoveryPhrase,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.contentDescription(R.string.AccessibilityId_recovery_phrase_input)
|
.fillMaxWidth()
|
||||||
.padding(horizontal = 64.dp),
|
.contentDescription(R.string.AccessibilityId_recovery_phrase_input)
|
||||||
placeholder = stringResource(R.string.recoveryPasswordEnter),
|
.padding(horizontal = 64.dp),
|
||||||
onChange = onChange,
|
placeholder = stringResource(R.string.recoveryPasswordEnter),
|
||||||
onContinue = onContinue,
|
onChange = onChange,
|
||||||
error = state.error
|
onContinue = onContinue,
|
||||||
|
error = state.error
|
||||||
)
|
)
|
||||||
Spacer(Modifier.size(12.dp))
|
Spacer(Modifier.size(12.dp))
|
||||||
state.error?.let {
|
state.error?.let {
|
||||||
|
@ -17,8 +17,6 @@ import androidx.compose.foundation.verticalScroll
|
|||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.CompositionLocalProvider
|
|
||||||
import androidx.compose.runtime.MutableState
|
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
@ -36,12 +34,10 @@ import org.thoughtcrime.securesms.BaseActionBarActivity
|
|||||||
import org.thoughtcrime.securesms.showSessionDialog
|
import org.thoughtcrime.securesms.showSessionDialog
|
||||||
import org.thoughtcrime.securesms.ui.AppTheme
|
import org.thoughtcrime.securesms.ui.AppTheme
|
||||||
import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin
|
import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin
|
||||||
import org.thoughtcrime.securesms.ui.LocalButtonColor
|
|
||||||
import org.thoughtcrime.securesms.ui.PreviewTheme
|
import org.thoughtcrime.securesms.ui.PreviewTheme
|
||||||
import org.thoughtcrime.securesms.ui.SessionShieldIcon
|
import org.thoughtcrime.securesms.ui.SessionShieldIcon
|
||||||
import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
|
import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
|
||||||
import org.thoughtcrime.securesms.ui.classicDarkColors
|
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.DestructiveButtons
|
||||||
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
||||||
import org.thoughtcrime.securesms.ui.components.QrImage
|
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)
|
private val TITLES = listOf(R.string.view, R.string.scan)
|
||||||
|
|
||||||
class QRCodeActivity : PassphraseRequiredActionBarActivity(), ScanQRCodeWrapperFragmentDelegate {
|
class QRCodeActivity : PassphraseRequiredActionBarActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
||||||
super.onCreate(savedInstanceState, isReady)
|
super.onCreate(savedInstanceState, isReady)
|
||||||
supportActionBar!!.title = resources.getString(R.string.activity_qr_code_title)
|
supportActionBar!!.title = resources.getString(R.string.activity_qr_code_title)
|
||||||
|
|
||||||
setComposeContent {
|
setComposeContent {
|
||||||
Tabs(TextSecurePreferences.getLocalNumber(this)!!)
|
Tabs(TextSecurePreferences.getLocalNumber(this)!!, onScan = ::handleQRCodeScanned)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleQRCodeScanned(string: String) {
|
fun handleQRCodeScanned(string: String) {
|
||||||
if (!PublicKeyValidation.isValid(string)) {
|
if (!PublicKeyValidation.isValid(string)) {
|
||||||
return Toast.makeText(this, R.string.invalid_session_id, Toast.LENGTH_SHORT).show()
|
return Toast.makeText(this, R.string.invalid_session_id, Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
@ -60,7 +60,7 @@ class QRCodeActivity : PassphraseRequiredActionBarActivity(), ScanQRCodeWrapperF
|
|||||||
|
|
||||||
@OptIn(ExperimentalFoundationApi::class)
|
@OptIn(ExperimentalFoundationApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun Tabs(sessionId: String) {
|
fun Tabs(sessionId: String, onScan: (String) -> Unit) {
|
||||||
val pagerState = rememberPagerState { TITLES.size }
|
val pagerState = rememberPagerState { TITLES.size }
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
@ -71,7 +71,7 @@ fun Tabs(sessionId: String) {
|
|||||||
) { page ->
|
) { page ->
|
||||||
when (TITLES[page]) {
|
when (TITLES[page]) {
|
||||||
R.string.view -> QrPage(sessionId)
|
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.recipients.Recipient
|
||||||
import org.session.libsession.utilities.truncateIdForDisplay
|
import org.session.libsession.utilities.truncateIdForDisplay
|
||||||
import org.session.libsignal.utilities.Log
|
import org.session.libsignal.utilities.Log
|
||||||
import org.session.libsignal.utilities.getProperty
|
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
import org.thoughtcrime.securesms.avatar.AvatarSelection
|
import org.thoughtcrime.securesms.avatar.AvatarSelection
|
||||||
import org.thoughtcrime.securesms.components.ProfilePictureView
|
import org.thoughtcrime.securesms.components.ProfilePictureView
|
||||||
|
@ -67,7 +67,7 @@ fun MaybeScanQrCode(
|
|||||||
data = Uri.fromParts("package", packageName, null)
|
data = Uri.fromParts("package", packageName, null)
|
||||||
}.let(::startActivity)
|
}.let(::startActivity)
|
||||||
} },
|
} },
|
||||||
onScan: (String) -> Unit = {}
|
onScan: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
Box(modifier = Modifier.fillMaxSize()) {
|
Box(modifier = Modifier.fillMaxSize()) {
|
||||||
LocalSoftwareKeyboardController.current?.hide()
|
LocalSoftwareKeyboardController.current?.hide()
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.thoughtcrime.securesms.ui.components
|
package org.thoughtcrime.securesms.ui.components
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
@ -26,6 +27,7 @@ fun SessionOutlinedTextField(
|
|||||||
Column(modifier = modifier) {
|
Column(modifier = modifier) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
value = text,
|
value = text,
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
onValueChange = { onChange(it) },
|
onValueChange = { onChange(it) },
|
||||||
placeholder = { Text(placeholder) },
|
placeholder = { Text(placeholder) },
|
||||||
colors = outlinedTextFieldColors(error != null),
|
colors = outlinedTextFieldColors(error != null),
|
||||||
|
@ -1122,4 +1122,7 @@
|
|||||||
<string name="accountIdOrOnsEnter">Enter account ID or ONS</string>
|
<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="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="messageNew">New Message</string>
|
||||||
|
<string name="unknown">Unknown</string>
|
||||||
|
<string name="contacts">Contacts</string>
|
||||||
|
<string name="conversations">Conversations</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user