Skip to content

Commit 802a094

Browse files
committed
Improve comment replies dialog layout
1 parent e6b1341 commit 802a094

2 files changed

Lines changed: 53 additions & 43 deletions

File tree

app/src/main/java/org/schabi/newpipe/ui/components/video/comment/CommentRepliesDialog.kt

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import androidx.compose.foundation.lazy.LazyColumn
66
import androidx.compose.foundation.lazy.rememberLazyListState
77
import androidx.compose.material3.ExperimentalMaterial3Api
88
import androidx.compose.material3.HorizontalDivider
9-
import androidx.compose.material3.MaterialTheme
109
import androidx.compose.material3.ModalBottomSheet
11-
import androidx.compose.material3.Surface
1210
import androidx.compose.runtime.Composable
1311
import androidx.compose.runtime.remember
1412
import androidx.compose.runtime.rememberCoroutineScope
@@ -65,41 +63,42 @@ private fun CommentRepliesDialog(
6563
val state = rememberLazyListState()
6664

6765
ModalBottomSheet(onDismissRequest = onDismissRequest) {
68-
Surface(color = MaterialTheme.colorScheme.background) {
69-
LazyColumnScrollbar(
70-
state = state,
71-
settings = ScrollbarSettings.Default.copy(
72-
thumbSelectedColor = md_theme_dark_primary,
73-
thumbUnselectedColor = Color.Red
74-
)
66+
LazyColumnScrollbar(
67+
state = state,
68+
settings = ScrollbarSettings.Default.copy(
69+
thumbSelectedColor = md_theme_dark_primary,
70+
thumbUnselectedColor = Color.Red
71+
)
72+
) {
73+
LazyColumn(
74+
modifier = Modifier.nestedScroll(nestedScrollInterop),
75+
state = state
7576
) {
76-
LazyColumn(
77-
modifier = Modifier.nestedScroll(nestedScrollInterop),
78-
state = state
79-
) {
80-
item {
81-
CommentRepliesHeader(comment = parentComment)
82-
HorizontalDivider(thickness = 1.dp)
83-
}
77+
item {
78+
CommentRepliesHeader(comment = parentComment)
79+
HorizontalDivider(
80+
thickness = 1.dp,
81+
modifier = Modifier.padding(start = 24.dp, end = 24.dp, bottom = 8.dp)
82+
)
83+
}
8484

85-
if (comments.itemCount == 0) {
86-
item {
87-
val refresh = comments.loadState.refresh
88-
if (refresh is LoadState.Loading) {
89-
LoadingIndicator(modifier = Modifier.padding(top = 8.dp))
85+
if (comments.itemCount == 0) {
86+
item {
87+
val refresh = comments.loadState.refresh
88+
if (refresh is LoadState.Loading) {
89+
LoadingIndicator(modifier = Modifier.padding(top = 8.dp))
90+
} else {
91+
val message = if (refresh is LoadState.Error) {
92+
R.string.error_unable_to_load_comments
9093
} else {
91-
val message = if (refresh is LoadState.Error) {
92-
R.string.error_unable_to_load_comments
93-
} else {
94-
R.string.no_comments
95-
}
96-
NoItemsMessage(message)
94+
R.string.no_comments
9795
}
96+
NoItemsMessage(message)
9897
}
99-
} else {
100-
items(comments.itemCount) {
101-
Comment(comment = comments[it]!!)
102-
}
98+
}
99+
} else {
100+
items(comments.itemCount) {
101+
Comment(comment = comments[it]!!)
103102
}
104103
}
105104
}

app/src/main/java/org/schabi/newpipe/ui/components/video/comment/CommentRepliesHeader.kt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.ui.draw.clip
2020
import androidx.compose.ui.platform.LocalContext
2121
import androidx.compose.ui.res.painterResource
2222
import androidx.compose.ui.res.stringResource
23+
import androidx.compose.ui.text.style.TextOverflow
2324
import androidx.compose.ui.tooling.preview.Preview
2425
import androidx.compose.ui.unit.dp
2526
import coil.compose.AsyncImage
@@ -43,11 +44,13 @@ fun CommentRepliesHeader(comment: CommentsInfoItem) {
4344
verticalAlignment = Alignment.CenterVertically
4445
) {
4546
Row(
46-
modifier = Modifier.clickable {
47-
NavigationHelper.openCommentAuthorIfPresent(context, comment)
48-
},
47+
modifier = Modifier
48+
.padding(end = 12.dp)
49+
.clip(CircleShape)
50+
.clickable { NavigationHelper.openCommentAuthorIfPresent(context, comment) }
51+
.weight(1.0f, true),
4952
horizontalArrangement = Arrangement.spacedBy(8.dp),
50-
verticalAlignment = Alignment.CenterVertically
53+
verticalAlignment = Alignment.CenterVertically,
5154
) {
5255
AsyncImage(
5356
model = ImageStrategy.choosePreferredImage(comment.uploaderAvatars),
@@ -60,14 +63,18 @@ fun CommentRepliesHeader(comment: CommentsInfoItem) {
6063
)
6164

6265
Column {
63-
Text(text = comment.uploaderName)
66+
Text(
67+
text = comment.uploaderName,
68+
maxLines = 1,
69+
overflow = TextOverflow.Ellipsis,
70+
style = MaterialTheme.typography.titleSmall,
71+
)
6472

6573
Text(
66-
color = MaterialTheme.colorScheme.secondary,
67-
style = MaterialTheme.typography.bodySmall,
6874
text = Localization.relativeTimeOrTextual(
6975
context, comment.uploadDate, comment.textualUploadDate
70-
)
76+
),
77+
style = MaterialTheme.typography.bodySmall,
7178
)
7279
}
7380
}
@@ -80,7 +87,10 @@ fun CommentRepliesHeader(comment: CommentsInfoItem) {
8087
painter = painterResource(R.drawable.ic_thumb_up),
8188
contentDescription = stringResource(R.string.detail_likes_img_view_description)
8289
)
83-
Text(text = Localization.likeCount(context, comment.likeCount))
90+
Text(
91+
text = Localization.likeCount(context, comment.likeCount),
92+
maxLines = 1,
93+
)
8494

8595
if (comment.isHeartedByUploader) {
8696
Image(
@@ -100,7 +110,8 @@ fun CommentRepliesHeader(comment: CommentsInfoItem) {
100110

101111
DescriptionText(
102112
description = comment.commentText,
103-
style = MaterialTheme.typography.bodyMedium
113+
style = MaterialTheme.typography.bodyMedium,
114+
modifier = Modifier.padding(8.dp)
104115
)
105116
}
106117
}
@@ -111,7 +122,7 @@ fun CommentRepliesHeader(comment: CommentsInfoItem) {
111122
fun CommentRepliesHeaderPreview() {
112123
val comment = CommentsInfoItem(
113124
commentText = Description("Hello world!", Description.PLAIN_TEXT),
114-
uploaderName = "Test",
125+
uploaderName = "Test really long lorem ipsum dolor sit",
115126
likeCount = 1000,
116127
isPinned = true,
117128
isHeartedByUploader = true

0 commit comments

Comments
 (0)