From 0c535904fc305afbcfb4d47575ac03ffaeb9e552 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 16 Mar 2021 11:37:40 -0300 Subject: [PATCH] Restart activity in onNewIntent if activity is not yet initialized. --- .../conversation/ConversationActivity.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 7f0448f78f..421848b75f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -400,6 +400,8 @@ public class ConversationActivity extends PassphraseRequiredActivity private boolean isMmsEnabled = true; private boolean isSecurityInitialized = false; + private volatile boolean screenInitialized = false; + private IdentityRecordList identityRecords = new IdentityRecordList(Collections.emptyList()); private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme(); private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); @@ -449,6 +451,11 @@ public class ConversationActivity extends PassphraseRequiredActivity initializeSecurity(recipient.get().isRegistered(), isDefaultSms).addListener(new AssertedSuccessListener() { @Override public void onSuccess(Boolean result) { + if (isFinishing()) { + Log.w(TAG, "Activity is finishing. Not proceeding with initialization."); + return; + } + initializeProfiles(); initializeGv1Migration(); initializeDraft(args).addListener(new AssertedSuccessListener() { @@ -469,6 +476,8 @@ public class ConversationActivity extends PassphraseRequiredActivity composeText.addTextChangedListener(typingTextWatcher); } composeText.setSelection(composeText.length(), composeText.length()); + + screenInitialized = true; } }); } @@ -486,6 +495,13 @@ public class ConversationActivity extends PassphraseRequiredActivity return; } + if (!screenInitialized) { + Log.w(TAG, "Activity is in the middle of initialization. Restarting."); + finish(); + startActivity(intent); + return; + } + reactWithAnyEmojiStartPage = -1; if (!Util.isEmpty(composeText) || attachmentManager.isAttachmentPresent() || inputPanel.getQuote().isPresent()) { saveDraft();