Skip to content
Snippets Groups Projects
Verified Commit cd42c925 authored by Torsten Grote's avatar Torsten Grote
Browse files

Show tooltip for clickable authors in blogs

to explain that clicking them will open their blog.
parent 18772e31
No related branches found
No related tags found
1 merge request!357Blog navigation + Let unread FABs info depend on (unread) posts
...@@ -68,6 +68,7 @@ import org.briarproject.briar.desktop.ui.HorizontalDivider ...@@ -68,6 +68,7 @@ import org.briarproject.briar.desktop.ui.HorizontalDivider
import org.briarproject.briar.desktop.ui.Tooltip import org.briarproject.briar.desktop.ui.Tooltip
import org.briarproject.briar.desktop.ui.TrustIndicatorShort import org.briarproject.briar.desktop.ui.TrustIndicatorShort
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nF
import org.briarproject.briar.desktop.utils.PreviewUtils.preview import org.briarproject.briar.desktop.utils.PreviewUtils.preview
import org.briarproject.briar.desktop.utils.TimeUtils.getFormattedTimestamp import org.briarproject.briar.desktop.utils.TimeUtils.getFormattedTimestamp
import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName
...@@ -166,6 +167,10 @@ private fun BlogPostViewHeader( ...@@ -166,6 +167,10 @@ private fun BlogPostViewHeader(
onAuthorClicked = if (onAuthorClicked == null) null else { onAuthorClicked = if (onAuthorClicked == null) null else {
{ onAuthorClicked(item.header.groupId) } { onAuthorClicked(item.header.groupId) }
}, },
authorClickTooltip = if (onAuthorClicked == null) null else {
val name = getContactDisplayName(item.header.author.name, item.header.authorInfo.alias)
i18nF("blog.open.from.author", name)
},
) )
if (item is BlogCommentItem) { if (item is BlogCommentItem) {
val postHeader = item.postHeader val postHeader = item.postHeader
...@@ -176,6 +181,9 @@ private fun BlogPostViewHeader( ...@@ -176,6 +181,9 @@ private fun BlogPostViewHeader(
onAuthorClicked = if (onAuthorClicked == null) null else { onAuthorClicked = if (onAuthorClicked == null) null else {
{ onAuthorClicked(item.postHeader.groupId) } { onAuthorClicked(item.postHeader.groupId) }
}, },
authorClickTooltip = if (onAuthorClicked == null) null else {
i18nF("blog.open.from.author", item.postHeader.author.name)
},
) )
} }
} }
...@@ -188,11 +196,13 @@ private fun BlogPostViewHeader( ...@@ -188,11 +196,13 @@ private fun BlogPostViewHeader(
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
private fun RepeatAuthorView( private fun RepeatAuthorView(
item: BlogPost, item: BlogPost,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onAuthorClicked: (() -> Unit)?, onAuthorClicked: (() -> Unit)?,
authorClickTooltip: String? = null,
) { ) {
val author = item.author val author = item.author
val authorInfo = item.authorInfo val authorInfo = item.authorInfo
...@@ -201,10 +211,13 @@ private fun RepeatAuthorView( ...@@ -201,10 +211,13 @@ private fun RepeatAuthorView(
horizontalArrangement = spacedBy(8.dp), horizontalArrangement = spacedBy(8.dp),
verticalAlignment = CenterVertically, verticalAlignment = CenterVertically,
modifier = modifier, modifier = modifier,
) {
Tooltip(
text = authorClickTooltip ?: "",
modifier = Modifier.weight(1f),
) { ) {
Row( Row(
modifier = Modifier.weight(1f) modifier = Modifier.modifyIf(onAuthorClicked != null, Modifier.clickable { onAuthorClicked?.invoke() }),
.modifyIf(onAuthorClicked != null, Modifier.clickable { onAuthorClicked?.invoke() }),
horizontalArrangement = spacedBy(8.dp), horizontalArrangement = spacedBy(8.dp),
verticalAlignment = CenterVertically, verticalAlignment = CenterVertically,
) { ) {
...@@ -233,6 +246,7 @@ private fun RepeatAuthorView( ...@@ -233,6 +246,7 @@ private fun RepeatAuthorView(
) )
TrustIndicatorShort(authorInfo.status) TrustIndicatorShort(authorInfo.status)
} }
}
Text( Text(
text = getFormattedTimestamp(timestamp), text = getFormattedTimestamp(timestamp),
textAlign = TextAlign.End, textAlign = TextAlign.End,
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
package org.briarproject.briar.desktop.ui package org.briarproject.briar.desktop.ui
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Arrangement.spacedBy
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
...@@ -39,6 +40,7 @@ import org.briarproject.briar.desktop.utils.TimeUtils ...@@ -39,6 +40,7 @@ import org.briarproject.briar.desktop.utils.TimeUtils
import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName
import org.briarproject.briar.desktop.utils.UiUtils.modifyIf import org.briarproject.briar.desktop.utils.UiUtils.modifyIf
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun AuthorView( fun AuthorView(
author: Author, author: Author,
...@@ -47,15 +49,19 @@ fun AuthorView( ...@@ -47,15 +49,19 @@ fun AuthorView(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
avatarSize: Dp = 27.dp, avatarSize: Dp = 27.dp,
onAuthorClicked: (() -> Unit)? = null, onAuthorClicked: (() -> Unit)? = null,
authorClickTooltip: String? = null,
) { ) {
Row( Row(
modifier = modifier, modifier = modifier,
horizontalArrangement = spacedBy(8.dp), horizontalArrangement = spacedBy(8.dp),
verticalAlignment = CenterVertically, verticalAlignment = CenterVertically,
) {
Tooltip(
text = authorClickTooltip ?: "",
modifier = Modifier.weight(1f),
) { ) {
Row( Row(
modifier = Modifier.weight(1f) modifier = Modifier.modifyIf(onAuthorClicked != null, Modifier.clickable { onAuthorClicked?.invoke() }),
.modifyIf(onAuthorClicked != null, Modifier.clickable { onAuthorClicked?.invoke() }),
horizontalArrangement = spacedBy(8.dp), horizontalArrangement = spacedBy(8.dp),
verticalAlignment = CenterVertically, verticalAlignment = CenterVertically,
) { ) {
...@@ -69,6 +75,7 @@ fun AuthorView( ...@@ -69,6 +75,7 @@ fun AuthorView(
) )
TrustIndicatorShort(authorInfo.status) TrustIndicatorShort(authorInfo.status)
} }
}
Text( Text(
text = TimeUtils.getFormattedTimestamp(timestamp), text = TimeUtils.getFormattedTimestamp(timestamp),
textAlign = TextAlign.End, textAlign = TextAlign.End,
......
...@@ -222,6 +222,7 @@ blog.empty.state=No posts to show ...@@ -222,6 +222,7 @@ blog.empty.state=No posts to show
blog.post.reply.intro=Reblog this post: blog.post.reply.intro=Reblog this post:
blog.post.hint=Type your blog post blog.post.hint=Type your blog post
blog.post.reply.hint=Add a comment (optional) blog.post.reply.hint=Add a comment (optional)
blog.open.from.author=Open blog of {0}
# Introduction # Introduction
introduction.introduce=Make Introduction introduction.introduce=Make Introduction
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment