diff --git a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
index d223ab842..05fa0b82e 100644
--- a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
+++ b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
@@ -31,7 +31,6 @@ public abstract class AbstractGenerator {
"urn:xmpp:avatar:metadata+notify",
"http://jabber.org/protocol/nick+notify",
"urn:xmpp:ping",
- "urn:xmpp:message-correct:0",
"jabber:iq:version",
"http://jabber.org/protocol/chatstates",
AxolotlService.PEP_DEVICE_LIST+"+notify"};
@@ -39,6 +38,9 @@ public abstract class AbstractGenerator {
"urn:xmpp:chat-markers:0",
"urn:xmpp:receipts"
};
+ private final String[] MESSAGE_CORRECTION_FEATURES = {
+ "urn:xmpp:message-correct:0"
+ };
private String mVersion = null;
protected final String IDENTITY_NAME = "Conversations";
protected final String IDENTITY_TYPE = "phone";
@@ -90,6 +92,9 @@ public abstract class AbstractGenerator {
if (mXmppConnectionService.confirmMessages()) {
features.addAll(Arrays.asList(MESSAGE_CONFIRMATION_FEATURES));
}
+ if (mXmppConnectionService.allowMessageCorrection()) {
+ features.addAll(Arrays.asList(MESSAGE_CORRECTION_FEATURES));
+ }
Collections.sort(features);
return features;
}
diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
index 18edfdeb5..620039a15 100644
--- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
@@ -393,7 +393,7 @@ public class MessageParser extends AbstractParser implements
updateLastseen(timestamp, account, packet.getFrom(), true);
}
- if (replacementId != null) {
+ if (replacementId != null && mXmppConnectionService.allowMessageCorrection()) {
Message replacedMessage = conversation.findMessageWithRemoteIdAndCounterpart(replacementId, counterpart);
if (replacedMessage != null) {
final boolean fingerprintsMatch = replacedMessage.getAxolotlFingerprint() == null
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index a8fe7586f..0c8f0b8b2 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -2615,6 +2615,10 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return getPreferences().getBoolean("confirm_messages", true);
}
+ public boolean allowMessageCorrection() {
+ return getPreferences().getBoolean("allow_message_correction", true);
+ }
+
public boolean sendChatStates() {
return getPreferences().getBoolean("chat_states", false);
}
diff --git a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
index aa23e36db..07c328b9a 100644
--- a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
@@ -162,7 +162,8 @@ public class SettingsActivity extends XmppActivity implements
xmppConnectionService.toggleForegroundService();
} else if (name.equals("confirm_messages")
|| name.equals("xa_on_silent_mode")
- || name.equals("away_when_screen_off")) {
+ || name.equals("away_when_screen_off")
+ || name.equals("allow_message_correction")) {
if (xmppConnectionServiceBound) {
if (name.equals("away_when_screen_off")) {
xmppConnectionService.toggleScreenEventReceiver();
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 15322e046..da29bfe69 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -104,7 +104,7 @@
The name this client identifies itself with
Accept files
Automatically accept files smaller than…
- Notification Settings
+ Notification
Notifications
Notify when a new message arrives
Vibrate
@@ -113,12 +113,12 @@
Play ringtone with notification
Notification grace period
Disable notifications for a short time after a carbon copy was received
- Advanced Options
+ Advanced
Never send crash reports
By sending in stack traces you are helping the ongoing development of Conversations
Confirm Messages
Let your contact know when you have received and read a message
- UI Options
+ UI
OpenKeychain reported an error
I/O Error decrypting file
Accept
@@ -278,12 +278,14 @@
Are you sure you would like to delete this fingerprint?
Ignore
Warning: Sending this without mutual presence updates could cause unexpected problems.\n\nGo to contact details to verify your presence subscriptions.
- Encryption settings
+ Security
Force end-to-end encryption
Always send messages encrypted (except for conferences)
+ Allow message correction
+ Allow your contacts to retroactively edit their messages
Don’t save encrypted messages
Warning: This could lead to message loss
- Expert options
+ Expert settings
Please be careful with these
About Conversations
Build and licensing information
@@ -464,7 +466,7 @@
2 hours
8 hours
Until further notice
- Input options
+ Input
Enter is send
Use enter key to send message
Show enter key
@@ -528,20 +530,20 @@
Show received messages as black text on a white background
Tor network unavailable
Broken
- Presence settings
+ Presence
Away when screen is off
Marks your resource as away when the screen is turned off
Not available in silent mode
Marks your resource as not available when device is in silent mode
- Extended connection options
- Show hostname and port options when setting up an account
+ Extended connection settings
+ Show hostname and port settings when setting up an account
xmpp.example.com
Add account with certificate
Unable to parse certificate
Leave empty to authenticate w/ certificate
- Archiving preferences
- Fetching archiving preferences. Please wait…
- Unable to fetch archiving preferences
+ Archiving settting
+ Fetching archiving settings. Please wait…
+ Unable to fetch archiving setting
Captcha text
Captcha required
enter the text from the image
@@ -551,7 +553,7 @@
Error fetching OMEMO key!
Verified OMEMO key with certificate!
Your device does not support the selection of client certificates!
- Connection options
+ Connection
Connect via Tor
Tunnel all connections through the Tor network. Requires Orbot
Hostname
@@ -575,7 +577,7 @@
Issuer
Common Name
Organization
- SHA1
+ SHA-1
(Not available)
No certificate found
Notify on all messages
@@ -583,7 +585,7 @@
Notifications disabled
Notifications paused
Compress Pictures
- Resize and compressed pictures
+ Resize and compress pictures
Always
Automatically
Battery optimizations enabled
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index 382b31993..e8747a8bb 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -131,7 +131,7 @@
android:key="expert"
android:summary="@string/pref_expert_options_summary"
android:title="@string/pref_expert_options">
-
+
+