mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-03-28 18:51:45 +01:00
refactor QrCodeButton methods to avoid duplications
This commit is contained in:
parent
b273e6dd4f
commit
4f4da12aa7
@ -100,6 +100,7 @@ import com.vitorpamplona.amethyst.ui.stringRes
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ButtonPadding
|
import com.vitorpamplona.amethyst.ui.theme.ButtonPadding
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow
|
import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonRow
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.grayText
|
||||||
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
import com.vitorpamplona.amethyst.ui.theme.placeholderText
|
||||||
import com.vitorpamplona.quartz.crypto.CryptoUtils
|
import com.vitorpamplona.quartz.crypto.CryptoUtils
|
||||||
import com.vitorpamplona.quartz.encoders.toHexKey
|
import com.vitorpamplona.quartz.encoders.toHexKey
|
||||||
@ -470,51 +471,10 @@ private fun encryptCopyNSec(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun QrCodeButton(accountViewModel: AccountViewModel) {
|
private fun QrCodeButtonBase(
|
||||||
val context = LocalContext.current
|
|
||||||
|
|
||||||
// store the dialog open or close state
|
|
||||||
var dialogOpen by remember { mutableStateOf(false) }
|
|
||||||
|
|
||||||
val keyguardLauncher =
|
|
||||||
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
|
|
||||||
if (result.resultCode == Activity.RESULT_OK) {
|
|
||||||
dialogOpen = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
IconButton(
|
|
||||||
onClick = {
|
|
||||||
authenticate(
|
|
||||||
title = stringRes(context, R.string.copy_my_secret_key),
|
|
||||||
context = context,
|
|
||||||
keyguardLauncher = keyguardLauncher,
|
|
||||||
onApproved = { dialogOpen = true },
|
|
||||||
onError = { title, message -> accountViewModel.toast(title, message) },
|
|
||||||
)
|
|
||||||
},
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_qrcode),
|
|
||||||
contentDescription = stringRes(id = R.string.show_npub_as_a_qr_code),
|
|
||||||
modifier = Modifier.size(24.dp),
|
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dialogOpen) {
|
|
||||||
ShowKeyQRDialog(
|
|
||||||
accountViewModel.account.settings.keyPair.privKey
|
|
||||||
?.toNsec(),
|
|
||||||
onClose = { dialogOpen = false },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
private fun QrCodeButtonEncrypted(
|
|
||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
password: MutableState<TextFieldValue>,
|
isEnabled: Boolean = true,
|
||||||
|
onDialogShow: () -> String?,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
|
||||||
@ -529,7 +489,7 @@ private fun QrCodeButtonEncrypted(
|
|||||||
}
|
}
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
enabled = password.value.text.isNotBlank(),
|
enabled = isEnabled,
|
||||||
onClick = {
|
onClick = {
|
||||||
authenticate(
|
authenticate(
|
||||||
title = stringRes(context, R.string.copy_my_secret_key),
|
title = stringRes(context, R.string.copy_my_secret_key),
|
||||||
@ -544,21 +504,45 @@ private fun QrCodeButtonEncrypted(
|
|||||||
painter = painterResource(R.drawable.ic_qrcode),
|
painter = painterResource(R.drawable.ic_qrcode),
|
||||||
contentDescription = stringRes(id = R.string.show_npub_as_a_qr_code),
|
contentDescription = stringRes(id = R.string.show_npub_as_a_qr_code),
|
||||||
modifier = Modifier.size(24.dp),
|
modifier = Modifier.size(24.dp),
|
||||||
|
tint = if (isEnabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.grayText,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialogOpen) {
|
if (dialogOpen) {
|
||||||
val key =
|
|
||||||
accountViewModel.account.settings.keyPair.privKey
|
|
||||||
?.toHexKey()
|
|
||||||
?.let { CryptoUtils.encryptNIP49(it, password.value.text) }
|
|
||||||
ShowKeyQRDialog(
|
ShowKeyQRDialog(
|
||||||
key,
|
onDialogShow(),
|
||||||
onClose = { dialogOpen = false },
|
onClose = { dialogOpen = false },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun QrCodeButton(accountViewModel: AccountViewModel) {
|
||||||
|
QrCodeButtonBase(
|
||||||
|
accountViewModel = accountViewModel,
|
||||||
|
onDialogShow = {
|
||||||
|
accountViewModel.account.settings.keyPair.privKey
|
||||||
|
?.toNsec()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun QrCodeButtonEncrypted(
|
||||||
|
accountViewModel: AccountViewModel,
|
||||||
|
password: MutableState<TextFieldValue>,
|
||||||
|
) {
|
||||||
|
QrCodeButtonBase(
|
||||||
|
accountViewModel = accountViewModel,
|
||||||
|
isEnabled = password.value.text.isNotBlank(),
|
||||||
|
onDialogShow = {
|
||||||
|
accountViewModel.account.settings.keyPair.privKey
|
||||||
|
?.toHexKey()
|
||||||
|
?.let { CryptoUtils.encryptNIP49(it, password.value.text) }
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ShowKeyQRDialog(
|
private fun ShowKeyQRDialog(
|
||||||
qrCode: String?,
|
qrCode: String?,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user