From dfb913cb98402d46e680f8480e6cc68d2576a3ab Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 17 Nov 2022 11:26:29 -0500 Subject: [PATCH] Fix thread update with drafts bugs. * Fix thread not updating correctly when drafts are present. * Fix thread delete bug during first message drafting. --- .../securesms/conversation/drafts/DraftRepository.kt | 2 +- .../securesms/conversation/drafts/DraftViewModel.kt | 2 +- .../thoughtcrime/securesms/database/ThreadDatabase.kt | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt index 96dc08f06..557306983 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftRepository.kt @@ -48,8 +48,8 @@ class DraftRepository( draftDatabase.replaceDrafts(actualThreadId, drafts) threadDatabase.updateSnippet(actualThreadId, drafts.getSnippet(context), drafts.uriSnippet, System.currentTimeMillis(), MmsSmsColumns.Types.BASE_DRAFT_TYPE, true) } else if (threadId > 0) { - threadDatabase.update(threadId, false) draftDatabase.clearDrafts(threadId) + threadDatabase.update(threadId, unarchive = false, allowDeletion = false) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt index a97b9e7cb..919fd765b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt @@ -110,7 +110,7 @@ class DraftViewModel @JvmOverloads constructor( return repository .loadDrafts(threadId) .doOnSuccess { drafts -> - store.update { it.copyAndSetDrafts(threadId, drafts.drafts) } + store.update { saveDrafts(it.copyAndSetDrafts(threadId, drafts.drafts)) } } .observeOn(AndroidSchedulers.mainThread()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.kt index 23e13412a..617a9cc7f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.kt @@ -1327,6 +1327,17 @@ class ThreadDatabase(context: Context, databaseHelper: SignalDatabase) : Databas return true } + val drafts: DraftDatabase.Drafts = SignalDatabase.drafts.getDrafts(threadId) + if (drafts.isNotEmpty()) { + val threadRecord: ThreadRecord? = getThreadRecord(threadId) + if (threadRecord != null && + threadRecord.type == MmsSmsColumns.Types.BASE_DRAFT_TYPE && + threadRecord.date > record.timestamp + ) { + return false + } + } + updateThread( threadId = threadId, meaningfulMessages = meaningfulMessages,