mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-17 11:58:25 +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.OnPrimaryButtons
|
||||
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.TemporaryStateButton
|
||||
import org.thoughtcrime.securesms.ui.contentDescription
|
||||
@ -96,23 +97,21 @@ class InviteFriendFragment : Fragment() {
|
||||
SmallButtons {
|
||||
Row(horizontalArrangement = spacedBy(20.dp)) {
|
||||
OutlineButton(
|
||||
modifier = Modifier.weight(1f)
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.contentDescription("Share button"),
|
||||
onClick = { requireContext().sendInvitation() }
|
||||
) {
|
||||
Text(stringResource(R.string.share))
|
||||
}
|
||||
|
||||
TemporaryStateButton { source, isTemporary ->
|
||||
OutlineButton(
|
||||
modifier = Modifier.weight(1f)
|
||||
.contentDescription("Copy button"),
|
||||
interactionSource = source,
|
||||
onClick = { requireContext().copyPublicKey() },
|
||||
) {
|
||||
AnimatedVisibility(isTemporary) { Text(stringResource(R.string.copied)) }
|
||||
AnimatedVisibility(!isTemporary) { Text(stringResource(R.string.copy)) }
|
||||
}
|
||||
OutlineTemporaryStateButton(
|
||||
Modifier
|
||||
.weight(1f)
|
||||
.contentDescription("Copy button"),
|
||||
onClick = { requireContext().copyPublicKey() }
|
||||
) { isTemporary ->
|
||||
Text(stringResource(if (isTemporary) R.string.copied else R.string.copy))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
|
||||
import org.thoughtcrime.securesms.ui.classicDarkColors
|
||||
import org.thoughtcrime.securesms.ui.components.DestructiveButtons
|
||||
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.SmallButtons
|
||||
import org.thoughtcrime.securesms.ui.components.TemporaryStateButton
|
||||
@ -172,16 +173,13 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) {
|
||||
|
||||
AnimatedVisibility(!showQr) {
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(32.dp)) {
|
||||
TemporaryStateButton { source, isTemporary ->
|
||||
OutlineButton(
|
||||
modifier = Modifier.weight(1f)
|
||||
.contentDescription(R.string.AccessibilityId_copy_button),
|
||||
interactionSource = source,
|
||||
onClick = copySeed,
|
||||
) {
|
||||
AnimatedVisibility(isTemporary) { Text(stringResource(R.string.copied)) }
|
||||
AnimatedVisibility(!isTemporary) { Text(stringResource(R.string.copy)) }
|
||||
}
|
||||
OutlineTemporaryStateButton(
|
||||
Modifier
|
||||
.weight(1f)
|
||||
.contentDescription(R.string.AccessibilityId_copy_button),
|
||||
onClick = copySeed
|
||||
) { isTemporary ->
|
||||
Text(stringResource( if (isTemporary) R.string.copied else R.string.copy))
|
||||
}
|
||||
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.ItemButtonWithDrawable
|
||||
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.destructiveButtonColors
|
||||
import org.thoughtcrime.securesms.util.BitmapDecodingException
|
||||
@ -388,7 +389,9 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
||||
fun Buttons() {
|
||||
Column {
|
||||
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),
|
||||
) {
|
||||
OutlineButton(
|
||||
@ -398,15 +401,11 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
||||
Text(stringResource(R.string.share))
|
||||
}
|
||||
|
||||
TemporaryStateButton { source, temporary ->
|
||||
OutlineButton(
|
||||
modifier = Modifier.weight(1f),
|
||||
interactionSource = source,
|
||||
onClick = { copyPublicKey() },
|
||||
) {
|
||||
AnimatedVisibility(temporary) { Text(stringResource(R.string.copied)) }
|
||||
AnimatedVisibility(!temporary) { Text(stringResource(R.string.copy)) }
|
||||
}
|
||||
OutlineTemporaryStateButton(
|
||||
modifier = Modifier.weight(1f),
|
||||
onClick = { copyPublicKey() },
|
||||
) { isTemporary ->
|
||||
Text(stringResource(if (isTemporary) R.string.copied else R.string.copy))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,13 @@
|
||||
package org.thoughtcrime.securesms.ui.components
|
||||
|
||||
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.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.interaction.PressInteraction
|
||||
@ -32,6 +39,8 @@ import androidx.compose.ui.unit.dp
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
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.LaunchedEffectAsync
|
||||
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
|
||||
fun TemporaryStateButton(
|
||||
content: @Composable (MutableInteractionSource, Boolean) -> Unit,
|
||||
|
Loading…
x
Reference in New Issue
Block a user