Browse Source

Null check. Fixes https://github.com/austinhuang0131/barinsta/issues/1021

renovate/org.robolectric-robolectric-4.x
Ammar Githam 4 years ago
parent
commit
abd6fa1c28
  1. 5
      app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java
  2. 9
      app/src/main/java/awais/instagrabber/utils/DMUtils.java

5
app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java

@ -112,6 +112,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple
} }
public void bind(final int position, final DirectItem item) { public void bind(final int position, final DirectItem item) {
if (item == null) return;
this.item = item; this.item = item;
messageDirection = isSelf(item) ? MessageDirection.OUTGOING : MessageDirection.INCOMING; messageDirection = isSelf(item) ? MessageDirection.OUTGOING : MessageDirection.INCOMING;
// Asynchronous binding causes some weird behaviour // Asynchronous binding causes some weird behaviour
@ -123,7 +124,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple
setupLongClickListener(position, messageDirection); setupLongClickListener(position, messageDirection);
} }
private void bindBase(final DirectItem item, final MessageDirection messageDirection, final int position) {
private void bindBase(@NonNull final DirectItem item, final MessageDirection messageDirection, final int position) {
final FrameLayout.LayoutParams containerLayoutParams = (FrameLayout.LayoutParams) binding.container.getLayoutParams(); final FrameLayout.LayoutParams containerLayoutParams = (FrameLayout.LayoutParams) binding.container.getLayoutParams();
final DirectItemType itemType = item.getItemType(); final DirectItemType itemType = item.getItemType();
setMessageDirectionGravity(messageDirection, containerLayoutParams); setMessageDirectionGravity(messageDirection, containerLayoutParams);
@ -188,7 +189,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple
containerLayoutParams.gravity = Gravity.CENTER; containerLayoutParams.gravity = Gravity.CENTER;
} }
private void setMessageInfo(final DirectItem item, final MessageDirection messageDirection) {
private void setMessageInfo(@NonNull final DirectItem item, final MessageDirection messageDirection) {
if (showMessageInfo()) { if (showMessageInfo()) {
binding.messageInfo.setVisibility(View.VISIBLE); binding.messageInfo.setVisibility(View.VISIBLE);
binding.deliveryStatus.setVisibility(messageDirection == MessageDirection.OUTGOING ? View.VISIBLE : View.GONE); binding.deliveryStatus.setVisibility(messageDirection == MessageDirection.OUTGOING ? View.VISIBLE : View.GONE);

9
app/src/main/java/awais/instagrabber/utils/DMUtils.java

@ -23,18 +23,21 @@ import awais.instagrabber.repositories.responses.directmessages.DirectThreadLast
import awais.instagrabber.repositories.responses.directmessages.RavenExpiringMediaActionSummary; import awais.instagrabber.repositories.responses.directmessages.RavenExpiringMediaActionSummary;
public final class DMUtils { public final class DMUtils {
public static boolean isRead(final DirectItem item,
public static boolean isRead(@NonNull final DirectItem item,
@NonNull final Map<Long, DirectThreadLastSeenAt> lastSeenAt, @NonNull final Map<Long, DirectThreadLastSeenAt> lastSeenAt,
final List<Long> userIdsToCheck) {
@NonNull final List<Long> userIdsToCheck) {
// Further check if directStory exists // Further check if directStory exists
// if (read && directStory != null) { // if (read && directStory != null) {
// read = false; // read = false;
// } // }
if (item == null) return false;
return lastSeenAt.entrySet() return lastSeenAt.entrySet()
.stream() .stream()
.filter(entry -> userIdsToCheck.contains(entry.getKey())) .filter(entry -> userIdsToCheck.contains(entry.getKey()))
.anyMatch(entry -> { .anyMatch(entry -> {
final String userLastSeenTsString = entry.getValue().getTimestamp();
final DirectThreadLastSeenAt threadLastSeenAt = entry.getValue();
if (threadLastSeenAt == null) return false;
final String userLastSeenTsString = threadLastSeenAt.getTimestamp();
if (userLastSeenTsString == null) return false; if (userLastSeenTsString == null) return false;
final long userTs = Long.parseLong(userLastSeenTsString); final long userTs = Long.parseLong(userLastSeenTsString);
final long itemTs = item.getTimestamp(); final long itemTs = item.getTimestamp();

Loading…
Cancel
Save