From 992b04f8c52940957793c9a2aec04064bb3e8c66 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 8 Mar 2021 15:27:10 -0500 Subject: [PATCH] Add more logging around threads in message sends. --- .../conversation/ConversationActivity.java | 20 ++++++------------- .../conversation/ConversationFragment.java | 7 +++++++ .../conversation/ConversationViewModel.java | 2 +- .../securesms/database/ThreadDatabase.java | 8 +++++++- .../securesms/jobs/PushGroupSendJob.java | 4 ++-- .../securesms/jobs/PushMediaSendJob.java | 3 ++- .../securesms/jobs/PushTextSendJob.java | 2 +- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 4ee7052f6f..7f0448f78f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -2070,6 +2070,8 @@ public class ConversationActivity extends PassphraseRequiredActivity distributionType = args.getDistributionType(); glideRequests = GlideApp.with(this); + Log.i(TAG, "[initializeResources] Recipient: " + recipient.getId() + ", Thread: " + threadId); + recipient.observe(this, this::onRecipientChanged); } @@ -2706,8 +2708,7 @@ public class ConversationActivity extends PassphraseRequiredActivity linkPreviewViewModel.hasLinkPreview() || needsSplit; - Log.i(TAG, "isManual Selection: " + sendButton.isManualSelection()); - Log.i(TAG, "forceSms: " + forceSms); + Log.i(TAG, "[sendMessage] recipient: " + recipient.getId() + ", threadId: " + threadId + ", forceSms: " + forceSms + ", isManual: " + sendButton.isManualSelection()); if ((recipient.isMmsGroup() || recipient.getEmail().isPresent()) && !isMmsEnabled) { handleManualMmsRequired(); @@ -2874,18 +2875,9 @@ public class ConversationActivity extends PassphraseRequiredActivity silentlySetComposeText(""); final long id = fragment.stageOutgoingMessage(message); - new AsyncTask() { - @Override - protected Long doInBackground(OutgoingTextMessage... messages) { - return MessageSender.send(context, messages[0], thread, forceSms, () -> fragment.releaseOutgoingMessage(id)); - } - - @Override - protected void onPostExecute(Long result) { - sendComplete(result); - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, message); - + SimpleTask.run(() -> { + return MessageSender.send(context, message, thread, forceSms, () -> fragment.releaseOutgoingMessage(id)); + }, this::sendComplete); }) .execute(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index baaca784dc..8ffa5b7c33 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -327,6 +327,8 @@ public class ConversationFragment extends LoggingFragment { public void onActivityCreated(Bundle bundle) { super.onActivityCreated(bundle); + Log.d(TAG, "[onActivityCreated]"); + initializeScrollButtonAnimations(); initializeResources(); initializeMessageRequestViewModel(); @@ -377,6 +379,8 @@ public class ConversationFragment extends LoggingFragment { } public void onNewIntent() { + Log.d(TAG, "[onNewIntent]"); + if (actionMode != null) { actionMode.finish(); } @@ -673,9 +677,12 @@ public class ConversationFragment extends LoggingFragment { } public void reload(Recipient recipient, long threadId) { + Log.d(TAG, "[reload] Recipient: " + recipient.getId() + ", ThreadId: " + threadId); this.recipient = recipient.live(); if (this.threadId != threadId) { + Log.i(TAG, "ThreadId changed from " + this.threadId + " to " + threadId + ". Recipient was " + this.recipient.getId() + " and is now " + recipient.getId()); + this.threadId = threadId; messageRequestViewModel.setConversationInfo(recipient.getId(), threadId); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java index 37b4bd69af..5aa84297dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationViewModel.java @@ -115,7 +115,7 @@ class ConversationViewModel extends ViewModel { @MainThread void onConversationDataAvailable(@NonNull RecipientId recipientId, long threadId, int startingPosition) { - Log.d(TAG, "[onConversationDataAvailable] threadId: " + threadId + ", startingPosition: " + startingPosition); + Log.d(TAG, "[onConversationDataAvailable] recipientId: " + recipientId + ", threadId: " + threadId + ", startingPosition: " + startingPosition); this.jumpToPosition = startingPosition; this.threadId.setValue(threadId); 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 6e122103db..5abc8abb5a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -1053,7 +1053,13 @@ public class ThreadDatabase extends Database { public long getOrCreateValidThreadId(@NonNull Recipient recipient, long candidateId, int distributionType) { if (candidateId != -1) { Optional remapped = RemappedRecords.getInstance().getThread(context, candidateId); - return remapped.isPresent() ? remapped.get() : candidateId; + + if (remapped.isPresent()) { + Log.i(TAG, "Using remapped threadId: " + candidateId + " -> " + remapped.get()); + return remapped.get(); + } else { + return candidateId; + } } else { return getThreadIdFor(recipient, distributionType); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index f905db344d..2abe6e30d1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -155,10 +155,10 @@ public final class PushGroupSendJob extends PushSendJob { { MessageDatabase database = DatabaseFactory.getMmsDatabase(context); OutgoingMediaMessage message = database.getOutgoingMessage(messageId); + long threadId = database.getMessageRecord(messageId).getThreadId(); List existingNetworkFailures = message.getNetworkFailures(); List existingIdentityMismatches = message.getIdentityKeyMismatches(); - long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(message.getRecipient()); ApplicationDependencies.getJobManager().cancelAllInQueue(TypingSendJob.getQueue(threadId)); if (database.isSent(messageId)) { @@ -177,7 +177,7 @@ public final class PushGroupSendJob extends PushSendJob { } try { - log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId); + log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getRecipient().getId() + ", Thread: " + threadId); if (!groupRecipient.resolve().isProfileSharing() && !database.isGroupQuitMessage(messageId)) { RecipientUtil.shareProfileIfFirstSecureMessage(context, groupRecipient); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 2783ca0b2a..1554496b4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -110,6 +110,7 @@ public class PushMediaSendJob extends PushSendJob { ExpiringMessageManager expirationManager = ApplicationContext.getInstance(context).getExpiringMessageManager(); MessageDatabase database = DatabaseFactory.getMmsDatabase(context); OutgoingMediaMessage message = database.getOutgoingMessage(messageId); + long threadId = database.getMessageRecord(messageId).getThreadId(); if (database.isSent(messageId)) { warn(TAG, String.valueOf(message.getSentTimeMillis()), "Message " + messageId + " was already sent. Ignoring."); @@ -117,7 +118,7 @@ public class PushMediaSendJob extends PushSendJob { } try { - log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId); + log(TAG, String.valueOf(message.getSentTimeMillis()), "Sending message: " + messageId + ", Recipient: " + message.getRecipient().getId() + ", Thread: " + threadId); RecipientUtil.shareProfileIfFirstSecureMessage(context, message.getRecipient()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index 86a16248b3..368437c9e2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -83,7 +83,7 @@ public class PushTextSendJob extends PushSendJob { } try { - log(TAG, String.valueOf(record.getDateSent()), "Sending message: " + messageId); + log(TAG, String.valueOf(record.getDateSent()), "Sending message: " + messageId + ", Recipient: " + record.getRecipient().getId() + ", Thread: " + record.getThreadId()); RecipientUtil.shareProfileIfFirstSecureMessage(context, record.getRecipient());