You can navigate to who favourited/reblogged you from clicking the notification now. Closes #11

This commit is contained in:
Vavassor 2017-03-20 16:34:23 -04:00
parent 4ff00ed62c
commit 9478cd4ea1
4 changed files with 26 additions and 12 deletions

View file

@ -43,13 +43,14 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
private List<Notification> notifications;
private StatusActionListener statusListener;
private FollowListener followListener;
private NotificationActionListener notificationActionListener;
NotificationsAdapter(StatusActionListener statusListener, FollowListener followListener) {
NotificationsAdapter(StatusActionListener statusListener,
NotificationActionListener notificationActionListener) {
super();
notifications = new ArrayList<>();
this.statusListener = statusListener;
this.followListener = followListener;
this.notificationActionListener = notificationActionListener;
}
@Override
@ -96,13 +97,14 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
StatusNotificationViewHolder holder = (StatusNotificationViewHolder) viewHolder;
holder.setMessage(type, notification.account.getDisplayName(),
notification.status);
holder.setupButtons(notificationActionListener, notification.account.id);
break;
}
case FOLLOW: {
FollowViewHolder holder = (FollowViewHolder) viewHolder;
holder.setMessage(notification.account.getDisplayName(), notification.account.username,
notification.account.avatar);
holder.setupButtons(followListener, notification.account.id);
holder.setupButtons(notificationActionListener, notification.account.id);
break;
}
}
@ -175,7 +177,7 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
notifyItemChanged(position);
}
interface FollowListener {
interface NotificationActionListener {
void onViewAccount(String id);
}
@ -213,7 +215,7 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
.into(avatar);
}
void setupButtons(final FollowListener listener, final String accountId) {
void setupButtons(final NotificationActionListener listener, final String accountId) {
avatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -227,12 +229,14 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
private TextView message;
private ImageView icon;
private TextView statusContent;
private ViewGroup container;
StatusNotificationViewHolder(View itemView) {
super(itemView);
message = (TextView) itemView.findViewById(R.id.notification_text);
icon = (ImageView) itemView.findViewById(R.id.notification_icon);
statusContent = (TextView) itemView.findViewById(R.id.notification_content);
container = (ViewGroup) itemView.findViewById(R.id.notification_container);
}
void setMessage(Notification.Type type, String displayName, Status status) {
@ -262,5 +266,14 @@ class NotificationsAdapter extends RecyclerView.Adapter implements AdapterItemRe
message.setText(str);
statusContent.setText(status.content);
}
void setupButtons(final NotificationActionListener listener, final String accountId) {
container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onViewAccount(accountId);
}
});
}
}
}

View file

@ -40,7 +40,7 @@ import retrofit2.Response;
public class NotificationsFragment extends SFragment implements
SwipeRefreshLayout.OnRefreshListener, StatusActionListener,
NotificationsAdapter.FollowListener {
NotificationsAdapter.NotificationActionListener {
private static final String TAG = "Notifications"; // logging tag
private SwipeRefreshLayout swipeRefreshLayout;

View file

@ -85,13 +85,13 @@ public class ViewMediaFragment extends DialogFragment {
}
});
/* An upward swipe motion also closes the viewer. This is especially useful when the photo
/* A vertical swipe motion also closes the viewer. This is especially useful when the photo
* mostly fills the screen so clicking outside is difficult. */
attacher.setOnSingleFlingListener(new PhotoViewAttacher.OnSingleFlingListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (velocityY < 0.0 && Math.abs(velocityY) > Math.abs(velocityX)) {
if (Math.abs(velocityY) > Math.abs(velocityX)) {
dismiss();
return true;
}

View file

@ -2,11 +2,12 @@
<!--This applies only to favourite and reblog notifications.-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/notification_container"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_height="wrap_content">
android:paddingRight="16dp">
<RelativeLayout
android:layout_width="match_parent"