mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 09:08:33 +00:00
Make Message Details update views in more situations.
This commit is contained in:
parent
469a4700d2
commit
08800c9faf
@ -94,6 +94,7 @@ public final class MessageDetailsActivity extends PassphraseRequiredActionBarAct
|
|||||||
adapter = new MessageDetailsAdapter(glideRequests);
|
adapter = new MessageDetailsAdapter(glideRequests);
|
||||||
|
|
||||||
list.setAdapter(adapter);
|
list.setAdapter(adapter);
|
||||||
|
list.setItemAnimator(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeViewModel() {
|
private void initializeViewModel() {
|
||||||
@ -133,15 +134,14 @@ public final class MessageDetailsActivity extends PassphraseRequiredActionBarAct
|
|||||||
|
|
||||||
list.add(new MessageDetailsViewState<>(details.getMessageRecord(), MessageDetailsViewState.MESSAGE_HEADER));
|
list.add(new MessageDetailsViewState<>(details.getMessageRecord(), MessageDetailsViewState.MESSAGE_HEADER));
|
||||||
|
|
||||||
int headerOrder = 0;
|
|
||||||
if (details.getMessageRecord().isOutgoing()) {
|
if (details.getMessageRecord().isOutgoing()) {
|
||||||
if (addRecipients(list, RecipientHeader.notSent(headerOrder), details.getNotSent())) headerOrder++;
|
addRecipients(list, RecipientHeader.NOT_SENT, details.getNotSent());
|
||||||
if (addRecipients(list, RecipientHeader.read(headerOrder), details.getRead())) headerOrder++;
|
addRecipients(list, RecipientHeader.READ, details.getRead());
|
||||||
if (addRecipients(list, RecipientHeader.delivered(headerOrder), details.getDelivered())) headerOrder++;
|
addRecipients(list, RecipientHeader.DELIVERED, details.getDelivered());
|
||||||
if (addRecipients(list, RecipientHeader.sentTo(headerOrder), details.getSent())) headerOrder++;
|
addRecipients(list, RecipientHeader.SENT_TO, details.getSent());
|
||||||
addRecipients(list, RecipientHeader.pending(headerOrder), details.getPending());
|
addRecipients(list, RecipientHeader.PENDING, details.getPending());
|
||||||
} else {
|
} else {
|
||||||
addRecipients(list, RecipientHeader.sentFrom(headerOrder), details.getSent());
|
addRecipients(list, RecipientHeader.SENT_FROM, details.getSent());
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
|
@ -94,7 +94,7 @@ final class MessageDetailsAdapter extends ListAdapter<MessageDetailsAdapter.Mess
|
|||||||
case MessageDetailsViewState.MESSAGE_HEADER:
|
case MessageDetailsViewState.MESSAGE_HEADER:
|
||||||
return true;
|
return true;
|
||||||
case MessageDetailsViewState.RECIPIENT_HEADER:
|
case MessageDetailsViewState.RECIPIENT_HEADER:
|
||||||
return ((RecipientHeader) oldData).getHeaderOrder() == ((RecipientHeader) newData).getHeaderOrder();
|
return oldData == newData;
|
||||||
case MessageDetailsViewState.RECIPIENT:
|
case MessageDetailsViewState.RECIPIENT:
|
||||||
return ((RecipientDeliveryStatus) oldData).getRecipient().getId().equals(((RecipientDeliveryStatus) newData).getRecipient().getId());
|
return ((RecipientDeliveryStatus) oldData).getRecipient().getId().equals(((RecipientDeliveryStatus) newData).getRecipient().getId());
|
||||||
}
|
}
|
||||||
@ -112,26 +112,16 @@ final class MessageDetailsAdapter extends ListAdapter<MessageDetailsAdapter.Mess
|
|||||||
if (oldData.getClass() == newData.getClass() && oldItem.itemType == newItem.itemType) {
|
if (oldData.getClass() == newData.getClass() && oldItem.itemType == newItem.itemType) {
|
||||||
switch (oldItem.itemType) {
|
switch (oldItem.itemType) {
|
||||||
case MessageDetailsViewState.MESSAGE_HEADER:
|
case MessageDetailsViewState.MESSAGE_HEADER:
|
||||||
return areMessageRecordContentsTheSame((MessageRecord) oldData, (MessageRecord) newData);
|
return false;
|
||||||
case MessageDetailsViewState.RECIPIENT_HEADER:
|
case MessageDetailsViewState.RECIPIENT_HEADER:
|
||||||
return ((RecipientHeader) oldData).getHeader() == ((RecipientHeader) newData).getHeader();
|
|
||||||
case MessageDetailsViewState.RECIPIENT:
|
|
||||||
return true;
|
return true;
|
||||||
|
case MessageDetailsViewState.RECIPIENT:
|
||||||
|
return ((RecipientDeliveryStatus) oldData).getDeliveryStatus() == ((RecipientDeliveryStatus) newData).getDeliveryStatus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean areMessageRecordContentsTheSame(MessageRecord oldData, MessageRecord newData) {
|
|
||||||
return oldData.equals(newData) &&
|
|
||||||
oldData.getDateSent() == newData.getDateSent() &&
|
|
||||||
oldData.getDateReceived() == newData.getDateReceived() &&
|
|
||||||
oldData.getType() == newData.getType() &&
|
|
||||||
oldData.getExpiresIn() == newData.getExpiresIn() &&
|
|
||||||
oldData.getExpireStarted() == newData.getExpireStarted() &&
|
|
||||||
oldData.getReactions().equals(newData.getReactions());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static final class MessageDetailsViewState<T> {
|
static final class MessageDetailsViewState<T> {
|
||||||
|
@ -1,64 +1,24 @@
|
|||||||
package org.thoughtcrime.securesms.messagedetails;
|
package org.thoughtcrime.securesms.messagedetails;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
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 int headerText;
|
|
||||||
private final HeaderStatus status;
|
|
||||||
|
|
||||||
private RecipientHeader(int headerOrder, @StringRes int headerText, @NonNull HeaderStatus headerStatus) {
|
RecipientHeader(@StringRes int headerText) {
|
||||||
this.headerOrder = headerOrder;
|
|
||||||
this.headerText = headerText;
|
this.headerText = headerText;
|
||||||
this.status = headerStatus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int getHeaderOrder() {
|
@StringRes int getHeaderText() {
|
||||||
return headerOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
@StringRes int getHeader() {
|
|
||||||
return headerText;
|
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ final class RecipientHeaderViewHolder extends RecyclerView.ViewHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void bind(RecipientHeader recipientHeader) {
|
void bind(RecipientHeader recipientHeader) {
|
||||||
header.setText(recipientHeader.getHeader());
|
header.setText(recipientHeader.getHeaderText());
|
||||||
switch (recipientHeader.getHeaderStatus()) {
|
switch (recipientHeader) {
|
||||||
case PENDING:
|
case PENDING:
|
||||||
deliveryStatus.setPending();
|
deliveryStatus.setPending();
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user