From 726ebcea3f6d6389538fdac18e3566300a235426 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 17 Mar 2021 10:33:29 -0300 Subject: [PATCH] Make blog post author clickable when not already in their blog --- .../org/briarproject/briar/android/blog/BlogFragment.java | 4 ++-- .../briarproject/briar/android/blog/BlogPostAdapter.java | 6 ++++-- .../briarproject/briar/android/blog/BlogPostFragment.java | 8 ++++++-- .../briar/android/blog/BlogPostViewHolder.java | 8 ++++---- .../org/briarproject/briar/android/blog/FeedFragment.java | 6 +++--- .../briarproject/briar/android/blog/ReblogFragment.java | 2 +- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java index 079410e1c..d9a7a0284 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java @@ -54,7 +54,7 @@ public class BlogFragment extends BaseFragment private GroupId groupId; private BlogViewModel viewModel; - private final BlogPostAdapter adapter = new BlogPostAdapter(this); + private final BlogPostAdapter adapter = new BlogPostAdapter(false, this); private BriarRecyclerView list; static BlogFragment newInstance(GroupId groupId) { @@ -192,7 +192,7 @@ public class BlogFragment extends BaseFragment @Override public void onBlogPostClick(BlogPostItem post) { BlogPostFragment f = - BlogPostFragment.newInstance(groupId, post.getId()); + BlogPostFragment.newInstance(groupId, post.getId(), false); showNextFragment(f); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java index 00d051e39..484a6b13e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java @@ -15,9 +15,10 @@ import androidx.recyclerview.widget.ListAdapter; @ParametersNotNullByDefault class BlogPostAdapter extends ListAdapter { + private final boolean authorClickable; private final OnBlogPostClickListener listener; - BlogPostAdapter(OnBlogPostClickListener listener) { + BlogPostAdapter(boolean authorClickable, OnBlogPostClickListener listener) { super(new DiffUtil.ItemCallback() { @Override public boolean areItemsTheSame(BlogPostItem a, BlogPostItem b) { @@ -29,6 +30,7 @@ class BlogPostAdapter extends ListAdapter { return a.isRead() == b.isRead(); } }); + this.authorClickable = authorClickable; this.listener = listener; } @@ -37,7 +39,7 @@ class BlogPostAdapter extends ListAdapter { int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate( R.layout.list_item_blog_post, parent, false); - return new BlogPostViewHolder(v, false, listener); + return new BlogPostViewHolder(v, false, listener, authorClickable); } @Override diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java index 77043d276..605597e59 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java @@ -44,6 +44,7 @@ public class BlogPostFragment extends BaseFragment private static final Logger LOG = getLogger(TAG); static final String POST_ID = "briar.POST_ID"; + static final String IS_FEED = "briar.IS_FEED"; protected BlogViewModel viewModel; private final Handler handler = new Handler(Looper.getMainLooper()); @@ -56,11 +57,13 @@ public class BlogPostFragment extends BaseFragment @Inject ViewModelProvider.Factory viewModelFactory; - static BlogPostFragment newInstance(GroupId blogId, MessageId postId) { + static BlogPostFragment newInstance(GroupId blogId, MessageId postId, + boolean isFeed) { BlogPostFragment f = new BlogPostFragment(); Bundle bundle = new Bundle(); bundle.putByteArray(GROUP_ID, blogId.getBytes()); bundle.putByteArray(POST_ID, postId.getBytes()); + bundle.putBoolean(IS_FEED, isFeed); f.setArguments(bundle); return f; } @@ -82,12 +85,13 @@ public class BlogPostFragment extends BaseFragment new GroupId(requireNonNull(args.getByteArray(GROUP_ID))); MessageId postId = new MessageId(requireNonNull(args.getByteArray(POST_ID))); + boolean isFeed = args.getBoolean(IS_FEED); View view = inflater.inflate(R.layout.fragment_blog_post, container, false); progressBar = view.findViewById(R.id.progressBar); progressBar.setVisibility(VISIBLE); - ui = new BlogPostViewHolder(view, true, this); + ui = new BlogPostViewHolder(view, true, this, isFeed); LifecycleOwner owner = getViewLifecycleOwner(); viewModel.loadBlogPost(groupId, postId).observe(owner, result -> result.onError(this::handleException) 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 a2d883f9f..5f1648e6a 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 @@ -33,7 +33,6 @@ import static org.briarproject.briar.android.util.UiUtils.makeLinksClickable; import static org.briarproject.briar.android.view.AuthorView.COMMENTER; import static org.briarproject.briar.android.view.AuthorView.REBLOGGER; import static org.briarproject.briar.android.view.AuthorView.RSS_FEED_REBLOGGED; -import static org.briarproject.briar.api.blog.MessageType.POST; @UiThread @NotNullByDefault @@ -46,15 +45,16 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { private final ImageButton reblogButton; private final TextView text; private final ViewGroup commentContainer; - private final boolean fullText; + private final boolean fullText, authorClickable; private final OnBlogPostClickListener listener; BlogPostViewHolder(View v, boolean fullText, - OnBlogPostClickListener listener) { + OnBlogPostClickListener listener, boolean authorClickable) { super(v); this.fullText = fullText; this.listener = listener; + this.authorClickable = authorClickable; ctx = v.getContext(); layout = v.findViewById(R.id.postLayout); @@ -97,7 +97,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder { author.setPersona( item.isRssFeed() ? AuthorView.RSS_FEED : AuthorView.NORMAL); // TODO make author clickable more often #624 - if (!fullText && item.getHeader().getType() == POST) { + if (authorClickable) { author.setAuthorClickable(v -> listener.onAuthorClick(item)); } else { author.setAuthorNotClickable(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java index 6e4718576..4ea4611a6 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java @@ -42,7 +42,7 @@ public class FeedFragment extends BaseFragment ViewModelProvider.Factory viewModelFactory; private FeedViewModel viewModel; - private final BlogPostAdapter adapter = new BlogPostAdapter(this); + private final BlogPostAdapter adapter = new BlogPostAdapter(true, this); private LinearLayoutManager layoutManager; private BriarRecyclerView list; @@ -147,8 +147,8 @@ public class FeedFragment extends BaseFragment @Override public void onBlogPostClick(BlogPostItem post) { - BaseFragment f = - BlogPostFragment.newInstance(post.getGroupId(), post.getId()); + BaseFragment f = BlogPostFragment + .newInstance(post.getGroupId(), post.getId(), true); showNextFragment(f); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java index a10a47bae..003c7efe9 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java @@ -142,7 +142,7 @@ public class ReblogFragment extends BaseFragment implements SendListener { scrollView = v.findViewById(R.id.scrollView); progressBar = v.findViewById(R.id.progressBar); post = new BlogPostViewHolder(v.findViewById(R.id.postLayout), - true, this); + true, this, false); input = v.findViewById(R.id.inputText); }