Make blog post author clickable when not already in their blog

This commit is contained in:
Torsten Grote
2021-03-17 10:33:29 -03:00
parent 2f969775d8
commit 726ebcea3f
6 changed files with 20 additions and 14 deletions

View File

@@ -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);
}

View File

@@ -15,9 +15,10 @@ import androidx.recyclerview.widget.ListAdapter;
@ParametersNotNullByDefault
class BlogPostAdapter extends ListAdapter<BlogPostItem, BlogPostViewHolder> {
private final boolean authorClickable;
private final OnBlogPostClickListener listener;
BlogPostAdapter(OnBlogPostClickListener listener) {
BlogPostAdapter(boolean authorClickable, OnBlogPostClickListener listener) {
super(new DiffUtil.ItemCallback<BlogPostItem>() {
@Override
public boolean areItemsTheSame(BlogPostItem a, BlogPostItem b) {
@@ -29,6 +30,7 @@ class BlogPostAdapter extends ListAdapter<BlogPostItem, BlogPostViewHolder> {
return a.isRead() == b.isRead();
}
});
this.authorClickable = authorClickable;
this.listener = listener;
}
@@ -37,7 +39,7 @@ class BlogPostAdapter extends ListAdapter<BlogPostItem, BlogPostViewHolder> {
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

View File

@@ -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)

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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);
}