diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index 84853193e..dcc0ff2aa 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -1112,6 +1112,37 @@ public class DatabaseBackend extends SQLiteOpenHelper { return null; } + public boolean deleteConversation(final Account account, final Jid contactJid, final Jid counterpart) { + SQLiteDatabase db = this.getWritableDatabase(); + + if (counterpart != null) { + String[] selectionArgs = {account.getUuid(), + contactJid.asBareJid().toString() + "/%", + contactJid.asBareJid().toString(), + counterpart.toString() + }; + + int rows = db.delete(Conversation.TABLENAME, + Conversation.ACCOUNT + "=? AND (" + Conversation.CONTACTJID + + " like ? OR " + Conversation.CONTACTJID + "=?) AND " + Conversation.NEXT_COUNTERPART + "=?", selectionArgs); + + return rows == 1; + } else { + String[] selectionArgs = new String[]{ + account.getUuid(), + contactJid.asBareJid().toString() + "/%", + contactJid.asBareJid().toString() + }; + + int rows = db.delete(Conversation.TABLENAME, + Conversation.ACCOUNT + "=? AND (" + Conversation.CONTACTJID + + " like ? OR " + Conversation.CONTACTJID + "=?) AND " + Conversation.NEXT_COUNTERPART + " =NULL", selectionArgs); + + return rows == 1; + + } + } + public void updateConversation(final Conversation conversation) { final SQLiteDatabase db = this.getWritableDatabase(); final String[] args = {conversation.getUuid()};