diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 42aa3df770..652d5dd8af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -572,9 +572,9 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe private fun setUpOutdatedClientBanner() { val recipient = viewModel.recipient ?: return - if (viewModel.recipient?.disappearingState == DisappearingState.LEGACY && - viewModel.expirationConfiguration?.isEnabled == true && - !ExpirationConfiguration.isNewConfigEnabled + if (ExpirationConfiguration.isNewConfigEnabled && recipient.isContactRecipient && + recipient.disappearingState == DisappearingState.LEGACY && + viewModel.expirationConfiguration?.isEnabled == true ) { binding?.outdatedBannerTextView?.text = resources.getString(R.string.activity_conversation_outdated_client_banner_text, recipient.name) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index f528b6c789..94638bbb96 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -70,7 +70,7 @@ public class RecipientDatabase extends Database { PROFILE_KEY, SYSTEM_DISPLAY_NAME, SYSTEM_PHOTO_URI, SYSTEM_PHONE_LABEL, SYSTEM_CONTACT_URI, SIGNAL_PROFILE_NAME, SIGNAL_PROFILE_AVATAR, PROFILE_SHARING, NOTIFICATION_CHANNEL, UNIDENTIFIED_ACCESS_MODE, - FORCE_SMS_SELECTION, NOTIFY_TYPE, + FORCE_SMS_SELECTION, NOTIFY_TYPE, DISAPPEARING_STATE }; static final List TYPED_RECIPIENT_PROJECTION = Stream.of(RECIPIENT_PROJECTION) @@ -182,6 +182,7 @@ public class RecipientDatabase extends Database { boolean approvedMe = cursor.getInt(cursor.getColumnIndexOrThrow(APPROVED_ME)) == 1; String messageRingtone = cursor.getString(cursor.getColumnIndexOrThrow(NOTIFICATION)); String callRingtone = cursor.getString(cursor.getColumnIndexOrThrow(CALL_RINGTONE)); + int disappearingState = cursor.getInt(cursor.getColumnIndexOrThrow(DISAPPEARING_STATE)); int messageVibrateState = cursor.getInt(cursor.getColumnIndexOrThrow(VIBRATE)); int callVibrateState = cursor.getInt(cursor.getColumnIndexOrThrow(CALL_VIBRATE)); long muteUntil = cursor.getLong(cursor.getColumnIndexOrThrow(MUTE_UNTIL)); @@ -223,6 +224,7 @@ public class RecipientDatabase extends Database { return Optional.of(new RecipientSettings(blocked, approved, approvedMe, muteUntil, notifyType, + Recipient.DisappearingState.fromId(disappearingState), Recipient.VibrateState.fromId(messageVibrateState), Recipient.VibrateState.fromId(callVibrateState), Util.uri(messageRingtone), Util.uri(callRingtone), diff --git a/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java b/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java index 997b3a2d2e..247b802ed6 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java +++ b/libsession/src/main/java/org/session/libsession/utilities/recipients/Recipient.java @@ -86,7 +86,7 @@ public class Recipient implements RecipientModifiedListener { private boolean blocked = false; private boolean approved = false; private boolean approvedMe = false; - private DisappearingState disappearingState = DisappearingState.LEGACY; + private DisappearingState disappearingState = null; private VibrateState messageVibrate = VibrateState.DEFAULT; private VibrateState callVibrate = VibrateState.DEFAULT; private int expireMessages = 0; @@ -162,6 +162,7 @@ public class Recipient implements RecipientModifiedListener { this.unidentifiedAccessMode = stale.unidentifiedAccessMode; this.forceSmsSelection = stale.forceSmsSelection; this.notifyType = stale.notifyType; + this.disappearingState = stale.disappearingState; this.participants.clear(); this.participants.addAll(stale.participants); @@ -192,6 +193,7 @@ public class Recipient implements RecipientModifiedListener { this.unidentifiedAccessMode = details.get().unidentifiedAccessMode; this.forceSmsSelection = details.get().forceSmsSelection; this.notifyType = details.get().notifyType; + this.disappearingState = details.get().disappearingState; this.participants.clear(); this.participants.addAll(details.get().participants); @@ -228,6 +230,7 @@ public class Recipient implements RecipientModifiedListener { Recipient.this.unidentifiedAccessMode = result.unidentifiedAccessMode; Recipient.this.forceSmsSelection = result.forceSmsSelection; Recipient.this.notifyType = result.notifyType; + Recipient.this.disappearingState = result.disappearingState; Recipient.this.participants.clear(); Recipient.this.participants.addAll(result.participants); @@ -860,6 +863,7 @@ public class Recipient implements RecipientModifiedListener { private final boolean approvedMe; private final long muteUntil; private final int notifyType; + private final DisappearingState disappearingState; private final VibrateState messageVibrateState; private final VibrateState callVibrateState; private final Uri messageRingtone; @@ -882,6 +886,7 @@ public class Recipient implements RecipientModifiedListener { public RecipientSettings(boolean blocked, boolean approved, boolean approvedMe, long muteUntil, int notifyType, + @NonNull DisappearingState disappearingState, @NonNull VibrateState messageVibrateState, @NonNull VibrateState callVibrateState, @Nullable Uri messageRingtone, @@ -907,6 +912,7 @@ public class Recipient implements RecipientModifiedListener { this.approvedMe = approvedMe; this.muteUntil = muteUntil; this.notifyType = notifyType; + this.disappearingState = disappearingState; this.messageVibrateState = messageVibrateState; this.callVibrateState = callVibrateState; this.messageRingtone = messageRingtone; @@ -952,6 +958,10 @@ public class Recipient implements RecipientModifiedListener { return notifyType; } + public @NonNull DisappearingState getDisappearingState() { + return disappearingState; + } + public @NonNull VibrateState getMessageVibrateState() { return messageVibrateState; } diff --git a/libsession/src/main/java/org/session/libsession/utilities/recipients/RecipientProvider.java b/libsession/src/main/java/org/session/libsession/utilities/recipients/RecipientProvider.java index 03c225e207..4ec4054168 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/recipients/RecipientProvider.java +++ b/libsession/src/main/java/org/session/libsession/utilities/recipients/RecipientProvider.java @@ -31,6 +31,7 @@ import org.session.libsession.utilities.ListenableFutureTask; import org.session.libsession.utilities.MaterialColor; import org.session.libsession.utilities.TextSecurePreferences; import org.session.libsession.utilities.Util; +import org.session.libsession.utilities.recipients.Recipient.DisappearingState; import org.session.libsession.utilities.recipients.Recipient.RecipientSettings; import org.session.libsession.utilities.recipients.Recipient.RegisteredState; import org.session.libsession.utilities.recipients.Recipient.UnidentifiedAccessMode; @@ -159,6 +160,7 @@ class RecipientProvider { @Nullable final Uri callRingtone; final long mutedUntil; final int notifyType; + @Nullable final DisappearingState disappearingState; @Nullable final VibrateState messageVibrateState; @Nullable final VibrateState callVibrateState; final boolean blocked; @@ -191,6 +193,7 @@ class RecipientProvider { this.callRingtone = settings != null ? settings.getCallRingtone() : null; this.mutedUntil = settings != null ? settings.getMuteUntil() : 0; this.notifyType = settings != null ? settings.getNotifyType() : 0; + this.disappearingState = settings != null ? settings.getDisappearingState() : null; this.messageVibrateState = settings != null ? settings.getMessageVibrateState() : null; this.callVibrateState = settings != null ? settings.getCallVibrateState() : null; this.blocked = settings != null && settings.isBlocked();