From ad51746e845cbc31c16ac599cab1188bc0674b84 Mon Sep 17 00:00:00 2001 From: Al Lansley Date: Mon, 8 Apr 2024 13:53:18 +1000 Subject: [PATCH] Initial fix implemented --- .../conversation/v2/ConversationActivityV2.kt | 11 ++++++----- .../thoughtcrime/securesms/database/MmsDatabase.kt | 3 +-- .../thoughtcrime/securesms/database/SmsDatabase.java | 1 + .../securesms/database/ThreadDatabase.java | 6 ++++-- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 00e72562d5..a9aab2d779 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -1112,6 +1112,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe val blindedRecipient = viewModel.blindedRecipient val binding = binding ?: return val openGroup = viewModel.openGroup + val (textResource, insertParam) = when { recipient.isLocalNumber -> R.string.activity_conversation_empty_state_note_to_self to null openGroup != null && !openGroup.canWrite -> R.string.activity_conversation_empty_state_read_only to recipient.toShortString() @@ -1883,11 +1884,13 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe return } + + val allSentByCurrentUser = messages.all { it.isOutgoing } val allHasHash = messages.all { lokiMessageDb.getMessageServerHash(it.id, it.isMms) != null } - // If the recipient is a community then we delete the message for everyone - if (recipient.isCommunityRecipient) { + // If the recipient is a community OR a Note-to-Self then we delete the message for everyone + if (recipient.isCommunityRecipient || recipient.isLocalNumber) { val messageCount = 1 // Only used for plurals string showSessionDialog { title(resources.getQuantityString(R.plurals.ConversationFragment_delete_selected_messages, messageCount, messageCount)) @@ -1917,8 +1920,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe } bottomSheet.show(supportFragmentManager, bottomSheet.tag) } - else // Finally, if this is a closed group and you are deleting someone else's message(s) - // then we can only delete locally. + else // Finally, if this is a closed group and you are deleting someone else's message(s) then we can only delete locally. { val messageCount = 1 showSessionDialog { @@ -2027,7 +2029,6 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe val message = messages.first() as MmsMessageRecord // Do not allow the user to download a file attachment before it has finished downloading - // TODO: Localise the msg in this toast! if (message.isMediaPending) { Toast.makeText(this, resources.getString(R.string.conversation_activity__wait_until_attachment_has_finished_downloading), Toast.LENGTH_LONG).show() return diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.kt index 0f39e3a496..f2fcefd0aa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.kt @@ -1095,8 +1095,7 @@ class MmsDatabase(context: Context, databaseHelper: SQLCipherOpenHelper) : Messa } val whereString = where.substring(0, where.length - 4) try { - cursor = - db!!.query(TABLE_NAME, arrayOf(ID), whereString, null, null, null, null) + cursor = db!!.query(TABLE_NAME, arrayOf(ID), whereString, null, null, null, null) val toDeleteStringMessageIds = mutableListOf() while (cursor.moveToNext()) { toDeleteStringMessageIds += cursor.getLong(0).toString() diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 61f17a2d86..450e7c2d23 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -633,6 +633,7 @@ public class SmsDatabase extends MessagingDatabase { SQLiteDatabase db = databaseHelper.getWritableDatabase(); long threadId = getThreadIdForMessage(messageId); db.delete(TABLE_NAME, ID_WHERE, new String[] {messageId+""}); + notifyConversationListeners(threadId); boolean threadDeleted = DatabaseComponent.get(context).threadDatabase().update(threadId, false, true); return threadDeleted; } 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 e2f9687451..5f71ce9330 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -515,11 +515,13 @@ public class ThreadDatabase extends Database { return getConversationList(where); } + /* public Cursor getArchivedConversationList() { String where = "(" + MESSAGE_COUNT + " != 0 OR " + GroupDatabase.TABLE_NAME + "." + GROUP_ID + " LIKE '" + COMMUNITY_PREFIX + "%') " + "AND " + ARCHIVED + " = 1 "; return getConversationList(where); } + */ private Cursor getConversationList(String where) { SQLiteDatabase db = databaseHelper.getReadableDatabase(); @@ -771,11 +773,11 @@ public class ThreadDatabase extends Database { deleteThread(threadId); return true; } + // todo: add empty snippet that clears existing data return false; } } finally { - if (reader != null) - reader.close(); + if (reader != null) { reader.close(); } notifyConversationListListeners(); notifyConversationListeners(threadId); }