diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java
index af293d3833..954cedb150 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java
@@ -27,6 +27,7 @@ import network.loki.messenger.R;
import org.session.libsession.messaging.utilities.UpdateMessageBuilder;
import org.session.libsession.messaging.utilities.UpdateMessageData;
+import org.session.libsignal.service.internal.push.SignalServiceProtos;
import org.thoughtcrime.securesms.database.MmsSmsColumns;
import org.thoughtcrime.securesms.database.SmsDatabase;
import org.session.libsession.database.documents.IdentityKeyMismatch;
@@ -97,6 +98,9 @@ public abstract class MessageRecord extends DisplayRecord {
} else if (isExpirationTimerUpdate()) {
int seconds = (int) (getExpiresIn() / 1000);
return new SpannableString(UpdateMessageBuilder.INSTANCE.buildExpirationTimerMessage(context, seconds, getIndividualRecipient().getAddress().serialize(), isOutgoing()));
+ } else if (isDataExtraction()) {
+ if (isScreenshotExtraction()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, SignalServiceProtos.DataExtractionNotification.Type.SCREENSHOT, getIndividualRecipient().getAddress().serialize())));
+ else if (isMediaSavedExtraction()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, SignalServiceProtos.DataExtractionNotification.Type.MEDIA_SAVED, getIndividualRecipient().getAddress().serialize())));
}
// TODO below lines are left here for compatibility with older group update messages, it can be deleted later on
else if (isGroupUpdate() && isOutgoing()) {
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index f156dad77b..5fbc37a757 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -440,6 +440,8 @@
%1$s a désactivé les messages éphémères.
Vous avez défini l’expiration des messages éphémères à %1$s.
%1$s a défini l’expiration des messages éphémères à %2$s.
+ %1$s a pris une capture d’écran.
+ %1$s a sauvegardé un media.
Votre numéro de sécurité avec %s a changé.
Vous avez marqué votre numéro de sécurité avec %s comme vérifié
Vous avez marqué votre numéro de sécurité avec %s comme vérifié à partir d’un autre appareil
diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
index d6f446e364..7404d2e3ca 100644
--- a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
+++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt
@@ -5,6 +5,7 @@ import org.session.libsession.R
import org.session.libsession.messaging.MessagingConfiguration
import org.session.libsession.utilities.ExpirationUtil
import org.session.libsignal.service.api.messages.SignalServiceGroup
+import org.session.libsignal.service.internal.push.SignalServiceProtos
object UpdateMessageBuilder {
@@ -82,7 +83,7 @@ object UpdateMessageBuilder {
if (!isOutgoing && sender == null) return ""
val senderName: String? = if (!isOutgoing) {
MessagingConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender
- } else { sender }
+ } else { context.getString(R.string.MessageRecord_you) }
return if (duration <= 0) {
if (isOutgoing) context.getString(R.string.MessageRecord_you_disabled_disappearing_messages)
else context.getString(R.string.MessageRecord_s_disabled_disappearing_messages, senderName)
@@ -93,8 +94,13 @@ object UpdateMessageBuilder {
}
}
- //TODO do this when the current update is merged
- fun buildDataExtractionMessage(): String {
- return ""
+ fun buildDataExtractionMessage(context: Context, kind: SignalServiceProtos.DataExtractionNotification.Type, sender: String? = null): String {
+ val senderName = MessagingConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender
+ return when (kind) {
+ SignalServiceProtos.DataExtractionNotification.Type.SCREENSHOT ->
+ context.getString(R.string.MessageRecord_s_took_a_screenshot, senderName)
+ SignalServiceProtos.DataExtractionNotification.Type.MEDIA_SAVED ->
+ context.getString(R.string.MessageRecord_media_saved_by_s, senderName)
+ }
}
}
diff --git a/libsession/src/main/res/values/strings.xml b/libsession/src/main/res/values/strings.xml
index 116b106017..ee0510385c 100644
--- a/libsession/src/main/res/values/strings.xml
+++ b/libsession/src/main/res/values/strings.xml
@@ -509,6 +509,8 @@
%1$s disabled disappearing messages.
You set the disappearing message timer to %1$s
%1$s set the disappearing message timer to %2$s
+ %1$s took a screenshot.
+ Media saved by %1$s.
Your safety number with %s has changed.
You marked your safety number with %s verified
You marked your safety number with %s verified from another device