refactor: Update button components and improve lint settings
This commit refactors button components across the application to use `PepTextButton` and `SquareButton` for consistency in UI design. Additionally, it updates the lint settings in `build.gradle.kts` to disable warnings for `NullSafeMutableLiveData`. - Replaced instances of `TextButton` and `Button` with `PepTextButton` and `SquareButton` in various composables and screens. - Adjusted lint settings to disable warnings for `NullSafeMutableLiveData`. - Improved color usage in `Reaction` composable for better visual consistency. - Updated drawable resources and string resources for better clarity and organization.
This commit is contained in:
parent
664c623aeb
commit
0471526d2f
|
|
@ -163,6 +163,8 @@ android {
|
|||
lint {
|
||||
abortOnError = false
|
||||
disable += "MissingTranslation"
|
||||
disable += "NullSafeMutableLiveData"
|
||||
// checkReleaseBuilds false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,11 @@ import androidx.compose.foundation.layout.size
|
|||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -57,7 +55,9 @@ import chat.peptide.api.schemas.RsResult
|
|||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.api.settings.SyncedSettings
|
||||
import chat.peptide.composables.generic.IconPlaceholder
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.RemoteImage
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.ui.theme.PeptideTheme
|
||||
import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi
|
||||
import com.bumptech.glide.integration.compose.GlideImage
|
||||
|
|
@ -245,7 +245,7 @@ fun InviteScreen(
|
|||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
Row {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
viewModel.joinInvite(inviteCode)
|
||||
},
|
||||
|
|
@ -257,7 +257,7 @@ fun InviteScreen(
|
|||
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = onFinish,
|
||||
modifier = Modifier
|
||||
.testTag("decline_invite")
|
||||
|
|
@ -307,7 +307,7 @@ fun InvalidInviteError(error: PeptideError? = null, onDismissRequest: () -> Unit
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismissRequest()
|
||||
}
|
||||
|
|
@ -347,7 +347,7 @@ fun NoInviteSpecifiedError(onDismissRequest: () -> Unit) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismissRequest()
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -44,7 +44,7 @@ fun Reaction(
|
|||
|
||||
val background by animateColorAsState(
|
||||
targetValue = if (hasOwn) {
|
||||
MaterialTheme.colorScheme.primary
|
||||
MaterialTheme.colorScheme.secondary
|
||||
} else {
|
||||
MaterialTheme.colorScheme.surfaceContainer
|
||||
},
|
||||
|
|
@ -52,7 +52,7 @@ fun Reaction(
|
|||
)
|
||||
val foreground by animateColorAsState(
|
||||
targetValue = if (hasOwn) {
|
||||
MaterialTheme.colorScheme.onPrimary
|
||||
MaterialTheme.colorScheme.onSecondaryContainer
|
||||
} else {
|
||||
MaterialTheme.colorScheme.onSurface
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
|
||||
@Composable
|
||||
fun TimeRift(modifier: Modifier = Modifier, onMessageLoad: () -> Unit) {
|
||||
|
|
@ -48,7 +49,7 @@ fun TimeRift(modifier: Modifier = Modifier, onMessageLoad: () -> Unit) {
|
|||
|
||||
Spacer(modifier = Modifier.height(5.dp))
|
||||
|
||||
TextButton(onClick = onMessageLoad) {
|
||||
PepTextButton(onClick = onMessageLoad) {
|
||||
Text(
|
||||
text = stringResource(id = R.string.time_rift_cta),
|
||||
color = LocalContentColor.current.copy(
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package chat.peptide.composables.generic
|
|||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.material3.TextFieldDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ fun HealthAlert(notice: HealthNotice, onDismiss: () -> Unit) {
|
|||
confirmButton = {
|
||||
notice.alert?.actions?.map { action ->
|
||||
when (action.type) {
|
||||
"external" -> TextButton(
|
||||
"external" -> PepTextButton(
|
||||
onClick = {
|
||||
val customTab = CustomTabsIntent.Builder()
|
||||
.setShowTitle(true)
|
||||
|
|
@ -42,7 +42,7 @@ fun HealthAlert(notice: HealthNotice, onDismiss: () -> Unit) {
|
|||
.build()
|
||||
)
|
||||
.build()
|
||||
customTab.launchUrl(context, action.href?.toUri() ?: return@TextButton)
|
||||
customTab.launchUrl(context, action.href?.toUri() ?: return@PepTextButton)
|
||||
}
|
||||
) {
|
||||
Text(
|
||||
|
|
@ -52,7 +52,7 @@ fun HealthAlert(notice: HealthNotice, onDismiss: () -> Unit) {
|
|||
}
|
||||
}
|
||||
}
|
||||
TextButton(onClick = onDismiss) {
|
||||
PepTextButton(onClick = onDismiss) {
|
||||
Text(stringResource(R.string.service_health_alert_actions_dismiss))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ fun InlineMediaPicker(
|
|||
if (canRemove) {
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onRemove()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ fun NonIdealStatePreview() {
|
|||
title = { Text("Channel") },
|
||||
description = { Text("You are not in any channels.") },
|
||||
actions = {
|
||||
Button(onClick = {}) {
|
||||
SquareButton(onClick = {}) {
|
||||
Text("Create a channel")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@ package chat.peptide.composables.generic
|
|||
|
||||
import androidx.compose.foundation.shape.CornerSize
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonColors
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.ElevatedButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
|
@ -13,11 +16,16 @@ fun SquareButton(
|
|||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
enabled: Boolean = true,
|
||||
colors: ButtonColors = ButtonDefaults.buttonColors().copy(
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
contentColor = MaterialTheme.colorScheme.onPrimary,
|
||||
),
|
||||
content: @Composable () -> Unit
|
||||
) {
|
||||
Button(
|
||||
onClick = onClick,
|
||||
modifier = modifier,
|
||||
colors = colors,
|
||||
enabled = enabled,
|
||||
shape = MaterialTheme.shapes.small.copy(
|
||||
topStart = CornerSize(8.dp),
|
||||
|
|
@ -30,6 +38,31 @@ fun SquareButton(
|
|||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun PepTextButton(
|
||||
onClick: () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
enabled: Boolean = true,
|
||||
content: @Composable () -> Unit
|
||||
) {
|
||||
TextButton(
|
||||
onClick = onClick,
|
||||
modifier = modifier,
|
||||
colors = ButtonDefaults.textButtonColors().copy(
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
),
|
||||
shape = MaterialTheme.shapes.small.copy(
|
||||
topStart = CornerSize(8.dp),
|
||||
topEnd = CornerSize(8.dp),
|
||||
bottomStart = CornerSize(8.dp),
|
||||
bottomEnd = CornerSize(8.dp)
|
||||
),
|
||||
enabled = enabled,
|
||||
) {
|
||||
content()
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun SquareElevatedButton(
|
||||
onClick: () -> Unit,
|
||||
|
|
@ -39,6 +72,10 @@ fun SquareElevatedButton(
|
|||
ElevatedButton(
|
||||
onClick = onClick,
|
||||
modifier = modifier,
|
||||
colors = ButtonDefaults.buttonColors().copy(
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
contentColor = MaterialTheme.colorScheme.onPrimary,
|
||||
),
|
||||
shape = MaterialTheme.shapes.small.copy(
|
||||
topStart = CornerSize(8.dp),
|
||||
topEnd = CornerSize(8.dp),
|
||||
|
|
@ -1,14 +1,20 @@
|
|||
package chat.peptide.composables.generic
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.ListItem
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Info
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.internals.extensions.TransparentListItemColours
|
||||
|
||||
|
|
@ -88,4 +94,75 @@ fun SheetButton(
|
|||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun SheetButtonPreview() {
|
||||
MaterialTheme {
|
||||
SheetButton(
|
||||
headlineContent = { Text("Headline") },
|
||||
leadingContent = { Icon(Icons.Default.Info, contentDescription = null) },
|
||||
onClick = {},
|
||||
modifier = Modifier.background(MaterialTheme.colorScheme.surface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun SheetButtonWithSupportingContentPreview() {
|
||||
MaterialTheme {
|
||||
SheetButton(
|
||||
headlineContent = { Text("Headline") },
|
||||
leadingContent = { Icon(Icons.Default.Info, contentDescription = null) },
|
||||
supportingContent = { Text("Supporting content") },
|
||||
onClick = {},
|
||||
modifier = Modifier.background(MaterialTheme.colorScheme.surface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun SheetButtonWithTrailingContentPreview() {
|
||||
MaterialTheme {
|
||||
SheetButton(
|
||||
headlineContent = { Text("Headline") },
|
||||
leadingContent = { Icon(Icons.Default.Info, contentDescription = null) },
|
||||
trailingContent = { Text("Trailing") },
|
||||
onClick = {},
|
||||
modifier = Modifier.background(MaterialTheme.colorScheme.surface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun DangerousSheetButtonPreview() {
|
||||
MaterialTheme {
|
||||
SheetButton(
|
||||
headlineContent = { Text("Headline") },
|
||||
leadingContent = { Icon(Icons.Default.Info, contentDescription = null) },
|
||||
onClick = {},
|
||||
dangerous = true,
|
||||
modifier = Modifier.background(MaterialTheme.colorScheme.surface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun SpecialSheetButtonPreview() {
|
||||
MaterialTheme {
|
||||
SheetButton(
|
||||
headlineContent = { Text("Headline") },
|
||||
leadingContent = { Icon(Icons.Default.Info, contentDescription = null) },
|
||||
onClick = {},
|
||||
special = true,
|
||||
modifier = Modifier.background(MaterialTheme.colorScheme.surface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import androidx.compose.runtime.remember
|
|||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
|
|
@ -200,7 +201,7 @@ fun annotateText(node: AstNode): AnnotatedString {
|
|||
pushStyle(
|
||||
LocalTextStyle.current.toSpanStyle()
|
||||
.copy(
|
||||
color = MaterialTheme.colorScheme.secondary
|
||||
color = Color(0xff4775bf)
|
||||
)
|
||||
)
|
||||
append(url.value)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.width
|
|||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Close
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.LinearProgressIndicator
|
||||
|
|
@ -30,7 +29,6 @@ import androidx.compose.material3.ModalBottomSheet
|
|||
import androidx.compose.material3.ProgressIndicatorDefaults
|
||||
import androidx.compose.material3.Switch
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -52,7 +50,9 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.api.routes.microservices.autumn.FileArgs
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.RemoteImage
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ fun FilePreviewSheet(
|
|||
}
|
||||
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
onDismiss()
|
||||
}, modifier = Modifier.weight(1f)) {
|
||||
Icon(Icons.Default.Close, contentDescription = null)
|
||||
|
|
@ -133,7 +133,7 @@ fun FilePreviewSheet(
|
|||
Text(stringResource(R.string.attachment_preview_close))
|
||||
}
|
||||
if (canRemove) {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
onRemove()
|
||||
}, modifier = Modifier.weight(1f)) {
|
||||
Icon(
|
||||
|
|
|
|||
|
|
@ -105,7 +105,6 @@ fun DiscoverServersList(
|
|||
CircularProgressIndicator(
|
||||
modifier = Modifier
|
||||
.padding(16.dp),
|
||||
color = MaterialTheme.colorScheme.secondary
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -238,7 +237,7 @@ fun ServerItem(
|
|||
|
||||
Text(
|
||||
text = server.description,
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onBackground.copy(
|
||||
alpha = descriptionAlpha,
|
||||
),
|
||||
|
|
@ -248,46 +247,43 @@ fun ServerItem(
|
|||
}
|
||||
Spacer(modifier = Modifier.height(12.dp))
|
||||
|
||||
if (isProcessing) {
|
||||
CircularProgressIndicator(
|
||||
IconButton(
|
||||
onClick = onClick,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(24.dp),
|
||||
strokeWidth = 2.dp
|
||||
)
|
||||
} else {
|
||||
IconButton(
|
||||
onClick = onClick,
|
||||
.fillMaxSize()
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
) {
|
||||
if (isJoined) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(20.dp)
|
||||
.clip(CircleShape)
|
||||
.background(Color(0xFF43bf83))
|
||||
.align(Alignment.Center),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Image(
|
||||
modifier = Modifier.size(16.dp),
|
||||
painter = painterResource(R.drawable.icn_check_24dp),
|
||||
contentDescription = "Already joined",
|
||||
colorFilter = ColorFilter.tint(Color.White)
|
||||
)
|
||||
|
||||
}
|
||||
} else {
|
||||
// Show arrow icon for servers not joined yet
|
||||
when {
|
||||
isProcessing -> CircularProgressIndicator(
|
||||
modifier = Modifier.size(20.dp)
|
||||
.align(Alignment.Center),
|
||||
strokeWidth = 2.dp
|
||||
)
|
||||
isJoined -> Box(
|
||||
modifier = Modifier
|
||||
.size(20.dp)
|
||||
.clip(CircleShape)
|
||||
.background(Color(0xFF43bf83))
|
||||
.align(Alignment.Center),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Image(
|
||||
modifier = Modifier.size(16.dp),
|
||||
painter = painterResource(R.drawable.icn_check_24dp),
|
||||
contentDescription = "Already joined",
|
||||
colorFilter = ColorFilter.tint(Color.White)
|
||||
)
|
||||
}
|
||||
else -> {
|
||||
Image(
|
||||
painter = painterResource(R.drawable.icn_arrow_forward_24dp),
|
||||
contentDescription = "Join server",
|
||||
modifier = Modifier
|
||||
.align(Alignment.Center),
|
||||
modifier = Modifier.align(Alignment.Center),
|
||||
colorFilter = ColorFilter.tint(
|
||||
color = MaterialTheme.colorScheme.onBackground.copy(alpha = contentAlpha)
|
||||
color = MaterialTheme.colorScheme.onBackground.copy(
|
||||
alpha = contentAlpha
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
@ -354,4 +350,22 @@ private fun JoinedServerItemPreview() {
|
|||
isJoined = true,
|
||||
isProcessing = false
|
||||
)
|
||||
}
|
||||
@Preview
|
||||
@Composable
|
||||
private fun JoinedServerItemLoadingPreview() {
|
||||
val server = ServerData(
|
||||
id = "1",
|
||||
name = "Peptide Lounge",
|
||||
description = "The official Peptide server. Hang out, chat, and get help with Peptide.",
|
||||
inviteCode = "peptide",
|
||||
disabled = false,
|
||||
showColor = null,
|
||||
)
|
||||
ServerItem(
|
||||
server = server,
|
||||
onClick = {},
|
||||
isJoined = true,
|
||||
isProcessing = true
|
||||
)
|
||||
}
|
||||
|
|
@ -35,7 +35,9 @@ import chat.peptide.api.PeptideAPI
|
|||
import chat.peptide.api.PeptideError
|
||||
import chat.peptide.api.schemas.Invite
|
||||
import chat.peptide.composables.generic.IconPlaceholder
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.RemoteImage
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun ServerInviteDialog(
|
||||
|
|
@ -74,7 +76,7 @@ fun ServerInviteDialog(
|
|||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
Spacer(Modifier.height(32.dp))
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = onDismiss,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
) {
|
||||
|
|
@ -100,7 +102,7 @@ fun ServerInviteDialog(
|
|||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Bottom // Align buttons to the bottom
|
||||
) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = onJoinClick,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
enabled = !isLoading
|
||||
|
|
@ -121,7 +123,7 @@ fun ServerInviteDialog(
|
|||
Text(text = stringResource(id = R.string.invite_join))
|
||||
}
|
||||
}
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = onDismiss,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -208,13 +208,19 @@ fun ChannelSideDrawer(
|
|||
onDestinationChanged(ChatRouterDestination.Home)
|
||||
}
|
||||
.size(48.dp)
|
||||
.background(MaterialTheme.colorScheme.primaryContainer),
|
||||
.background(
|
||||
color = if (currentDestination is ChatRouterDestination.Home) {
|
||||
MaterialTheme.colorScheme.secondaryContainer
|
||||
} else MaterialTheme.colorScheme.primaryContainer
|
||||
),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_direct_messages),
|
||||
contentDescription = stringResource(R.string.discover_alt),
|
||||
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
tint = if (currentDestination is ChatRouterDestination.Home) {
|
||||
MaterialTheme.colorScheme.onSecondaryContainer
|
||||
} else MaterialTheme.colorScheme.onBackground
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -292,20 +298,32 @@ fun ChannelSideDrawer(
|
|||
Box(
|
||||
Modifier
|
||||
.padding(8.dp)
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.clip(animateDpAsState(
|
||||
targetValue = if (currentDestination is ChatRouterDestination.Discover) 16.dp else 24.dp,
|
||||
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
||||
label = "Discover button corner radius"
|
||||
).value.let { RoundedCornerShape(it) })
|
||||
.clickable {
|
||||
onDestinationChanged(
|
||||
ChatRouterDestination.Discover
|
||||
)
|
||||
}
|
||||
.size(48.dp)
|
||||
.background(MaterialTheme.colorScheme.secondaryContainer),
|
||||
.background(animateColorAsState(
|
||||
targetValue = if (currentDestination is ChatRouterDestination.Discover) {
|
||||
MaterialTheme.colorScheme.secondaryContainer
|
||||
} else MaterialTheme.colorScheme.primaryContainer,
|
||||
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
|
||||
label = "Discover button background"
|
||||
).value),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.icn_explore_24dp),
|
||||
contentDescription = stringResource(R.string.discover_alt),
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer
|
||||
tint = if (currentDestination is ChatRouterDestination.Discover) {
|
||||
MaterialTheme.colorScheme.onSecondaryContainer
|
||||
} else MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -319,13 +337,13 @@ fun ChannelSideDrawer(
|
|||
onShowAddServerSheet()
|
||||
}
|
||||
.size(48.dp)
|
||||
.background(MaterialTheme.colorScheme.secondaryContainer),
|
||||
.background(MaterialTheme.colorScheme.primaryContainer),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.icn_add_24dp),
|
||||
contentDescription = stringResource(R.string.server_plus_alt),
|
||||
tint = MaterialTheme.colorScheme.onSecondaryContainer
|
||||
tint = MaterialTheme.colorScheme.onPrimaryContainer
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -566,14 +584,13 @@ fun ChannelSideDrawer(
|
|||
onClick = {
|
||||
onDestinationChanged(ChatRouterDestination.Friends)
|
||||
},
|
||||
containerColor = MaterialTheme.colorScheme.secondary,
|
||||
contentColor = MaterialTheme.colorScheme.onSecondary,
|
||||
containerColor = MaterialTheme.colorScheme.primary,
|
||||
shape = CircleShape
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_new_message),
|
||||
contentDescription = stringResource(R.string.message_friends),
|
||||
tint = MaterialTheme.colorScheme.onSecondary
|
||||
tint = MaterialTheme.colorScheme.onPrimary
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -929,9 +946,7 @@ fun ChannelItem(
|
|||
horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.Start),
|
||||
modifier = Modifier
|
||||
.padding(start = 8.dp, end = 8.dp)
|
||||
.clip(
|
||||
CircleShape
|
||||
)
|
||||
.clip(CircleShape)
|
||||
.combinedClickable(
|
||||
onLongClickLabel = stringResource(R.string.channel_context_sheet_open),
|
||||
onLongClick = {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Arrangement
|
|||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.DropdownMenu
|
||||
import androidx.compose.material3.DropdownMenuItem
|
||||
|
|
@ -42,6 +41,7 @@ import chat.peptide.api.routes.user.unfriendUser
|
|||
import chat.peptide.api.schemas.User
|
||||
import chat.peptide.callbacks.Action
|
||||
import chat.peptide.callbacks.ActionChannel
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.Platform
|
||||
import kotlinx.coroutines.launch
|
||||
import logcat.LogPriority
|
||||
|
|
@ -61,7 +61,7 @@ fun UserButtons(
|
|||
var menuOpen by remember { mutableStateOf(false) }
|
||||
|
||||
if (user.id == null) return Row {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -88,7 +88,7 @@ fun UserButtons(
|
|||
when (user.relationship) {
|
||||
"None" -> {
|
||||
if (user.bot == null) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -134,7 +134,7 @@ fun UserButtons(
|
|||
}
|
||||
|
||||
"User" -> {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
ActionChannel.send(Action.TopNavigate("settings/profile"))
|
||||
|
|
@ -176,7 +176,7 @@ fun UserButtons(
|
|||
}
|
||||
|
||||
"Outgoing" -> {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -194,7 +194,7 @@ fun UserButtons(
|
|||
}
|
||||
|
||||
"Incoming" -> {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -209,7 +209,7 @@ fun UserButtons(
|
|||
) {
|
||||
Text(stringResource(R.string.user_info_sheet_accept_request))
|
||||
}
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -231,7 +231,7 @@ fun UserButtons(
|
|||
}
|
||||
|
||||
"Blocked" -> {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -12,12 +12,10 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Slider
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
|
|
@ -32,6 +30,8 @@ import androidx.compose.ui.res.painterResource
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
enum class CornerRadiusPreset(val percentage: Int) {
|
||||
SHARP(0),
|
||||
|
|
@ -84,7 +84,7 @@ fun CornerRadiusPicker(percentage: Int, onUpdate: (Int) -> Unit, modifier: Modif
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
showOtherModal = false
|
||||
onUpdate(sliderPosition.toInt())
|
||||
|
|
@ -94,7 +94,7 @@ fun CornerRadiusPicker(percentage: Int, onUpdate: (Int) -> Unit, modifier: Modif
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
showOtherModal = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun DisconnectedScreen(onRetry: () -> Unit) {
|
||||
|
|
@ -45,7 +46,7 @@ fun DisconnectedScreen(onRetry: () -> Unit) {
|
|||
.fillMaxWidth()
|
||||
)
|
||||
|
||||
Button(onClick = onRetry) {
|
||||
SquareButton(onClick = onRetry) {
|
||||
Text(stringResource(R.string.tap_to_retry))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun SettingsHintBanner(
|
||||
|
|
@ -72,7 +73,7 @@ private fun SimpleSettingsHintBannerPreview() {
|
|||
)
|
||||
},
|
||||
button = {
|
||||
Button(onClick = {}) {
|
||||
SquareButton(onClick = {}) {
|
||||
Text("Let's test it out!")
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.net.toUri
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
import com.google.accompanist.permissions.PermissionStatus
|
||||
import com.google.accompanist.permissions.rememberMultiplePermissionsState
|
||||
|
|
@ -116,7 +117,7 @@ fun VoicePermissionSwitch(onCancel: () -> Unit, onPermissionGranted: @Composable
|
|||
color = MaterialTheme.colorScheme.tertiary,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
if (fullyRevoked) {
|
||||
// Launch settings to allow the user to manually enable permissions
|
||||
|
|
|
|||
|
|
@ -102,12 +102,12 @@ fun VoiceSheet(
|
|||
Text("status = ${room.state.name}")
|
||||
}
|
||||
item(key = "controls") {
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
room.setMicrophoneMute(true)
|
||||
}) {
|
||||
Text("mute 🎤🫷😤")
|
||||
}
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
room.setMicrophoneMute(false)
|
||||
}) {
|
||||
Text("unmute 🗣️📢🔥")
|
||||
|
|
@ -117,7 +117,7 @@ fun VoiceSheet(
|
|||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(16.dp)
|
||||
) {
|
||||
Button(
|
||||
SquareButton(
|
||||
colors = ButtonDefaults.buttonColors().copy(
|
||||
containerColor = MaterialTheme.colorScheme.errorContainer,
|
||||
contentColor = MaterialTheme.colorScheme.onErrorContainer,
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@ import androidx.compose.foundation.layout.Column
|
|||
import androidx.compose.foundation.layout.aspectRatio
|
||||
import androidx.compose.foundation.layout.widthIn
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
@ -21,6 +19,8 @@ import androidx.compose.ui.text.font.FontWeight
|
|||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.BuildConfig
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun NotificationRationaleDialog(
|
||||
|
|
@ -62,15 +62,17 @@ fun NotificationRationaleDialog(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(onClick = {
|
||||
onSelected(false)
|
||||
onDismiss()
|
||||
}) {
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onSelected(false)
|
||||
onDismiss()
|
||||
}
|
||||
) {
|
||||
Text(stringResource(id = R.string.spark_notifications_rationale_dismiss))
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
onSelected(true)
|
||||
onDismiss()
|
||||
}) {
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ import chat.peptide.api.PeptideAPI
|
|||
import chat.peptide.api.PeptideJson
|
||||
import chat.peptide.api.routes.misc.Root
|
||||
import chat.peptide.api.routes.misc.getRootRoute
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.PrimaryTabs
|
||||
import chat.peptide.internals.Platform
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -250,7 +251,7 @@ fun AboutScreen(navController: NavController, viewModel: AboutViewModel = viewMo
|
|||
|
||||
1 -> {
|
||||
DebugInfo(viewModel)
|
||||
TextButton(onClick = ::copyDebugInformation) {
|
||||
PepTextButton(onClick = ::copyDebugInformation) {
|
||||
Text(text = stringResource(id = R.string.copy))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ import chat.peptide.api.routes.push.subscribePush
|
|||
import chat.peptide.callbacks.Action
|
||||
import chat.peptide.callbacks.ActionChannel
|
||||
import chat.peptide.composables.chat.DisconnectedNotice
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.screens.chat.drawer.ChannelSideDrawer
|
||||
import chat.peptide.dialogs.NotificationRationaleDialog
|
||||
import chat.peptide.internals.Changelogs
|
||||
|
|
@ -554,7 +555,7 @@ fun ChatRouterScreen(
|
|||
Text(stringResource(id = R.string.notice_platform_mod_dm_description))
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
showPlatformModDMHint = false
|
||||
DirectMessages.getPlatformModerationDM()?.id?.let {
|
||||
viewModel.setSaveDestination(ChatRouterDestination.Channel(it))
|
||||
|
|
@ -714,7 +715,7 @@ fun ChatRouterScreen(
|
|||
)
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
showChannelUnavailableAlert = false
|
||||
}) {
|
||||
Text(text = stringResource(id = R.string.ok))
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ import androidx.compose.ui.unit.sp
|
|||
import chat.peptide.R
|
||||
import chat.peptide.api.PeptideAPI
|
||||
import chat.peptide.api.routes.channel.createInvite
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.Platform
|
||||
import chat.peptide.ui.theme.FragmentMono
|
||||
import kotlinx.coroutines.Job
|
||||
|
|
@ -196,13 +198,13 @@ fun InviteDialog(channelId: String, onDismissRequest: () -> Unit) {
|
|||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.End
|
||||
) {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
onDismissRequest()
|
||||
}) {
|
||||
Text(stringResource(R.string.invite_dialog_close))
|
||||
}
|
||||
Spacer(Modifier.width(8.dp))
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
clipboardManager.setText(AnnotatedString.Builder().apply {
|
||||
append(PeptideAPI.getCurrentInvitesUrl())
|
||||
append("/")
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import chat.peptide.api.routes.user.blockUser
|
|||
import chat.peptide.api.schemas.ContentReportReason
|
||||
import chat.peptide.composables.chat.Message
|
||||
import chat.peptide.composables.generic.FormTextField
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
enum class MessageReportFlowState {
|
||||
|
|
@ -200,7 +201,7 @@ fun ReportMessageDialog(onDismiss: () -> Unit, messageId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -210,7 +211,7 @@ fun ReportMessageDialog(onDismiss: () -> Unit, messageId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
state.value = MessageReportFlowState.Sending
|
||||
},
|
||||
|
|
@ -305,7 +306,7 @@ fun ReportMessageDialog(onDismiss: () -> Unit, messageId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -315,7 +316,7 @@ fun ReportMessageDialog(onDismiss: () -> Unit, messageId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
blockUser(message.author ?: return@launch)
|
||||
|
|
@ -358,7 +359,7 @@ fun ReportMessageDialog(onDismiss: () -> Unit, messageId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import chat.peptide.api.PeptideAPI
|
|||
import chat.peptide.api.routes.safety.putServerReport
|
||||
import chat.peptide.api.schemas.ContentReportReason
|
||||
import chat.peptide.composables.generic.FormTextField
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.screens.settings.ServerOverview
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -169,7 +170,7 @@ fun ReportServerDialog(onDismiss: () -> Unit, serverId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -179,7 +180,7 @@ fun ReportServerDialog(onDismiss: () -> Unit, serverId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
state.value = ServerReportFlowState.Sending
|
||||
},
|
||||
|
|
@ -263,7 +264,7 @@ fun ReportServerDialog(onDismiss: () -> Unit, serverId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -303,7 +304,7 @@ fun ReportServerDialog(onDismiss: () -> Unit, serverId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import chat.peptide.api.routes.safety.putUserReport
|
|||
import chat.peptide.api.routes.user.blockUser
|
||||
import chat.peptide.api.schemas.UserReportReason
|
||||
import chat.peptide.composables.generic.FormTextField
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.screens.settings.UserOverview
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -162,7 +163,7 @@ fun ReportUserDialog(onDismiss: () -> Unit, userId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -172,7 +173,7 @@ fun ReportUserDialog(onDismiss: () -> Unit, userId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
state.value = UserReportFlowState.Sending
|
||||
},
|
||||
|
|
@ -267,7 +268,7 @@ fun ReportUserDialog(onDismiss: () -> Unit, userId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
@ -277,7 +278,7 @@ fun ReportUserDialog(onDismiss: () -> Unit, userId: String) {
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
blockUser(userId)
|
||||
|
|
@ -320,7 +321,7 @@ fun ReportUserDialog(onDismiss: () -> Unit, userId: String) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
onDismiss()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import androidx.compose.foundation.text.KeyboardOptions
|
|||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.icons.filled.Close
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.DropdownMenu
|
||||
import androidx.compose.material3.DropdownMenuItem
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
|
|
@ -37,7 +36,6 @@ import androidx.compose.material3.MaterialTheme
|
|||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.material3.ToggleFloatingActionButton
|
||||
import androidx.compose.material3.ToggleFloatingActionButtonDefaults.animateIcon
|
||||
|
|
@ -92,6 +90,8 @@ import chat.peptide.components.vectorassets.HL_USERNAME
|
|||
import chat.peptide.components.vectorassets.PeptideTagIntro
|
||||
import chat.peptide.composables.chat.MemberListItem
|
||||
import chat.peptide.composables.generic.CountableListHeader
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.generic.UserAvatar
|
||||
import chat.peptide.internals.extensions.zero
|
||||
import chat.peptide.markdown.jbm.asHexString
|
||||
|
|
@ -240,7 +240,7 @@ fun FriendsScreen(topNav: NavController, useDrawer: Boolean = false, onDrawerCli
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
val clipboardText =
|
||||
|
|
@ -279,7 +279,7 @@ fun FriendsScreen(topNav: NavController, useDrawer: Boolean = false, onDrawerCli
|
|||
) {
|
||||
Text(stringResource(R.string.friends_add_by_tag_sheet_paste_from_clipboard))
|
||||
}
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
if (username.isNotBlank() && tag.isNotBlank()) {
|
||||
|
|
@ -353,7 +353,7 @@ fun FriendsScreen(topNav: NavController, useDrawer: Boolean = false, onDrawerCli
|
|||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
qrResult = null
|
||||
contents = null
|
||||
|
|
@ -413,7 +413,7 @@ fun FriendsScreen(topNav: NavController, useDrawer: Boolean = false, onDrawerCli
|
|||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
contents?.let { userContents ->
|
||||
|
|
@ -451,7 +451,7 @@ fun FriendsScreen(topNav: NavController, useDrawer: Boolean = false, onDrawerCli
|
|||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
qrResult = null
|
||||
contents = null
|
||||
|
|
|
|||
|
|
@ -141,7 +141,9 @@ import chat.peptide.composables.chat.MessageField
|
|||
import chat.peptide.composables.chat.SystemMessage
|
||||
import chat.peptide.composables.emoji.EmojiPicker
|
||||
import chat.peptide.composables.generic.GroupIcon
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.PresenceBadge
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.generic.UserAvatar
|
||||
import chat.peptide.composables.generic.UserAvatarWidthPlaceholder
|
||||
import chat.peptide.composables.generic.presenceFromStatus
|
||||
|
|
@ -337,6 +339,13 @@ fun ChannelScreen(
|
|||
scope.launch {
|
||||
try {
|
||||
val cameraProvider = cameraProviderFuture.get()
|
||||
// Ensure there's a camera available to bind to
|
||||
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
|
||||
if (!cameraProvider.hasCamera(cameraSelector)) {
|
||||
Toast.makeText(context, "No camera available", Toast.LENGTH_SHORT).show()
|
||||
Log.e("ChannelScreen", "No camera available to bind")
|
||||
return@launch
|
||||
}
|
||||
cameraProvider.unbindAll() // Unbind previous use cases
|
||||
|
||||
val name = "peptide-photo-${System.currentTimeMillis()}.jpg"
|
||||
|
|
@ -353,6 +362,14 @@ fun ChannelScreen(
|
|||
)
|
||||
.build()
|
||||
|
||||
// Bind use cases before taking picture
|
||||
val preview = CameraPreview.Builder().build() // Dummy preview, not shown
|
||||
cameraProvider.bindToLifecycle(
|
||||
lifecycleOwner,
|
||||
cameraSelector,
|
||||
preview, // Bind a preview as it's often required
|
||||
imageCapture
|
||||
)
|
||||
imageCapture.takePicture(
|
||||
outputOptions,
|
||||
ContextCompat.getMainExecutor(context),
|
||||
|
|
@ -1091,7 +1108,7 @@ fun ChannelScreen(
|
|||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||
) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
viewModel.dismissPhysicalKeyboardSpark()
|
||||
},
|
||||
|
|
@ -1099,7 +1116,7 @@ fun ChannelScreen(
|
|||
) {
|
||||
Text(stringResource(R.string.spark_keyboard_shortcuts_dismiss))
|
||||
}
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
(context as Activity).requestShowKeyboardShortcuts()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ import androidx.compose.ui.unit.dp
|
|||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.DobPicker
|
||||
import chat.peptide.composables.generic.DobRegion
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import kotlinx.datetime.TimeZone
|
||||
|
|
@ -171,11 +173,11 @@ fun ChannelScreenAgeGate(
|
|||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterHorizontally),
|
||||
) {
|
||||
Button(onClick = { onDeny() }) {
|
||||
SquareButton(onClick = { onDeny() }) {
|
||||
Text(stringResource(R.string.channel_age_gate_dob_cancel))
|
||||
}
|
||||
|
||||
TextButton(onClick = { onAccept() }, enabled = dobValid) {
|
||||
PepTextButton(onClick = { onAccept() }, enabled = dobValid) {
|
||||
Text(stringResource(R.string.channel_age_gate_dob_proceed))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.api.settings.GeoStateProvider
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.vectorassets.GeoGateUX
|
||||
|
||||
@Composable
|
||||
|
|
@ -68,7 +69,7 @@ fun ChannelScreenGeoGate(
|
|||
}
|
||||
}
|
||||
|
||||
Button(onClick = { onAcknowledge() }) {
|
||||
SquareButton(onClick = { onAcknowledge() }) {
|
||||
Text(stringResource(R.string.geogate_acknowledge))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import androidx.navigation.compose.NavHost
|
|||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import chat.peptide.api.settings.FeatureFlags
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.screens.labs.ui.mockups.NewLoginExperienceMockup
|
||||
import chat.peptide.screens.labs.ui.sandbox.CoreLibSandbox
|
||||
import chat.peptide.screens.labs.ui.sandbox.GradientEditorSandbox
|
||||
|
|
@ -26,7 +27,7 @@ fun LabsGuard(onTurnBack: () -> Unit = {}, content: @Composable () -> Unit) {
|
|||
AlertDialog(
|
||||
onDismissRequest = { onTurnBack() },
|
||||
confirmButton = {
|
||||
TextButton(onClick = { onTurnBack() }) {
|
||||
PepTextButton(onClick = { onTurnBack() }) {
|
||||
Text("Turn back")
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ import androidx.navigation.compose.composable
|
|||
import androidx.navigation.compose.rememberNavController
|
||||
import chat.peptide.R
|
||||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.ui.theme.Theme
|
||||
|
||||
@OptIn(ExperimentalMaterial3ExpressiveApi::class)
|
||||
|
|
@ -126,13 +128,13 @@ fun NewLoginExperienceMockup(navController: NavController) {
|
|||
.padding(horizontal = 16.dp)
|
||||
.widthIn(max = 150.dp)
|
||||
) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = { loginNav.navigate("login") },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text("Log In")
|
||||
}
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = { navController.popBackStack() },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
|
|
@ -149,7 +151,7 @@ fun NewLoginExperienceMockup(navController: NavController) {
|
|||
.fillMaxSize()
|
||||
.background(Color.Blue), Alignment.Center
|
||||
) {
|
||||
Button(onClick = { loginNav.navigate("greet") }) {
|
||||
SquareButton(onClick = { loginNav.navigate("greet") }) {
|
||||
Text("Greetings!")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package chat.peptide.screens.labs.ui.sandbox
|
||||
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -11,6 +10,7 @@ import androidx.compose.ui.text.SpanStyle
|
|||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.navigation.NavController
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.settings.dsl.SettingsPage
|
||||
import chat.peptide.ui.theme.FragmentMono
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ fun CoreLibSandbox(navController: NavController) {
|
|||
)
|
||||
}
|
||||
) {
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
greeting = librevolt.greet()
|
||||
}) {
|
||||
Text("Greet")
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavController
|
||||
import chat.peptide.composables.generic.GradientStopEditor
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.settings.dsl.SettingsPage
|
||||
|
||||
@Composable
|
||||
|
|
@ -35,7 +36,7 @@ fun GradientEditorSandbox(navController: NavController) {
|
|||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
if (segmentCount >= 2)
|
||||
segmentCount--
|
||||
|
|
@ -50,7 +51,7 @@ fun GradientEditorSandbox(navController: NavController) {
|
|||
modifier = Modifier.weight(1f),
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = { segmentCount++ },
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavController
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.markdown.jbm.JBM
|
||||
import chat.peptide.markdown.jbm.JBMRenderer
|
||||
import chat.peptide.markdown.jbm.LocalJBMarkdownTreeState
|
||||
|
|
@ -65,12 +66,12 @@ fun JBMSandbox(navController: NavController) {
|
|||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
submitMdSource = mdSource
|
||||
}) {
|
||||
Text("Submit")
|
||||
}
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
submitMdSource = """# Full range of MD now supported!
|
||||
1. Text with **bold**, *italics*, and ***both***!
|
||||
2. You ~~can't see me~~.
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ import androidx.compose.ui.unit.sp
|
|||
import androidx.navigation.NavController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.generic.SquareElevatedButton
|
||||
|
||||
|
|
@ -151,7 +152,7 @@ fun LoginGreetingScreen(navController: NavController) {
|
|||
AnimatedVisibility(showBoringButton) {
|
||||
Spacer(modifier = Modifier.height(10.dp))
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = { navController.navigate("login2/init") },
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import chat.peptide.api.routes.account.authenticateWithMfaRecoveryCode
|
|||
import chat.peptide.api.routes.account.authenticateWithMfaTotpCode
|
||||
import chat.peptide.composables.generic.CollapsibleCard
|
||||
import chat.peptide.composables.generic.FormTextField
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.persistence.KVStorage
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -255,7 +256,7 @@ fun MfaScreen(
|
|||
value = viewModel.totpCode
|
||||
)
|
||||
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = { viewModel.tryAuthorizeTotp(mfaTicket) },
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 20.dp, vertical = 10.dp)
|
||||
|
|
@ -309,7 +310,7 @@ fun MfaScreen(
|
|||
value = viewModel.recoveryCode
|
||||
)
|
||||
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = { viewModel.tryAuthorizeRecovery(mfaTicket) },
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 20.dp, vertical = 10.dp)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ import chat.peptide.R
|
|||
import chat.peptide.api.PeptideAPI
|
||||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.composables.generic.AnyLink
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.generic.Weblink
|
||||
import chat.peptide.ui.theme.Theme
|
||||
import com.chuckerteam.chucker.api.Chucker
|
||||
|
|
@ -140,13 +142,13 @@ private fun LinkPart(windowSizeClass: WindowSizeClass) {
|
|||
.fillMaxWidth()
|
||||
) {
|
||||
Column(Modifier.widthIn(max = 150.dp)) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {/* navController.navigate("login2/existing/details") */ },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text("Log In") // FIXME hardcoded string
|
||||
}
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {/* navController.navigate("login2/new/details") */ },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.compose.ui.unit.sp
|
||||
import androidx.navigation.NavController
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun RegisterGreetingScreen(navController: NavController) {
|
||||
|
|
@ -83,7 +85,7 @@ fun RegisterGreetingScreen(navController: NavController) {
|
|||
}
|
||||
|
||||
Row {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
navController.popBackStack()
|
||||
}) {
|
||||
Text(text = stringResource(R.string.back))
|
||||
|
|
@ -91,7 +93,7 @@ fun RegisterGreetingScreen(navController: NavController) {
|
|||
|
||||
Spacer(modifier = Modifier.width(10.dp))
|
||||
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
navController.navigate("register/details")
|
||||
}) {
|
||||
Text(text = stringResource(R.string.next))
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
|
@ -31,7 +30,6 @@ import androidx.compose.material3.MaterialTheme
|
|||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.dynamicDarkColorScheme
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
|
|
@ -63,6 +61,7 @@ import chat.peptide.api.PeptideJson
|
|||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.api.settings.SyncedSettings
|
||||
import chat.peptide.composables.generic.ListHeader
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.screens.settings.appearance.ColourChip
|
||||
import chat.peptide.composables.screens.settings.appearance.CornerRadiusPicker
|
||||
import chat.peptide.sheets.ColourPickerSheet
|
||||
|
|
@ -317,23 +316,12 @@ fun AppearanceSettingsScreen(
|
|||
ColourChip(
|
||||
color = Color(0xff333642),
|
||||
text = stringResource(id = R.string.settings_appearance_theme_peptide),
|
||||
selected = LoadedSettings.theme == Theme.None,
|
||||
selected = LoadedSettings.theme == Theme.PEPTIDE_DARK,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.testTag("set_theme_peptide")
|
||||
) {
|
||||
viewModel.saveNewTheme(Theme.None)
|
||||
}
|
||||
|
||||
ColourChip(
|
||||
color = if (isSystemInDarkTheme()) Color(0xff333642) else Color(0xfff7f7f7),
|
||||
text = stringResource(id = R.string.settings_appearance_theme_none),
|
||||
selected = LoadedSettings.theme == Theme.None,
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.testTag("set_theme_none")
|
||||
) {
|
||||
viewModel.saveNewTheme(Theme.None)
|
||||
viewModel.saveNewTheme(Theme.PEPTIDE_DARK)
|
||||
}
|
||||
|
||||
if (systemSupportsDynamicColors()) {
|
||||
|
|
@ -425,7 +413,7 @@ fun AppearanceSettingsScreen(
|
|||
.fillMaxWidth()
|
||||
.padding(horizontal = 20.dp)
|
||||
) {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
filePicker.launch(arrayOf("*/*"))
|
||||
},
|
||||
|
|
@ -443,7 +431,7 @@ fun AppearanceSettingsScreen(
|
|||
)
|
||||
}
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
fileSaver.launch("${SyncedSettings.android.theme}-colours.rato")
|
||||
},
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ import chat.peptide.api.settings.MessageReplyStyle
|
|||
import chat.peptide.api.settings.SpecialEmbedSettings
|
||||
import chat.peptide.api.settings.SyncedSettings
|
||||
import chat.peptide.composables.generic.ListHeader
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.RadioItem
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -141,7 +142,7 @@ fun ChatSettingsScreen(
|
|||
for (key in LoadedSettings.poorlyFormedSettingsKeys.filter {
|
||||
it in setOf("ordering", "android", "notifications")
|
||||
}) {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
when (key) {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ import androidx.lifecycle.viewModelScope
|
|||
import androidx.navigation.NavController
|
||||
import chat.peptide.R
|
||||
import chat.peptide.api.routes.push.subscribePush
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.dialogs.NotificationRationaleDialog
|
||||
import chat.peptide.persistence.Database
|
||||
import chat.peptide.persistence.KVStorage
|
||||
|
|
@ -178,7 +180,7 @@ fun DebugSettingsScreen(
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
showC2dmDataDialogue = false
|
||||
}) {
|
||||
Text("OK")
|
||||
|
|
@ -239,7 +241,7 @@ fun DebugSettingsScreen(
|
|||
ElevatedButton(onClick = { viewModel.forgetSwipeToReplySpark() }) {
|
||||
Text("Forget swipe to reply spark")
|
||||
}
|
||||
Button(onClick = { viewModel.forgetAllSparks() }) {
|
||||
SquareButton(onClick = { viewModel.forgetAllSparks() }) {
|
||||
Text("Forget all sparks")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ import chat.peptide.BuildConfig
|
|||
import chat.peptide.PeptideApplication
|
||||
import chat.peptide.api.settings.Experiments
|
||||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.persistence.KVStorage
|
||||
import chat.peptide.settings.dsl.SettingsPage
|
||||
import chat.peptide.settings.dsl.SubcategoryContentInsets
|
||||
|
|
@ -121,7 +123,7 @@ fun ExperimentsSettingsScreen(
|
|||
Text("The changes you made require a restart to take effect.")
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
viewModel.restartApp(context)
|
||||
}
|
||||
|
|
@ -130,7 +132,7 @@ fun ExperimentsSettingsScreen(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
viewModel.showNeedsRestartAlert.value = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ import chat.peptide.api.routes.user.fetchUserProfile
|
|||
import chat.peptide.api.routes.user.patchSelf
|
||||
import chat.peptide.api.schemas.Profile
|
||||
import chat.peptide.composables.generic.InlineMediaPicker
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.screens.settings.RawUserOverview
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
|
|
@ -415,7 +416,7 @@ fun ProfileSettingsScreen(
|
|||
|
||||
Spacer(Modifier.height(8.dp))
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
viewModel.saveBio()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -14,10 +14,7 @@ import androidx.compose.foundation.layout.height
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.FilledTonalButton
|
||||
|
|
@ -27,7 +24,6 @@ import androidx.compose.material3.LargeTopAppBar
|
|||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
|
|
@ -55,6 +51,8 @@ import chat.peptide.api.routes.auth.logoutAllSessions
|
|||
import chat.peptide.api.routes.auth.logoutSessionById
|
||||
import chat.peptide.api.schemas.Session
|
||||
import chat.peptide.composables.generic.ListHeader
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.markdown.RichMarkdown
|
||||
import chat.peptide.composables.settings.sessions.SessionItem
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -114,7 +112,7 @@ fun SessionSettingsScreen(
|
|||
)
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
viewModel.showLogoutOtherConfirmation = false
|
||||
viewModel.logoutOtherSessions()
|
||||
|
|
@ -124,7 +122,7 @@ fun SessionSettingsScreen(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
viewModel.showLogoutOtherConfirmation = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
|
|
@ -19,7 +18,6 @@ import androidx.compose.material3.LocalContentColor
|
|||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
|
|
@ -43,6 +41,8 @@ import chat.peptide.api.internals.hasPermission
|
|||
import chat.peptide.api.routes.channel.leaveDeleteOrCloseChannel
|
||||
import chat.peptide.api.schemas.ChannelType
|
||||
import chat.peptide.api.settings.FeatureFlags
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.extensions.rememberChannelPermissions
|
||||
import chat.peptide.screens.settings.SettingsIcon
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -64,14 +64,14 @@ fun ChannelSettingsHome(navController: NavController, channelId: String) {
|
|||
title = { Text(stringResource(R.string.channel_settings_delete_confirm)) },
|
||||
text = { Text(stringResource(R.string.channel_settings_delete_confirm_description)) },
|
||||
dismissButton = {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
showDeletionConfirmation = false
|
||||
}) {
|
||||
Text(stringResource(R.string.channel_settings_delete_confirm_no))
|
||||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(onClick = {
|
||||
SquareButton(onClick = {
|
||||
showDeletionConfirmation = false
|
||||
scope.launch {
|
||||
leaveDeleteOrCloseChannel(channelId)
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ import chat.peptide.api.routes.microservices.autumn.uploadToAutumn
|
|||
import chat.peptide.api.schemas.Channel
|
||||
import chat.peptide.composables.generic.InlineMediaPicker
|
||||
import chat.peptide.composables.generic.ListHeader
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import io.ktor.http.ContentType
|
||||
|
|
@ -257,7 +259,7 @@ fun ChannelSettingsOverview(
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
viewModel.toggleNsfw()
|
||||
}
|
||||
|
|
@ -270,7 +272,7 @@ fun ChannelSettingsOverview(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
viewModel.showNsfwToggleDialogue = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ import chat.peptide.api.PeptideAPI
|
|||
import chat.peptide.api.routes.server.createServer
|
||||
import chat.peptide.callbacks.Action
|
||||
import chat.peptide.callbacks.ActionChannel
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.sheets.SheetSelection
|
||||
import chat.peptide.composables.vectorassets.CreateServer
|
||||
import chat.peptide.composables.vectorassets.JoinServer
|
||||
|
|
@ -307,7 +308,7 @@ fun AddServerSheet(onDismiss: () -> Unit) {
|
|||
.padding(vertical = 16.dp, horizontal = 8.dp)
|
||||
)
|
||||
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
val intent = Intent(context, InviteActivity::class.java)
|
||||
intent.data = if (inviteState.text.startsWith("https://")) {
|
||||
|
|
@ -319,7 +320,7 @@ fun AddServerSheet(onDismiss: () -> Unit) {
|
|||
"Invalid URL: ${inviteState.text}",
|
||||
e
|
||||
)
|
||||
return@Button
|
||||
return@SquareButton
|
||||
}
|
||||
} else {
|
||||
"https://${PeptideAPI.getCurrentAppUrl()}/invite/${inviteState.text}".toUri()
|
||||
|
|
@ -452,7 +453,7 @@ fun AddServerSheet(onDismiss: () -> Unit) {
|
|||
.padding(vertical = 16.dp, horizontal = 8.dp)
|
||||
)
|
||||
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
serverCreationError = false
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ import androidx.compose.material.icons.Icons
|
|||
import androidx.compose.material.icons.filled.Check
|
||||
import androidx.compose.material.icons.filled.CheckCircle
|
||||
import androidx.compose.material.icons.filled.Close
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
|
|
@ -40,7 +39,6 @@ import androidx.compose.material3.Slider
|
|||
import androidx.compose.material3.SliderDefaults
|
||||
import androidx.compose.material3.SliderState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -62,6 +60,8 @@ import androidx.compose.ui.platform.LocalFocusManager
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.TailwindColourScheme
|
||||
import org.intellij.lang.annotations.Language
|
||||
|
||||
|
|
@ -629,7 +629,7 @@ fun ColumnScope.ColourPickerSheet(
|
|||
},
|
||||
)
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
try {
|
||||
color = Color(android.graphics.Color.parseColor(hex))
|
||||
|
|
@ -671,7 +671,7 @@ fun ColumnScope.ColourPickerSheet(
|
|||
Modifier.fillMaxWidth(),
|
||||
verticalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
TextButton(onClick = onUseDefaultColour, Modifier.fillMaxWidth()) {
|
||||
PepTextButton(onClick = onUseDefaultColour, Modifier.fillMaxWidth()) {
|
||||
Icon(Icons.Default.CheckCircle, null)
|
||||
Spacer(Modifier.width(8.dp))
|
||||
Text(stringResource(R.string.colour_picker_use_default))
|
||||
|
|
@ -681,12 +681,12 @@ fun ColumnScope.ColourPickerSheet(
|
|||
Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.spacedBy(4.dp)
|
||||
) {
|
||||
TextButton(onClick = onDismiss, modifier = Modifier.weight(1f)) {
|
||||
PepTextButton(onClick = onDismiss, modifier = Modifier.weight(1f)) {
|
||||
Icon(Icons.Default.Close, null)
|
||||
Spacer(Modifier.width(8.dp))
|
||||
Text(stringResource(R.string.colour_picker_cancel))
|
||||
}
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = { onColourSelected(color.toArgb()) },
|
||||
modifier = Modifier.weight(1f)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
|
||||
@Composable
|
||||
fun EarlyAccessSheet(onClose: () -> Unit) {
|
||||
|
|
@ -55,7 +56,7 @@ fun EarlyAccessSheet(onClose: () -> Unit) {
|
|||
style = MaterialTheme.typography.bodyLarge,
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
TextButton(onClick = onClose, modifier = Modifier.fillMaxWidth()) {
|
||||
PepTextButton(onClick = onClose, modifier = Modifier.fillMaxWidth()) {
|
||||
Text(stringResource(R.string.spark_early_access_cta))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,14 +10,12 @@ import androidx.compose.foundation.layout.padding
|
|||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -44,7 +42,9 @@ import chat.peptide.api.routes.channel.react
|
|||
import chat.peptide.api.settings.Experiments
|
||||
import chat.peptide.callbacks.UiCallbacks
|
||||
import chat.peptide.composables.chat.Message
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SheetButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.Platform
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ fun MessageContextSheet(
|
|||
var showDeleteMessageConfirmation by remember { mutableStateOf(false) }
|
||||
var showInspectASTSheet by remember { mutableStateOf(false) }
|
||||
val showInspectASTSheetButton =
|
||||
BuildConfig.DEBUG || (message.content != null && Experiments.useKotlinBasedMarkdownRenderer.isEnabled)
|
||||
BuildConfig.DEBUG && (message.content != null && Experiments.useKotlinBasedMarkdownRenderer.isEnabled)
|
||||
|
||||
if (showShareSheet) {
|
||||
val shareSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
|
||||
|
|
@ -280,7 +280,7 @@ fun MessageContextSheet(
|
|||
)
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
showDeleteMessageConfirmation = false
|
||||
coroutineScope.launch {
|
||||
|
|
@ -295,7 +295,7 @@ fun MessageContextSheet(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
showDeleteMessageConfirmation = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,12 @@ import androidx.compose.foundation.layout.width
|
|||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.PrimaryScrollableTabRow
|
||||
import androidx.compose.material3.Tab
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -52,7 +50,9 @@ import chat.peptide.api.schemas.Emoji
|
|||
import chat.peptide.api.schemas.User
|
||||
import chat.peptide.api.settings.LoadedSettings
|
||||
import chat.peptide.composables.chat.MemberListItem
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.RemoteImage
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.internals.text.MessageProcessor
|
||||
import chat.peptide.persistence.KVStorage
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -181,7 +181,7 @@ fun ReactionInfoSheet(messageId: String, emoji: String, onDismiss: () -> Unit) {
|
|||
title = { Text("Traveller, you may not unsee your knowledge...") },
|
||||
text = { Text("Experimental features are already unlocked.") },
|
||||
confirmButton = {
|
||||
TextButton(onClick = { showEnabledAlreadyAlert = false }) {
|
||||
PepTextButton(onClick = { showEnabledAlreadyAlert = false }) {
|
||||
Text("OK")
|
||||
}
|
||||
}
|
||||
|
|
@ -194,7 +194,7 @@ fun ReactionInfoSheet(messageId: String, emoji: String, onDismiss: () -> Unit) {
|
|||
title = { Text("You hear a faint whisper in the wind...") },
|
||||
text = { Text("Would you like to enable experimental features? They may be unstable.") },
|
||||
confirmButton = {
|
||||
TextButton(onClick = {
|
||||
PepTextButton(onClick = {
|
||||
showEnabledConfirmAlert = false
|
||||
LoadedSettings.experimentsEnabled = true
|
||||
scope.launch {
|
||||
|
|
@ -205,7 +205,7 @@ fun ReactionInfoSheet(messageId: String, emoji: String, onDismiss: () -> Unit) {
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
Button(onClick = { showEnabledConfirmAlert = false }) {
|
||||
SquareButton(onClick = { showEnabledConfirmAlert = false }) {
|
||||
Text("I shall not risk it.")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import androidx.compose.foundation.rememberScrollState
|
|||
import androidx.compose.foundation.text.selection.SelectionContainer
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Checkbox
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
|
|
@ -22,7 +21,6 @@ import androidx.compose.material3.Icon
|
|||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
|
|
@ -43,7 +41,9 @@ import androidx.core.net.toUri
|
|||
import chat.peptide.R
|
||||
import chat.peptide.api.PeptideAPI
|
||||
import chat.peptide.api.routes.server.leaveOrDeleteServer
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SheetButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.markdown.RichMarkdown
|
||||
import chat.peptide.composables.screens.settings.ServerOverview
|
||||
import chat.peptide.composables.sheets.SheetSelection
|
||||
|
|
@ -116,7 +116,7 @@ fun ServerContextSheet(
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
coroutineScope.launch {
|
||||
onHideSheet()
|
||||
|
|
@ -134,7 +134,7 @@ fun ServerContextSheet(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
showLeaveConfirmation = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,14 +13,10 @@ import androidx.compose.foundation.rememberScrollState
|
|||
import androidx.compose.foundation.text.input.TextFieldLineLimits
|
||||
import androidx.compose.foundation.text.input.rememberTextFieldState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Edit
|
||||
import androidx.compose.material.icons.filled.Settings
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
|
|
@ -36,11 +32,13 @@ import androidx.compose.ui.platform.LocalContext
|
|||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.api.PeptideAPI
|
||||
import chat.peptide.api.routes.user.patchSelf
|
||||
import chat.peptide.api.schemas.User
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SheetButton
|
||||
import chat.peptide.composables.generic.asApiName
|
||||
import chat.peptide.composables.generic.presenceFromStatus
|
||||
|
|
@ -101,7 +99,7 @@ fun StatusTextEditDialog(
|
|||
}
|
||||
},
|
||||
confirmButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
enabled = isConfirmEnabled,
|
||||
onClick = {
|
||||
errorText = null
|
||||
|
|
@ -110,11 +108,11 @@ fun StatusTextEditDialog(
|
|||
} else {
|
||||
if (fieldState.text == initialStatus) {
|
||||
onDismiss()
|
||||
return@TextButton
|
||||
return@PepTextButton
|
||||
} else if (fieldState.text.isBlank()) {
|
||||
if (selfUser.status?.text == null) {
|
||||
onDismiss()
|
||||
return@TextButton
|
||||
return@PepTextButton
|
||||
}
|
||||
scope.launch {
|
||||
try {
|
||||
|
|
@ -150,7 +148,7 @@ fun StatusTextEditDialog(
|
|||
}
|
||||
},
|
||||
dismissButton = {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = onDismiss
|
||||
) {
|
||||
Text(
|
||||
|
|
@ -161,6 +159,17 @@ fun StatusTextEditDialog(
|
|||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
@Preview
|
||||
fun StatusTextEditDialogPreview() {
|
||||
StatusTextEditDialog(
|
||||
selfUser = User.getPlaceholder("01G00000000000000000000000"),
|
||||
initialStatus = "This is a test status",
|
||||
onDismiss = {}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@Composable
|
||||
fun StatusSheet(onBeforeNavigation: () -> Unit, onGoSettings: () -> Unit) {
|
||||
val selfUser = PeptideAPI.userCache[PeptideAPI.selfId]!!
|
||||
|
|
@ -253,3 +262,12 @@ fun StatusSheet(onBeforeNavigation: () -> Unit, onGoSettings: () -> Unit) {
|
|||
|
||||
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun StatusSheetPreview() {
|
||||
StatusSheet(
|
||||
onBeforeNavigation = {},
|
||||
onGoSettings = {}
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,11 +14,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
|
|
@ -40,6 +38,8 @@ import chat.peptide.BuildConfig
|
|||
import chat.peptide.R
|
||||
import chat.peptide.api.PeptideAPI
|
||||
import chat.peptide.api.schemas.User
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.profile.UserCard
|
||||
import chat.peptide.internals.Platform
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -200,7 +200,7 @@ fun UserCardSheet(user: User?) {
|
|||
horizontalArrangement = Arrangement.spacedBy(16.dp),
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
shareCard()
|
||||
|
|
@ -220,7 +220,7 @@ fun UserCardSheet(user: User?) {
|
|||
)
|
||||
}
|
||||
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = {
|
||||
scope.launch {
|
||||
copyCard()
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
|
||||
@Composable
|
||||
fun WebHookUserSheet(modifier: Modifier = Modifier) {
|
||||
|
|
@ -45,7 +46,7 @@ fun WebHookUserSheet(modifier: Modifier = Modifier) {
|
|||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = {
|
||||
Toast(context).apply {
|
||||
setText(context.getString(R.string.comingsoon_toast))
|
||||
|
|
|
|||
|
|
@ -8,10 +8,8 @@ import androidx.compose.foundation.layout.Spacer
|
|||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
@ -20,6 +18,8 @@ import androidx.compose.ui.text.style.TextAlign
|
|||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import chat.peptide.R
|
||||
import chat.peptide.composables.generic.PepTextButton
|
||||
import chat.peptide.composables.generic.SquareButton
|
||||
import chat.peptide.composables.vectorassets.SwipeToReplySpark
|
||||
|
||||
@Composable
|
||||
|
|
@ -51,13 +51,13 @@ fun SwipeToReplySparkSheet(
|
|||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
TextButton(
|
||||
PepTextButton(
|
||||
onClick = onOpenOptions,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(stringResource(R.string.spark_swipe_to_reply_customise))
|
||||
}
|
||||
Button(
|
||||
SquareButton(
|
||||
onClick = onDismissSheet,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ import androidx.compose.ui.graphics.Color
|
|||
object AppColors {
|
||||
|
||||
val PrimaryLight = Color(0xFF662D91)
|
||||
val OnPrimaryLight = Color(0xFFFFFFFF)
|
||||
val PrimaryContainerLight = Color(0xFFFFD9DC)
|
||||
val OnPrimaryContainerLight = Color(0xFF910031)
|
||||
val SecondaryLight = Color(0xFFC0001F)
|
||||
val OnSecondaryLight = Color(0xFFFFFFFF)
|
||||
val SecondaryContainerLight = Color(0xFFFFDAD7)
|
||||
val OnSecondaryContainerLight = Color(0xFF930015)
|
||||
val OnPrimaryLight = Color(0xFFFFFFFD)
|
||||
val PrimaryContainerLight = Color(0xFF662D91)
|
||||
val OnPrimaryContainerLight = Color(0xFFFFFFFF)
|
||||
val SecondaryLight = Color(0xFFFFDE17)
|
||||
val OnSecondaryLight = Color(0xFF000000)
|
||||
val SecondaryContainerLight = Color(0xFFCBB2E5)
|
||||
val OnSecondaryContainerLight = Color(0xFFFFDE17)
|
||||
val TertiaryLight = Color(0xFF0060A9)
|
||||
val OnTertiaryLight = Color(0xFFFFFFFF)
|
||||
val TertiaryContainerLight = Color(0xFFD3E4FF)
|
||||
|
|
@ -40,14 +40,14 @@ object AppColors {
|
|||
val SurfaceContainerHighLight = Color(0xFFE4E8F8)
|
||||
val SurfaceContainerHighestLight = Color(0xFFDEE2F2)
|
||||
|
||||
val PrimaryDark = Color(0xFF3B1954)
|
||||
val OnPrimaryDark = Color(0xFFFFFFFD)
|
||||
val PrimaryContainerDark = Color(0xFF662D91)
|
||||
val OnPrimaryContainerDark = Color(0xFFFFFFFF)
|
||||
val SecondaryDark = Color(0xFFFFDE17)
|
||||
val OnSecondaryDark = Color(0xFF000000)
|
||||
val SecondaryContainerDark = Color(0xFF332E36)
|
||||
val OnSecondaryContainerDark = Color(0xFFFFDE17)
|
||||
val PrimaryDark = Color(0xFFFFDE17)
|
||||
val OnPrimaryDark = Color(0xFF000000)
|
||||
val PrimaryContainerDark = Color(0xFF332E36)
|
||||
val OnPrimaryContainerDark = Color(0xFFFFDE17)
|
||||
val SecondaryDark = Color(0xFF662D91)
|
||||
val OnSecondaryDark = Color(0xFFFFFFFD)
|
||||
val SecondaryContainerDark = Color(0xFF662D91)
|
||||
val OnSecondaryContainerDark = Color(0xFFFFFFFF)
|
||||
val TertiaryDark = Color(0xFFA2C9FF)
|
||||
val OnTertiaryDark = Color(0xFF00315B)
|
||||
val TertiaryContainerDark = Color(0xFF004881)
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ private val PeptideColorScheme = darkColorScheme(
|
|||
)
|
||||
|
||||
enum class Theme {
|
||||
None,
|
||||
PEPTIDE_DARK,
|
||||
M3Dynamic,
|
||||
}
|
||||
|
||||
|
|
@ -120,15 +120,12 @@ fun getColorScheme(
|
|||
context
|
||||
)
|
||||
|
||||
requestedTheme == Theme.None && systemInDarkTheme -> PeptideColorScheme
|
||||
// requestedTheme == Theme.None && !systemInDarkTheme -> LightColorScheme
|
||||
requestedTheme == Theme.PEPTIDE_DARK -> PeptideColorScheme
|
||||
else -> PeptideColorScheme
|
||||
}.copy()
|
||||
|
||||
val colorSchemeIsDark = when {
|
||||
m3Supported && requestedTheme == Theme.M3Dynamic -> isSystemInDarkTheme()
|
||||
requestedTheme == Theme.None && systemInDarkTheme -> true
|
||||
requestedTheme == Theme.None && !systemInDarkTheme -> false
|
||||
else -> true
|
||||
}
|
||||
|
||||
|
|
@ -140,6 +137,7 @@ fun getColorScheme(
|
|||
@Suppress("DEPRECATION")
|
||||
ViewCompat.getWindowInsetsController(view)?.isAppearanceLightStatusBars =
|
||||
!colorSchemeIsDark
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -176,15 +174,13 @@ fun systemSupportsDynamicColors(): Boolean {
|
|||
}
|
||||
|
||||
fun getDefaultTheme(): Theme {
|
||||
return when {
|
||||
systemSupportsDynamicColors() -> Theme.M3Dynamic
|
||||
else -> Theme.None
|
||||
}
|
||||
return Theme.PEPTIDE_DARK
|
||||
}
|
||||
|
||||
fun isThemeDark(theme: Theme, systemIsDark: Boolean): Boolean {
|
||||
return when (theme) {
|
||||
Theme.M3Dynamic, Theme.None -> systemIsDark
|
||||
Theme.M3Dynamic,
|
||||
Theme.PEPTIDE_DARK -> true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -485,6 +485,13 @@
|
|||
<string name="add_server_sheet_step_1c_name_error_range">Server name can be up to %1$d characters in length.</string>
|
||||
<string name="add_server_sheet_step_1c_error">An error occurred while creating your server. Please try again later.</string>
|
||||
<string name="add_server_sheet_step_1c_create">Create</string>
|
||||
<string name="add_server_sheet_title">Add to server</string>
|
||||
<string name="add_server_sheet_join_by_invite_modal_title">Invite code or link</string>
|
||||
<string name="add_server_sheet_join_by_invite_modal_hint">Invite code or link</string>
|
||||
<string name="add_server_sheet_join_by_invite_modal_join">Join</string>
|
||||
<string name="add_server_sheet_create_new">Create a new server</string>
|
||||
<string name="add_server_sheet_create_new_modal_title">Create a new server</string>
|
||||
<string name="add_server_sheet_create_new_modal_under_construction">This feature is currently under construction.</string>
|
||||
|
||||
<string name="discover">Discover Peptide</string>
|
||||
|
||||
|
|
@ -695,7 +702,7 @@
|
|||
<string name="settings_appearance_theme_peptide">Peptide</string>
|
||||
<string name="settings_appearance_theme_light">Light</string>
|
||||
<string name="settings_appearance_theme_amoled">Pure Black</string>
|
||||
<string name="settings_appearance_theme_m3dynamic">Material You</string>
|
||||
<string name="settings_appearance_theme_m3dynamic">Material</string>
|
||||
<string name="settings_appearance_theme_m3dynamic_unsupported">Material You (unsupported)</string>
|
||||
<string name="settings_appearance_theme_m3dynamic_unsupported_toast">Material You is not supported on this device.</string>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue