Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
Expand Down Expand Up @@ -57,6 +56,7 @@ import dev.ipf.marmotkit.MarkdownNostrHrpFfi
import dev.ipf.marmotkit.MarkdownTableCellFfi
import dev.ipf.whitenoise.android.R
import dev.ipf.whitenoise.android.core.ProfileSanitizer
import dev.ipf.whitenoise.android.ui.theme.AppDivider
import java.util.Locale

/**
Expand Down Expand Up @@ -298,7 +298,7 @@ private fun MarkdownBlockView(
onTextLayout = { onTextLayout?.invoke(it) },
)
MarkdownBlockFfi.ThematicBreak ->
HorizontalDivider(color = LocalContentColor.current.copy(alpha = 0.25f))
AppDivider()
is MarkdownBlockFfi.CodeBlock -> MarkdownCodeBlockView(block.content)
is MarkdownBlockFfi.BlockQuote -> MarkdownBlockQuoteView(block.blocks, ctx, depth)
is MarkdownBlockFfi.ListBlock -> MarkdownListView(block, ctx, depth)
Expand Down Expand Up @@ -426,7 +426,7 @@ private fun MarkdownTableView(
val rowsElided = markdownSiblingsElided(block.rows)
Column(Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(4.dp)) {
MarkdownTableRowView(block.header, block.alignments, header = true, ctx)
HorizontalDivider(color = LocalContentColor.current.copy(alpha = 0.25f))
AppDivider()
visibleRows.forEach { row ->
MarkdownTableRowView(row, block.alignments, header = false, ctx)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.ListItem
Expand Down Expand Up @@ -62,6 +61,7 @@ import dev.ipf.whitenoise.android.ui.common.UnreadCountBadge
import dev.ipf.whitenoise.android.ui.profile.AvatarFullScreenViewer
import dev.ipf.whitenoise.android.ui.profile.rememberAvatarImageAvailable
import dev.ipf.whitenoise.android.ui.settings.settingsRowAmoledSurfaceBorder
import dev.ipf.whitenoise.android.ui.theme.AppDivider
import dev.ipf.whitenoise.android.ui.theme.amoledSheetContainerColor
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorder
import kotlinx.coroutines.CancellationException
Expand Down Expand Up @@ -245,7 +245,7 @@ internal fun AccountSelectorSheet(
}
},
)
HorizontalDivider()
AppDivider()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import androidx.compose.material.icons.filled.Group
import androidx.compose.material3.Button
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.MenuDefaults
Expand Down Expand Up @@ -57,6 +56,7 @@ import dev.ipf.whitenoise.android.core.MessageDebugClassifier
import dev.ipf.whitenoise.android.state.WhiteNoiseAppState
import dev.ipf.whitenoise.android.ui.common.rememberGroupSystemCopy
import dev.ipf.whitenoise.android.ui.group.disappearingMessagesLabel
import dev.ipf.whitenoise.android.ui.theme.AppDivider
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
import java.time.Instant
import java.time.LocalDate
Expand All @@ -76,9 +76,8 @@ internal fun UnreadMessagesDivider(count: Int) {
.padding(vertical = 12.dp),
verticalAlignment = Alignment.CenterVertically,
) {
HorizontalDivider(
AppDivider(
modifier = Modifier.weight(1f),
color = MaterialTheme.colorScheme.outlineVariant,
)
Text(
text = text,
Expand All @@ -92,9 +91,8 @@ internal fun UnreadMessagesDivider(count: Int) {
shape = RoundedCornerShape(12.dp),
).padding(horizontal = 10.dp, vertical = 4.dp),
)
HorizontalDivider(
AppDivider(
modifier = Modifier.weight(1f),
color = MaterialTheme.colorScheme.outlineVariant,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
Expand All @@ -34,6 +33,7 @@ import androidx.compose.ui.unit.dp
import dev.ipf.whitenoise.android.R
import dev.ipf.whitenoise.android.core.MentionComposer
import dev.ipf.whitenoise.android.ui.common.Avatar
import dev.ipf.whitenoise.android.ui.theme.AppDivider
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke

/**
Expand Down Expand Up @@ -64,7 +64,7 @@ internal fun MentionPicker(
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
)
HorizontalDivider(color = MaterialTheme.colorScheme.surfaceVariant)
AppDivider()
LazyColumn(Modifier.fillMaxWidth()) {
items(candidates, key = { it.accountIdHex }) { candidate ->
val mentionLabel = stringResource(R.string.mention_picker_member, candidate.displayName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.unit.dp
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha

internal enum class OpenAttachmentResult { Opened, NoHandler, Error }

Expand All @@ -47,7 +48,7 @@ internal fun MediaCircleAction(
Surface(
onClick = onClick,
shape = CircleShape,
color = Color.Black.copy(alpha = 0.55f),
color = Color.Black.copy(alpha = ScrimAlpha.Strong),
contentColor = Color.White,
modifier = modifier.size(52.dp),
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import dev.ipf.whitenoise.android.state.ConversationController
import dev.ipf.whitenoise.android.state.MediaAutoDownloadType
import dev.ipf.whitenoise.android.state.TimelineMessage
import dev.ipf.whitenoise.android.state.WhiteNoiseAppState
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -320,7 +321,7 @@ internal fun MediaImageBubble(
}
if (uploading) {
Surface(
color = Color.Black.copy(alpha = 0.55f),
color = Color.Black.copy(alpha = ScrimAlpha.Strong),
shape = CircleShape,
modifier = Modifier.size(48.dp),
) {
Expand Down Expand Up @@ -664,7 +665,7 @@ internal fun MediaImageGridTile(
modifier =
Modifier
.fillMaxSize()
.background(Color.Black.copy(alpha = 0.5f)),
.background(Color.Black.copy(alpha = ScrimAlpha.MediumEmphasis)),
contentAlignment = Alignment.Center,
) {
Text(
Expand All @@ -677,7 +678,7 @@ internal fun MediaImageGridTile(
}
if (uploading) {
Box(
modifier = Modifier.fillMaxSize().background(Color.Black.copy(alpha = 0.35f)),
modifier = Modifier.fillMaxSize().background(Color.Black.copy(alpha = ScrimAlpha.Light)),
contentAlignment = Alignment.Center,
) {
CircularProgressIndicator(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import androidx.compose.ui.unit.dp
import dev.ipf.whitenoise.android.R
import dev.ipf.whitenoise.android.media.MediaPipeline
import dev.ipf.whitenoise.android.state.PendingAttachment
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
Expand Down Expand Up @@ -103,7 +104,7 @@ internal fun MediaPendingPlaceholder(
contentScale = ContentScale.Crop,
modifier = Modifier.fillMaxSize(),
)
Box(Modifier.matchParentSize().background(Color.Black.copy(alpha = 0.35f)))
Box(Modifier.matchParentSize().background(Color.Black.copy(alpha = ScrimAlpha.Light)))
}
PendingStatusOverlay(
failed = failed,
Expand Down Expand Up @@ -136,7 +137,7 @@ internal fun MediaPendingPlaceholder(
)
}
Box(
Modifier.matchParentSize().background(Color.Black.copy(alpha = 0.35f)),
Modifier.matchParentSize().background(Color.Black.copy(alpha = ScrimAlpha.Light)),
)
PendingStatusOverlay(
failed = failed,
Expand Down Expand Up @@ -224,7 +225,7 @@ private fun PendingGridTile(
}
if (overflowCount > 0 && preview != null) {
Box(
Modifier.fillMaxSize().background(Color.Black.copy(alpha = 0.5f)),
Modifier.fillMaxSize().background(Color.Black.copy(alpha = ScrimAlpha.MediumEmphasis)),
contentAlignment = Alignment.Center,
) {
Text(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import dev.ipf.whitenoise.android.R
import dev.ipf.whitenoise.android.media.MediaPipeline
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.currentCoroutineContext
Expand Down Expand Up @@ -453,7 +454,7 @@ private fun HeroMediaPreview(
)
}
if (metadata?.isVideo == true) {
Surface(shape = CircleShape, color = Color.Black.copy(alpha = 0.55f)) {
Surface(shape = CircleShape, color = Color.Black.copy(alpha = ScrimAlpha.Strong)) {
Icon(
Icons.Default.PlayArrow,
contentDescription = stringResource(R.string.reply_media_video),
Expand Down Expand Up @@ -550,7 +551,7 @@ private fun PreviewStripThumb(
}
if (metadata?.isVideo == true) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
Surface(shape = CircleShape, color = Color.Black.copy(alpha = 0.55f)) {
Surface(shape = CircleShape, color = Color.Black.copy(alpha = ScrimAlpha.Strong)) {
Icon(
Icons.Default.PlayArrow,
contentDescription = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import dev.ipf.whitenoise.android.media.playbackErrorInvalidatesAttachmentCache
import dev.ipf.whitenoise.android.state.ConversationController
import dev.ipf.whitenoise.android.state.MediaAutoDownloadType
import dev.ipf.whitenoise.android.state.WhiteNoiseAppState
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CompletableDeferred
Expand Down Expand Up @@ -225,7 +226,7 @@ internal fun MediaVideoGridTile(
Box(modifier = Modifier.fillMaxSize().background(MaterialTheme.colorScheme.surface))
}
Surface(
color = Color.Black.copy(alpha = 0.55f),
color = Color.Black.copy(alpha = ScrimAlpha.Strong),
shape = CircleShape,
modifier =
Modifier
Expand Down Expand Up @@ -269,7 +270,7 @@ internal fun MediaVideoGridTile(
modifier =
Modifier
.matchParentSize()
.background(Color.Black.copy(alpha = 0.45f)),
.background(Color.Black.copy(alpha = ScrimAlpha.Medium)),
contentAlignment = Alignment.Center,
) {
Text(
Expand All @@ -281,7 +282,7 @@ internal fun MediaVideoGridTile(
}
if (uploading) {
Box(
modifier = Modifier.matchParentSize().background(Color.Black.copy(alpha = 0.35f)),
modifier = Modifier.matchParentSize().background(Color.Black.copy(alpha = ScrimAlpha.Light)),
contentAlignment = Alignment.Center,
) {
CircularProgressIndicator(
Expand Down Expand Up @@ -471,7 +472,7 @@ internal fun MediaVideoBubble(
// When startDownload is gated off (policy says no auto-fetch), the
// triangle becomes a download icon and tap consents to the fetch.
Surface(
color = Color.Black.copy(alpha = 0.55f),
color = Color.Black.copy(alpha = ScrimAlpha.Strong),
shape = CircleShape,
modifier =
Modifier
Expand Down Expand Up @@ -572,7 +573,7 @@ internal fun MediaVideoBubble(
// Duration pill bottom-start. Only shown once duration is known.
if (durationMs > 0L) {
Surface(
color = Color.Black.copy(alpha = 0.55f),
color = Color.Black.copy(alpha = ScrimAlpha.Strong),
shape = RoundedCornerShape(6.dp),
modifier =
Modifier
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ import dev.ipf.whitenoise.android.media.MediaPipeline
import dev.ipf.whitenoise.android.media.MediaReferenceParser
import dev.ipf.whitenoise.android.state.ConversationController
import dev.ipf.whitenoise.android.state.WhiteNoiseAppState
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.map
Expand Down Expand Up @@ -300,7 +301,7 @@ internal fun FullScreenMediaViewer(
.align(Alignment.BottomCenter)
.background(
Brush.verticalGradient(
listOf(Color.Transparent, Color.Black.copy(alpha = 0.6f)),
listOf(Color.Transparent, Color.Black.copy(alpha = ScrimAlpha.Gradient)),
),
).navigationBarsPadding()
.padding(horizontal = 16.dp, vertical = 12.dp),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import dev.ipf.whitenoise.android.R
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

Expand Down Expand Up @@ -271,7 +272,7 @@ private fun RecentThumb(
.align(Alignment.Center)
.size(24.dp)
.clip(CircleShape)
.background(Color.Black.copy(alpha = 0.5f)),
.background(Color.Black.copy(alpha = ScrimAlpha.MediumEmphasis)),
contentAlignment = Alignment.Center,
) {
Icon(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import androidx.compose.material.icons.filled.Info
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
Expand Down Expand Up @@ -82,6 +81,7 @@ import dev.ipf.whitenoise.android.ui.chats.newchat.SelectionIndicator
import dev.ipf.whitenoise.android.ui.common.rememberGroupTitleCopy
import dev.ipf.whitenoise.android.ui.design.KeyboardSafePopup
import dev.ipf.whitenoise.android.ui.resolveMentionsInPlaintext
import dev.ipf.whitenoise.android.ui.theme.AppDivider
import dev.ipf.whitenoise.android.ui.theme.Dimens
import dev.ipf.whitenoise.android.ui.theme.amoledSheetContainerColor
import dev.ipf.whitenoise.android.ui.theme.amoledSurfaceBorderStroke
Expand Down Expand Up @@ -243,7 +243,7 @@ internal fun MessageActionMenu(
)
}
}
HorizontalDivider()
AppDivider()
}
Column(
modifier = Modifier.fillMaxWidth(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import androidx.compose.ui.layout.Layout
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.dp
import dev.ipf.whitenoise.android.state.MessageStatus
import dev.ipf.whitenoise.android.ui.theme.ScrimAlpha

// Gap between a bubble's text and its trailing inline footer.
private val BubbleFooterGap = 8.dp
Expand All @@ -30,7 +31,7 @@ private fun MediaScrimFooter(
) {
Box(
modifier
.background(Color.Black.copy(alpha = 0.4f), RoundedCornerShape(percent = 50))
.background(Color.Black.copy(alpha = ScrimAlpha.LightEmphasis), RoundedCornerShape(percent = 50))
.padding(horizontal = 8.dp, vertical = 3.dp),
) {
content()
Expand Down
Loading
Loading