mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Add edit proxy ability to quick restore flow.
This commit is contained in:
committed by
Greyson Parrelli
parent
b1b99855b2
commit
901a81fb74
@@ -291,6 +291,7 @@ private fun BackupAvailableContent(
|
||||
}
|
||||
|
||||
RegistrationScreen(
|
||||
menu = null,
|
||||
topContent = {
|
||||
if (state.backupTier != null) {
|
||||
RegistrationScreenTitleSubtitle(
|
||||
|
||||
@@ -28,19 +28,23 @@ import androidx.compose.foundation.layout.widthIn
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.app.activityViewModels
|
||||
@@ -59,6 +63,7 @@ import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.compose.Buttons
|
||||
import org.signal.core.ui.compose.Dialogs
|
||||
import org.signal.core.ui.compose.DropdownMenus
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.SignalPreview
|
||||
import org.signal.core.ui.compose.horizontalGutters
|
||||
@@ -71,6 +76,7 @@ import org.thoughtcrime.securesms.compose.ComposeFragment
|
||||
import org.thoughtcrime.securesms.registration.data.network.RegisterAccountResult
|
||||
import org.thoughtcrime.securesms.registrationv3.ui.RegistrationViewModel
|
||||
import org.thoughtcrime.securesms.registrationv3.ui.shared.RegistrationScreen
|
||||
import org.thoughtcrime.securesms.registrationv3.ui.shared.RegistrationScreenTitleSubtitle
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
|
||||
/**
|
||||
@@ -122,6 +128,7 @@ class RestoreViaQrFragment : ComposeFragment() {
|
||||
is RegisterAccountResult.AttemptsExhausted -> {
|
||||
findNavController().safeNavigate(RestoreViaQrFragmentDirections.goToAccountLocked())
|
||||
}
|
||||
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
@@ -150,7 +157,8 @@ class RestoreViaQrFragment : ComposeFragment() {
|
||||
state = state,
|
||||
onRetryQrCode = viewModel::restart,
|
||||
onRegistrationErrorDismiss = viewModel::clearRegistrationError,
|
||||
onCancel = { findNavController().popBackStack() }
|
||||
onCancel = { findNavController().popBackStack() },
|
||||
onUseProxy = { findNavController().safeNavigate(RestoreViaQrFragmentDirections.goToEditProxy()) }
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -161,11 +169,38 @@ private fun RestoreViaQrScreen(
|
||||
state: RestoreViaQrViewModel.RestoreViaQrState,
|
||||
onRetryQrCode: () -> Unit = {},
|
||||
onRegistrationErrorDismiss: () -> Unit = {},
|
||||
onCancel: () -> Unit = {}
|
||||
onCancel: () -> Unit = {},
|
||||
onUseProxy: () -> Unit = {}
|
||||
) {
|
||||
RegistrationScreen(
|
||||
title = stringResource(R.string.RestoreViaQr_title),
|
||||
subtitle = null,
|
||||
menu = {
|
||||
Box(modifier = Modifier.align(Alignment.End)) {
|
||||
val controller = remember { DropdownMenus.MenuController() }
|
||||
|
||||
IconButton(onClick = { controller.toggle() }) {
|
||||
Icon(
|
||||
imageVector = ImageVector.vectorResource(R.drawable.symbol_more_vertical_24),
|
||||
contentDescription = null
|
||||
)
|
||||
}
|
||||
|
||||
DropdownMenus.Menu(controller = controller) {
|
||||
DropdownMenus.Item(
|
||||
text = { Text(stringResource(R.string.preferences_use_proxy)) },
|
||||
onClick = {
|
||||
controller.hide()
|
||||
onUseProxy()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
topContent = {
|
||||
RegistrationScreenTitleSubtitle(
|
||||
title = stringResource(R.string.RestoreViaQr_title),
|
||||
subtitle = null
|
||||
)
|
||||
},
|
||||
bottomContent = {
|
||||
TextButton(
|
||||
onClick = onCancel,
|
||||
|
||||
@@ -67,6 +67,7 @@ fun RegistrationScreen(
|
||||
mainContent: @Composable ColumnScope.() -> Unit
|
||||
) {
|
||||
RegistrationScreen(
|
||||
menu = null,
|
||||
topContent = { RegistrationScreenTitleSubtitle(title, subtitle) },
|
||||
bottomContent = bottomContent,
|
||||
mainContent = mainContent
|
||||
@@ -101,6 +102,7 @@ fun RegistrationScreenTitleSubtitle(
|
||||
*/
|
||||
@Composable
|
||||
fun RegistrationScreen(
|
||||
menu: @Composable (ColumnScope.() -> Unit)?,
|
||||
topContent: @Composable ColumnScope.() -> Unit,
|
||||
bottomContent: @Composable BoxScope.() -> Unit,
|
||||
mainContent: @Composable ColumnScope.() -> Unit
|
||||
@@ -121,9 +123,15 @@ fun RegistrationScreen(
|
||||
modifier = Modifier
|
||||
.verticalScroll(scrollState)
|
||||
.weight(weight = 1f, fill = false)
|
||||
.padding(top = 40.dp, bottom = 16.dp)
|
||||
.padding(bottom = 16.dp)
|
||||
.horizontalGutters()
|
||||
) {
|
||||
if (menu != null) {
|
||||
menu()
|
||||
} else {
|
||||
Spacer(Modifier.height(40.dp))
|
||||
}
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
@@ -186,6 +194,7 @@ private fun RegistrationScreenPreview() {
|
||||
private fun RegistrationScreenNoTitlePreview() {
|
||||
Previews.Preview {
|
||||
RegistrationScreen(
|
||||
menu = null,
|
||||
topContent = { Text("Top content") },
|
||||
bottomContent = {
|
||||
TextButton(onClick = {}) {
|
||||
|
||||
Reference in New Issue
Block a user