From 08800c9fafbf51a9013b630d3be12f4b76c8daf4 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 17 Jun 2020 13:54:07 -0400 Subject: [PATCH] Make Message Details update views in more situations. --- .../MessageDetailsActivity.java | 14 ++--- .../messagedetails/MessageDetailsAdapter.java | 18 ++---- .../messagedetails/RecipientHeader.java | 60 ++++--------------- .../RecipientHeaderViewHolder.java | 4 +- 4 files changed, 23 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsActivity.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsActivity.java index 4253afde9b..edbebd5293 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsActivity.java @@ -94,6 +94,7 @@ public final class MessageDetailsActivity extends PassphraseRequiredActionBarAct adapter = new MessageDetailsAdapter(glideRequests); list.setAdapter(adapter); + list.setItemAnimator(null); } private void initializeViewModel() { @@ -133,15 +134,14 @@ public final class MessageDetailsActivity extends PassphraseRequiredActionBarAct list.add(new MessageDetailsViewState<>(details.getMessageRecord(), MessageDetailsViewState.MESSAGE_HEADER)); - int headerOrder = 0; if (details.getMessageRecord().isOutgoing()) { - if (addRecipients(list, RecipientHeader.notSent(headerOrder), details.getNotSent())) headerOrder++; - if (addRecipients(list, RecipientHeader.read(headerOrder), details.getRead())) headerOrder++; - if (addRecipients(list, RecipientHeader.delivered(headerOrder), details.getDelivered())) headerOrder++; - if (addRecipients(list, RecipientHeader.sentTo(headerOrder), details.getSent())) headerOrder++; - addRecipients(list, RecipientHeader.pending(headerOrder), details.getPending()); + addRecipients(list, RecipientHeader.NOT_SENT, details.getNotSent()); + addRecipients(list, RecipientHeader.READ, details.getRead()); + addRecipients(list, RecipientHeader.DELIVERED, details.getDelivered()); + addRecipients(list, RecipientHeader.SENT_TO, details.getSent()); + addRecipients(list, RecipientHeader.PENDING, details.getPending()); } else { - addRecipients(list, RecipientHeader.sentFrom(headerOrder), details.getSent()); + addRecipients(list, RecipientHeader.SENT_FROM, details.getSent()); } return list; diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsAdapter.java index 1e4030ae65..b7f3d09675 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsAdapter.java @@ -94,7 +94,7 @@ final class MessageDetailsAdapter extends ListAdapter { diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeader.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeader.java index 1459fd6e64..600fe6ee2a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeader.java @@ -1,64 +1,24 @@ package org.thoughtcrime.securesms.messagedetails; -import androidx.annotation.NonNull; import androidx.annotation.StringRes; import org.thoughtcrime.securesms.R; -final class RecipientHeader { +enum RecipientHeader { + PENDING(R.string.message_details_recipient_header__pending_send), + SENT_TO(R.string.message_details_recipient_header__sent_to), + SENT_FROM(R.string.message_details_recipient_header__sent_from), + DELIVERED(R.string.message_details_recipient_header__delivered_to), + READ(R.string.message_details_recipient_header__read_by), + NOT_SENT(R.string.message_details_recipient_header__not_sent); - private final int headerOrder; - private final int headerText; - private final HeaderStatus status; + private final int headerText; - private RecipientHeader(int headerOrder, @StringRes int headerText, @NonNull HeaderStatus headerStatus) { - this.headerOrder = headerOrder; + RecipientHeader(@StringRes int headerText) { this.headerText = headerText; - this.status = headerStatus; } - int getHeaderOrder() { - return headerOrder; - } - - @StringRes int getHeader() { + @StringRes int getHeaderText() { return headerText; } - - @NonNull HeaderStatus getHeaderStatus() { - return status; - } - - static RecipientHeader pending(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__pending_send, HeaderStatus.PENDING); - } - - static RecipientHeader sentTo(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__sent_to, HeaderStatus.SENT_TO); - } - - static RecipientHeader sentFrom(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__sent_from, HeaderStatus.SENT_FROM); - } - - static RecipientHeader delivered(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__delivered_to, HeaderStatus.DELIVERED); - } - - static RecipientHeader read(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__read_by, HeaderStatus.READ); - } - - static RecipientHeader notSent(int idx) { - return new RecipientHeader(idx, R.string.message_details_recipient_header__not_sent, HeaderStatus.NOT_SENT); - } - - enum HeaderStatus { - PENDING, - SENT_TO, - SENT_FROM, - DELIVERED, - READ, - NOT_SENT - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeaderViewHolder.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeaderViewHolder.java index ec46fabd44..07a751da83 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeaderViewHolder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/RecipientHeaderViewHolder.java @@ -20,8 +20,8 @@ final class RecipientHeaderViewHolder extends RecyclerView.ViewHolder { } void bind(RecipientHeader recipientHeader) { - header.setText(recipientHeader.getHeader()); - switch (recipientHeader.getHeaderStatus()) { + header.setText(recipientHeader.getHeaderText()); + switch (recipientHeader) { case PENDING: deliveryStatus.setPending(); break;