diff --git a/app/src/main/java/org/thoughtcrime/securesms/ShareActivity.java b/app/src/main/java/org/thoughtcrime/securesms/ShareActivity.java index 3b939bf647..c2c3b38b29 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ShareActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ShareActivity.java @@ -82,6 +82,8 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity private String mimeType; private boolean isPassingAlongMedia; + private ResolveMediaTask resolveTask; + @Override protected void onCreate(Bundle icicle, boolean ready) { if (!getIntent().hasExtra(ContactSelectionListFragment.DISPLAY_MODE)) { @@ -190,7 +192,8 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity } else { contactsFragment.getView().setVisibility(View.GONE); progressWheel.setVisibility(View.VISIBLE); - new ResolveMediaTask(context).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, streamExtra); + resolveTask = new ResolveMediaTask(context); + resolveTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, streamExtra); } } @@ -262,6 +265,12 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity public void onContactDeselected(String number) { } + @Override + protected void onDestroy() { + super.onDestroy(); + if (resolveTask != null) resolveTask.cancel(true); + } + @SuppressLint("StaticFieldLeak") private class ResolveMediaTask extends AsyncTask { private final Context context; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index 5ecddd2147..32e1dcff41 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -169,9 +169,11 @@ class ConversationViewModel( communityWriteAccessJob = viewModelScope.launch { OpenGroupManager.getCommunitiesWriteAccessFlow() .map { - if(openGroup?.groupId != null) - it[openGroup?.groupId] - else null + withContext(Dispatchers.Default) { + if (openGroup?.groupId != null) + it[openGroup?.groupId] + else null + } } .filterNotNull() .collect{ diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsActivity.kt index e27345afc7..d75c5b7978 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsActivity.kt @@ -37,7 +37,7 @@ class MessageRequestsActivity : PassphraseRequiredActionBarActivity(), Conversat private val viewModel: MessageRequestsViewModel by viewModels() private val adapter: MessageRequestsAdapter by lazy { - MessageRequestsAdapter(context = this, cursor = threadDb.unapprovedConversationList, listener = this) + MessageRequestsAdapter(context = this, cursor = null, listener = this) } override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) { @@ -114,7 +114,7 @@ class MessageRequestsActivity : PassphraseRequiredActionBarActivity(), Conversat } private fun updateEmptyState() { - val threadCount = (binding.recyclerView.adapter as MessageRequestsAdapter).itemCount + val threadCount = adapter.itemCount binding.emptyStateContainer.isVisible = threadCount == 0 binding.clearAllMessageRequestsButton.isVisible = threadCount != 0 } diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/ClearAllDataDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/ClearAllDataDialog.kt index 98ad62dcb3..80f45b1db3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/ClearAllDataDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/ClearAllDataDialog.kt @@ -127,7 +127,7 @@ class ClearAllDataDialog : DialogFragment() { ApplicationContext.getInstance(context).clearAllDataAndRestart().let { success -> withContext(Main) { if (success) { - dismiss() + dismissAllowingStateLoss() } else { Toast.makeText(ApplicationContext.getInstance(requireContext()), R.string.errorUnknown, Toast.LENGTH_LONG).show() } @@ -161,8 +161,15 @@ class ClearAllDataDialog : DialogFragment() { } else if (deletionResultMap.values.all { it }) { // ..otherwise if the network data deletion was successful proceed to delete the local data as well. - ApplicationContext.getInstance(context).clearAllDataAndRestart() - withContext(Main) { dismiss() } + ApplicationContext.getInstance(context).clearAllDataAndRestart().let { success -> + withContext(Main) { + if (success) { + dismissAllowingStateLoss() + } else { + Toast.makeText(ApplicationContext.getInstance(requireContext()), R.string.errorUnknown, Toast.LENGTH_LONG).show() + } + } + } } } }