mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Make blog post author clickable when not already in their blog
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user