diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java index 92c75f187314745c2c798583a6da9cd9e9d8e4e8..70ae123b3e395c76720146db7505674835772f57 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java @@ -14,7 +14,6 @@ import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.TextView; -import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.briar.R; import org.briarproject.briar.android.view.AuthorView; @@ -98,9 +97,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { // author and date BlogPostHeader post = item.getPostHeader(); - Author a = post.getAuthor(); - author.setAuthor(a); - author.setAuthorInfo(post.getAuthorInfo()); + author.setAuthor(post.getAuthor(), post.getAuthorInfo()); author.setDate(post.getTimestamp()); author.setPersona( item.isRssFeed() ? AuthorView.RSS_FEED : AuthorView.NORMAL); @@ -143,8 +140,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { private void onBindComment(BlogCommentItem item) { // reblogger - reblogger.setAuthor(item.getAuthor()); - reblogger.setAuthorInfo(item.getAuthorInfo()); + reblogger.setAuthor(item.getAuthor(), item.getAuthorInfo()); reblogger.setDate(item.getTimestamp()); if (!fullText) { reblogger.setAuthorClickable(v -> listener.onAuthorClick(item)); @@ -165,8 +161,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { AuthorView author = v.findViewById(R.id.authorView); TextView text = v.findViewById(R.id.textView); - author.setAuthor(c.getAuthor()); - author.setAuthorInfo(c.getAuthorInfo()); + author.setAuthor(c.getAuthor(), c.getAuthorInfo()); author.setDate(c.getTimestamp()); // TODO make author clickable #624 diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java index accaced350ef942df4167b48ecb8106518d33df3..6ccab7c6387f11790d79d3d85f2835c896e76747 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java @@ -31,8 +31,7 @@ class MemberListItemHolder extends RecyclerView.ViewHolder { protected void bind(MemberListItem item) { // member name, avatar and author info - author.setAuthor(item.getMember()); - author.setAuthorInfo(item.getAuthorInfo()); + author.setAuthor(item.getMember(), item.getAuthorInfo()); // online status of visible contacts if (item.getContactId() != null) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java index a88f709ed1572f5e3e9eecc7fc43a5384ebc1fb9..529fa7d0013ab617acf79c4384d41ea0d4970290 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java @@ -43,9 +43,8 @@ public abstract class BaseThreadItemViewHolder<I extends ThreadItem> public void bind(I item, ThreadItemListener<I> listener) { textView.setText(StringUtils.trim(item.getText())); - author.setAuthor(item.getAuthor()); + author.setAuthor(item.getAuthor(), item.getAuthorInfo()); author.setDate(item.getTimestamp()); - author.setAuthorInfo(item.getAuthorInfo()); if (item.isHighlighted()) { layout.setActivated(true); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java index ff18520f4d4ade8b28e8c928666505120b8e0343..12cbbb134474c2c16b1e02c1d7adf35828b9c968 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java @@ -33,7 +33,9 @@ import android.view.View; import android.widget.TextView; import org.acra.ACRA; +import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; +import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.system.AndroidExecutor; @@ -74,6 +76,17 @@ public class UiUtils { public static final int TEASER_LENGTH = 320; public static final float GREY_OUT = 0.5f; + public static String getContactDisplayName(Author author, + @Nullable String alias) { + String name = author.getName(); + if (alias == null) return name; + else return String.format("%s (%s)", alias, name); + } + + public static String getContactDisplayName(Contact c) { + return getContactDisplayName(c.getAuthor(), c.getAlias()); + } + public static void setError(TextInputLayout til, @Nullable String error, boolean set) { if (set) { @@ -127,7 +140,9 @@ public class UiUtils { return builder; } - public static Spanned getSpanned(String s) { + public static Spanned getSpanned(@Nullable String s) { + // TODO move to HtmlCompat + // https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.html return Html.fromHtml(s); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java index 783c3dcd09cca33dfc1bcce7c5d3cfc9d5bbdcca..86994db22b94c2d4cf37e4ea28784ef3dd9322fa 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/AuthorView.java @@ -26,6 +26,7 @@ import static android.graphics.Typeface.BOLD; import static android.util.TypedValue.COMPLEX_UNIT_PX; import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE; import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES; +import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName; import static org.briarproject.briar.android.util.UiUtils.resolveAttribute; @UiThread @@ -70,16 +71,12 @@ public class AuthorView extends ConstraintLayout { this(context, null); } - public void setAuthor(Author author) { - authorName.setText(author.getName()); + public void setAuthor(Author author, AuthorInfo authorInfo) { + authorName + .setText(getContactDisplayName(author, authorInfo.getAlias())); IdenticonDrawable d = new IdenticonDrawable(author.getId().getBytes()); avatar.setImageDrawable(d); - invalidate(); - requestLayout(); - } - - public void setAuthorInfo(AuthorInfo authorInfo) { if (authorInfo.getStatus() != NONE) { trustIndicator.setTrustLevel(authorInfo.getStatus()); trustIndicator.setVisibility(VISIBLE); @@ -123,7 +120,7 @@ public class AuthorView extends ConstraintLayout { * * Attention: RSS_FEED and RSS_FEED_REBLOGGED change the avatar * and override the one set by - * {@link AuthorView#setAuthor(Author)}. + * {@link AuthorView#setAuthor(Author, AuthorInfo)}. */ public void setPersona(int persona) { switch (persona) {