From c0735c811994225dee48c19ae5248ece75d21cc5 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 20 Jun 2022 16:15:24 -0300 Subject: [PATCH] Clear snippet when the last message in a pinned thread is deleted. --- .../securesms/database/ThreadDatabase.java | 12 +++++++++--- .../securesms/database/model/ThreadRecord.java | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index cf27ff43b..f311f59c8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -764,7 +764,8 @@ public class ThreadDatabase extends Database { public Cursor getUnarchivedConversationList(boolean pinned, long offset, long limit) { SQLiteDatabase db = databaseHelper.getSignalReadableDatabase(); String pinnedWhere = PINNED + (pinned ? " != 0" : " = 0"); - String where = ARCHIVED + " = 0 AND " + MEANINGFUL_MESSAGES + " != 0 AND " + pinnedWhere; + String meaningful = pinned ? "" : MEANINGFUL_MESSAGES + " != 0 AND "; + String where = ARCHIVED + " = 0 AND " + meaningful + pinnedWhere; final String query; @@ -805,7 +806,7 @@ public class ThreadDatabase extends Database { public int getPinnedConversationListCount() { SQLiteDatabase db = databaseHelper.getSignalReadableDatabase(); String[] columns = new String[] { "COUNT(*)" }; - String query = ARCHIVED + " = 0 AND " + PINNED + " != 0 AND " + MEANINGFUL_MESSAGES + " != 0"; + String query = ARCHIVED + " = 0 AND " + PINNED + " != 0"; try (Cursor cursor = db.query(TABLE_NAME, columns, query, null, null, null, null)) { if (cursor != null && cursor.moveToFirst()) { @@ -819,7 +820,7 @@ public class ThreadDatabase extends Database { public int getUnarchivedConversationListCount() { SQLiteDatabase db = databaseHelper.getSignalReadableDatabase(); String[] columns = new String[] { "COUNT(*)" }; - String query = ARCHIVED + " = 0 AND " + MEANINGFUL_MESSAGES + " != 0"; + String query = ARCHIVED + " = 0 AND (" + MEANINGFUL_MESSAGES + " != 0 OR " + PINNED + " != 0)"; try (Cursor cursor = db.query(TABLE_NAME, columns, query, null, null, null, null)) { if (cursor != null && cursor.moveToFirst()) { @@ -1344,6 +1345,11 @@ public class ThreadDatabase extends Database { if (shouldDelete) { deleteConversation(threadId); } + + if (isPinned) { + updateThread(threadId, meaningfulMessages, null, null, null, null, 0, 0, 0, 0, unarchive, 0, 0); + } + return true; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java index 9bccf282c..a15d2138f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java @@ -392,7 +392,6 @@ public final class ThreadRecord { public ThreadRecord build() { if (distributionType == ThreadDatabase.DistributionTypes.CONVERSATION) { Preconditions.checkArgument(threadId > 0); - Preconditions.checkArgument(date > 0); Preconditions.checkNotNull(body); Preconditions.checkNotNull(recipient); }