Render legacy encryption error messages.

This commit is contained in:
Greyson Parrelli
2026-06-02 14:06:59 +00:00
committed by Alex Hart
parent bc9c560f96
commit 3ad446c6c9
4 changed files with 5 additions and 27 deletions
@@ -629,12 +629,8 @@ public final class ConversationListItem extends ConstraintLayout implements Bind
return emphasisAdded(context, context.getString(R.string.ConversationListItem_key_exchange_message), defaultTint);
} else if (MessageTypes.isChatSessionRefresh(thread.getType())) {
return emphasisAdded(context, context.getString(R.string.ThreadRecord_chat_session_refreshed), Glyph.REFRESH, defaultTint);
} else if (MessageTypes.isNoRemoteSessionType(thread.getType())) {
return emphasisAdded(context, context.getString(R.string.MessageDisplayHelper_message_encrypted_for_non_existing_session), defaultTint);
} else if (MessageTypes.isEndSessionType(thread.getType())) {
return emphasisAdded(context, context.getString(R.string.ThreadRecord_secure_session_reset), defaultTint);
} else if (MessageTypes.isLegacyType(thread.getType())) {
return emphasisAdded(context, context.getString(R.string.MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported), defaultTint);
} else if (thread.isScheduledMessage()) {
return emphasisAdded(context, context.getString(R.string.ThreadRecord_scheduled_message), Glyph.CALENDAR, defaultTint);
} else if (MessageTypes.isDraftMessageType(thread.getType())) {
@@ -345,19 +345,11 @@ public interface MessageTypes {
}
static boolean isChatSessionRefresh(long type) {
return (type & ENCRYPTION_REMOTE_FAILED_BIT) != 0;
}
static boolean isDuplicateMessageType(long type) {
return (type & ENCRYPTION_REMOTE_DUPLICATE_BIT) != 0;
}
static boolean isNoRemoteSessionType(long type) {
return (type & ENCRYPTION_REMOTE_NO_SESSION_BIT) != 0;
}
static boolean isLegacyType(long type) {
return (type & ENCRYPTION_REMOTE_LEGACY_BIT) != 0 ||
return (type & ENCRYPTION_REMOTE_FAILED_BIT) != 0 ||
// These are legacy encryption error types that we just bundle into this type
(type & ENCRYPTION_REMOTE_NO_SESSION_BIT) != 0 ||
(type & ENCRYPTION_REMOTE_DUPLICATE_BIT) != 0 ||
(type & ENCRYPTION_REMOTE_LEGACY_BIT) != 0 ||
(type & ENCRYPTION_REMOTE_BIT) != 0;
}
@@ -180,10 +180,6 @@ public abstract class MessageRecord extends DisplayRecord {
return MessageTypes.isSecureType(type);
}
public boolean isLegacyMessage() {
return MessageTypes.isLegacyType(type);
}
@Override
public boolean isFailed() {
return super.isFailed() || isFailedAdminDelete();
@@ -228,12 +228,6 @@ public class MmsMessageRecord extends MessageRecord {
public SpannableString getDisplayBody(@NonNull Context context) {
if (MessageTypes.isChatSessionRefresh(type)) {
return emphasisAdded(context.getString(R.string.MessageRecord_chat_session_refreshed));
} else if (MessageTypes.isDuplicateMessageType(type)) {
return emphasisAdded(context.getString(R.string.SmsMessageRecord_duplicate_message));
} else if (MessageTypes.isNoRemoteSessionType(type)) {
return emphasisAdded(context.getString(R.string.MessageDisplayHelper_message_encrypted_for_non_existing_session));
} else if (isLegacyMessage()) {
return emphasisAdded(context.getString(R.string.MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported));
} else if (isPaymentNotification() && payment != null) {
return new SpannableString(context.getString(R.string.MessageRecord__payment_s, payment.getAmount().toString(FormatterOptions.defaults())));
} else if (isPaymentTombstone() || isPaymentNotification()) {