mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-16 13:01:26 +00:00
Refactor temporary buttons
This commit is contained in:
parent
c489765a50
commit
b571348a66
@ -37,6 +37,7 @@ import org.thoughtcrime.securesms.ui.classicDarkColors
|
|||||||
import org.thoughtcrime.securesms.ui.components.AppBar
|
import org.thoughtcrime.securesms.ui.components.AppBar
|
||||||
import org.thoughtcrime.securesms.ui.components.OnPrimaryButtons
|
import org.thoughtcrime.securesms.ui.components.OnPrimaryButtons
|
||||||
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
||||||
|
import org.thoughtcrime.securesms.ui.components.OutlineTemporaryStateButton
|
||||||
import org.thoughtcrime.securesms.ui.components.SmallButtons
|
import org.thoughtcrime.securesms.ui.components.SmallButtons
|
||||||
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
||||||
import org.thoughtcrime.securesms.ui.contentDescription
|
import org.thoughtcrime.securesms.ui.contentDescription
|
||||||
@ -96,23 +97,21 @@ class InviteFriendFragment : Fragment() {
|
|||||||
SmallButtons {
|
SmallButtons {
|
||||||
Row(horizontalArrangement = spacedBy(20.dp)) {
|
Row(horizontalArrangement = spacedBy(20.dp)) {
|
||||||
OutlineButton(
|
OutlineButton(
|
||||||
modifier = Modifier.weight(1f)
|
modifier = Modifier
|
||||||
|
.weight(1f)
|
||||||
.contentDescription("Share button"),
|
.contentDescription("Share button"),
|
||||||
onClick = { requireContext().sendInvitation() }
|
onClick = { requireContext().sendInvitation() }
|
||||||
) {
|
) {
|
||||||
Text(stringResource(R.string.share))
|
Text(stringResource(R.string.share))
|
||||||
}
|
}
|
||||||
|
|
||||||
TemporaryStateButton { source, isTemporary ->
|
OutlineTemporaryStateButton(
|
||||||
OutlineButton(
|
Modifier
|
||||||
modifier = Modifier.weight(1f)
|
.weight(1f)
|
||||||
.contentDescription("Copy button"),
|
.contentDescription("Copy button"),
|
||||||
interactionSource = source,
|
onClick = { requireContext().copyPublicKey() }
|
||||||
onClick = { requireContext().copyPublicKey() },
|
) { isTemporary ->
|
||||||
) {
|
Text(stringResource(if (isTemporary) R.string.copied else R.string.copy))
|
||||||
AnimatedVisibility(isTemporary) { Text(stringResource(R.string.copied)) }
|
|
||||||
AnimatedVisibility(!isTemporary) { Text(stringResource(R.string.copy)) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
|
|||||||
import org.thoughtcrime.securesms.ui.classicDarkColors
|
import org.thoughtcrime.securesms.ui.classicDarkColors
|
||||||
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.OutlineTemporaryStateButton
|
||||||
import org.thoughtcrime.securesms.ui.components.QrImage
|
import org.thoughtcrime.securesms.ui.components.QrImage
|
||||||
import org.thoughtcrime.securesms.ui.components.SmallButtons
|
import org.thoughtcrime.securesms.ui.components.SmallButtons
|
||||||
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
||||||
@ -172,16 +173,13 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) {
|
|||||||
|
|
||||||
AnimatedVisibility(!showQr) {
|
AnimatedVisibility(!showQr) {
|
||||||
Row(horizontalArrangement = Arrangement.spacedBy(32.dp)) {
|
Row(horizontalArrangement = Arrangement.spacedBy(32.dp)) {
|
||||||
TemporaryStateButton { source, isTemporary ->
|
OutlineTemporaryStateButton(
|
||||||
OutlineButton(
|
Modifier
|
||||||
modifier = Modifier.weight(1f)
|
.weight(1f)
|
||||||
.contentDescription(R.string.AccessibilityId_copy_button),
|
.contentDescription(R.string.AccessibilityId_copy_button),
|
||||||
interactionSource = source,
|
onClick = copySeed
|
||||||
onClick = copySeed,
|
) { isTemporary ->
|
||||||
) {
|
Text(stringResource( if (isTemporary) R.string.copied else R.string.copy))
|
||||||
AnimatedVisibility(isTemporary) { Text(stringResource(R.string.copied)) }
|
|
||||||
AnimatedVisibility(!isTemporary) { Text(stringResource(R.string.copy)) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
OutlineButton(textId = R.string.qrView, modifier = Modifier.weight(1f), onClick = { showQr = !showQr })
|
OutlineButton(textId = R.string.qrView, modifier = Modifier.weight(1f), onClick = { showQr = !showQr })
|
||||||
}
|
}
|
||||||
|
@ -81,6 +81,7 @@ import org.thoughtcrime.securesms.ui.Divider
|
|||||||
import org.thoughtcrime.securesms.ui.ItemButton
|
import org.thoughtcrime.securesms.ui.ItemButton
|
||||||
import org.thoughtcrime.securesms.ui.ItemButtonWithDrawable
|
import org.thoughtcrime.securesms.ui.ItemButtonWithDrawable
|
||||||
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
||||||
|
import org.thoughtcrime.securesms.ui.components.OutlineTemporaryStateButton
|
||||||
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
||||||
import org.thoughtcrime.securesms.ui.destructiveButtonColors
|
import org.thoughtcrime.securesms.ui.destructiveButtonColors
|
||||||
import org.thoughtcrime.securesms.util.BitmapDecodingException
|
import org.thoughtcrime.securesms.util.BitmapDecodingException
|
||||||
@ -388,7 +389,9 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
fun Buttons() {
|
fun Buttons() {
|
||||||
Column {
|
Column {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.padding(horizontal = 24.dp).padding(top = 8.dp),
|
modifier = Modifier
|
||||||
|
.padding(horizontal = 24.dp)
|
||||||
|
.padding(top = 8.dp),
|
||||||
horizontalArrangement = Arrangement.spacedBy(16.dp),
|
horizontalArrangement = Arrangement.spacedBy(16.dp),
|
||||||
) {
|
) {
|
||||||
OutlineButton(
|
OutlineButton(
|
||||||
@ -398,15 +401,11 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
Text(stringResource(R.string.share))
|
Text(stringResource(R.string.share))
|
||||||
}
|
}
|
||||||
|
|
||||||
TemporaryStateButton { source, temporary ->
|
OutlineTemporaryStateButton(
|
||||||
OutlineButton(
|
|
||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f),
|
||||||
interactionSource = source,
|
|
||||||
onClick = { copyPublicKey() },
|
onClick = { copyPublicKey() },
|
||||||
) {
|
) { isTemporary ->
|
||||||
AnimatedVisibility(temporary) { Text(stringResource(R.string.copied)) }
|
Text(stringResource(if (isTemporary) R.string.copied else R.string.copy))
|
||||||
AnimatedVisibility(!temporary) { Text(stringResource(R.string.copy)) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
package org.thoughtcrime.securesms.ui.components
|
package org.thoughtcrime.securesms.ui.components
|
||||||
|
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
|
import androidx.compose.animation.EnterTransition
|
||||||
|
import androidx.compose.animation.fadeIn
|
||||||
|
import androidx.compose.animation.fadeOut
|
||||||
|
import androidx.compose.animation.slideIn
|
||||||
|
import androidx.compose.animation.slideInHorizontally
|
||||||
|
import androidx.compose.animation.slideOutHorizontally
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
import androidx.compose.foundation.interaction.PressInteraction
|
import androidx.compose.foundation.interaction.PressInteraction
|
||||||
@ -32,6 +39,8 @@ import androidx.compose.ui.unit.dp
|
|||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.filter
|
import kotlinx.coroutines.flow.filter
|
||||||
|
import network.loki.messenger.R
|
||||||
|
import org.thoughtcrime.securesms.preferences.copyPublicKey
|
||||||
import org.thoughtcrime.securesms.ui.GetString
|
import org.thoughtcrime.securesms.ui.GetString
|
||||||
import org.thoughtcrime.securesms.ui.LaunchedEffectAsync
|
import org.thoughtcrime.securesms.ui.LaunchedEffectAsync
|
||||||
import org.thoughtcrime.securesms.ui.LocalButtonColor
|
import org.thoughtcrime.securesms.ui.LocalButtonColor
|
||||||
@ -80,6 +89,24 @@ fun OutlineButton(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun OutlineTemporaryStateButton(
|
||||||
|
modifier: Modifier = Modifier,
|
||||||
|
onClick: () -> Unit = {},
|
||||||
|
content: @Composable (Boolean) -> Unit,
|
||||||
|
) {
|
||||||
|
TemporaryStateButton { source, isTemporary ->
|
||||||
|
OutlineButton(
|
||||||
|
modifier = modifier,
|
||||||
|
interactionSource = source,
|
||||||
|
onClick = onClick,
|
||||||
|
) {
|
||||||
|
AnimatedVisibility(isTemporary) { content(true) }
|
||||||
|
AnimatedVisibility(!isTemporary) { content(false) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TemporaryStateButton(
|
fun TemporaryStateButton(
|
||||||
content: @Composable (MutableInteractionSource, Boolean) -> Unit,
|
content: @Composable (MutableInteractionSource, Boolean) -> Unit,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user