aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities/Conversation.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities/Conversation.java')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Conversation.java19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java
index 182e86dd..94502d24 100644
--- a/src/main/java/eu/siacs/conversations/entities/Conversation.java
+++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java
@@ -22,6 +22,7 @@ import java.util.Iterator;
import java.util.List;
import eu.siacs.conversations.Config;
+import eu.siacs.conversations.crypto.PgpDecryptionService;
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
import eu.siacs.conversations.xmpp.chatstate.ChatState;
import eu.siacs.conversations.xmpp.jid.InvalidJidException;
@@ -206,7 +207,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
final int size = messages.size();
final int maxsize = Config.PAGE_SIZE * Config.MAX_NUM_PAGES;
if (size > maxsize) {
- this.messages.subList(0, size - maxsize).clear();
+ List<Message> discards = this.messages.subList(0, size - maxsize);
+ final PgpDecryptionService pgpDecryptionService = account.getPgpDecryptionService();
+ if (pgpDecryptionService != null) {
+ pgpDecryptionService.discard(discards);
+ }
+ discards.clear();
+ untieMessages();
}
}
}
@@ -949,9 +956,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
}
}
});
- for(Message message : this.messages) {
- message.untie();
- }
+ untieMessages();
+ }
+ }
+
+ private void untieMessages() {
+ for(Message message : this.messages) {
+ message.untie();
}
}