remove messages from decryption queue when trimming a conversation
This commit is contained in:
parent
40f81f19df
commit
39ad426ca9
|
@ -50,6 +50,10 @@ public class PgpDecryptionService {
|
||||||
continueDecryption();
|
continueDecryption();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public synchronized void discard(List<Message> discards) {
|
||||||
|
this.messages.removeAll(discards);
|
||||||
|
}
|
||||||
|
|
||||||
protected synchronized void decryptNext() {
|
protected synchronized void decryptNext() {
|
||||||
if (pendingIntent == null
|
if (pendingIntent == null
|
||||||
&& getOpenPgpApi() != null
|
&& getOpenPgpApi() != null
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
|
import eu.siacs.conversations.crypto.PgpDecryptionService;
|
||||||
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
|
import eu.siacs.conversations.crypto.axolotl.AxolotlService;
|
||||||
import eu.siacs.conversations.xmpp.chatstate.ChatState;
|
import eu.siacs.conversations.xmpp.chatstate.ChatState;
|
||||||
import eu.siacs.conversations.xmpp.jid.InvalidJidException;
|
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 size = messages.size();
|
||||||
final int maxsize = Config.PAGE_SIZE * Config.MAX_NUM_PAGES;
|
final int maxsize = Config.PAGE_SIZE * Config.MAX_NUM_PAGES;
|
||||||
if (size > maxsize) {
|
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,11 +956,15 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
untieMessages();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void untieMessages() {
|
||||||
for(Message message : this.messages) {
|
for(Message message : this.messages) {
|
||||||
message.untie();
|
message.untie();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public int unreadCount() {
|
public int unreadCount() {
|
||||||
synchronized (this.messages) {
|
synchronized (this.messages) {
|
||||||
|
|
Loading…
Reference in a new issue