Add boost click handling

This commit is contained in:
Ivan Kupalov 2017-06-28 11:10:56 +03:00
parent afa21f5a5c
commit 0f15509345
7 changed files with 39 additions and 6 deletions

View file

@ -17,7 +17,7 @@ class AccountViewHolder extends RecyclerView.ViewHolder {
private TextView username;
private TextView displayName;
private CircularImageView avatar;
private String id;
private String accountId;
AccountViewHolder(View itemView) {
super(itemView);
@ -28,7 +28,7 @@ class AccountViewHolder extends RecyclerView.ViewHolder {
}
void setupWithAccount(Account account) {
id = account.id;
accountId = account.id;
String format = username.getContext().getString(R.string.status_username_format);
String formattedUsername = String.format(format, account.username);
username.setText(formattedUsername);
@ -45,7 +45,7 @@ class AccountViewHolder extends RecyclerView.ViewHolder {
container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onViewAccount(id);
listener.onViewAccount(accountId);
}
});
}
@ -54,7 +54,7 @@ class AccountViewHolder extends RecyclerView.ViewHolder {
container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onViewAccount(id);
listener.onViewAccount(accountId);
}
});
}

View file

@ -425,8 +425,8 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
container.setOnClickListener(viewThreadListener);
}
void setupWithStatus(Status status, StatusActionListener listener,
boolean mediaPreviewEnabled) {
void setupWithStatus(Status status, final StatusActionListener listener,
boolean mediaPreviewEnabled) {
Status realStatus = status.getActionableStatus();
setDisplayName(realStatus.account.getDisplayName());
@ -474,5 +474,15 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
} else {
setSpoilerText(realStatus.spoilerText);
}
// I think it's not efficient to create new object every time we bind a holder.
// More efficient approach would be creating View.OnClickListener during holder creation
// and storing StatusActionListener in a variable after binding.
rebloggedBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onOpenReblog(getAdapterPosition());
}
});
}
}

View file

@ -225,6 +225,12 @@ public class NotificationsFragment extends SFragment implements
super.viewThread(notification.status);
}
@Override
public void onOpenReblog(int position) {
Notification notification = adapter.getItem(position);
if (notification != null) onViewAccount(notification.account.id);
}
@Override
public void onViewTag(String tag) {
super.viewTag(tag);

View file

@ -169,6 +169,11 @@ public abstract class SFragment extends BaseFragment {
callList.add(call);
}
protected void openReblog(@Nullable final Status status) {
if (status == null) return;
viewAccount(status.account.id);
}
private void mute(String id) {
Call<Relationship> call = mastodonApi.muteAccount(id);
call.enqueue(new Callback<Relationship>() {

View file

@ -246,6 +246,11 @@ public class TimelineFragment extends SFragment implements
super.more(adapter.getItem(position), view, adapter, position);
}
@Override
public void onOpenReblog(int position) {
super.openReblog(adapter.getItem(position));
}
@Override
public void onViewMedia(String[] urls, int urlIndex, Status.MediaAttachment.Type type) {
super.viewMedia(urls, urlIndex, type);

View file

@ -158,6 +158,12 @@ public class ViewThreadFragment extends SFragment implements
super.viewThread(status);
}
@Override
public void onOpenReblog(int position) {
// there should be no reblogs in the thread but let's implement it to be sure
super.openReblog(adapter.getItem(position));
}
@Override
public void onViewTag(String tag) {
super.viewTag(tag);

View file

@ -26,4 +26,5 @@ public interface StatusActionListener extends LinkListener {
void onMore(View view, final int position);
void onViewMedia(String[] urls, int index, Status.MediaAttachment.Type type);
void onViewThread(int position);
void onOpenReblog(int position);
}