From 5eed7a3cdd965cb3a1ad0a1189b652acc3ae3937 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 14 May 2021 13:13:02 +1000 Subject: [PATCH] Clean --- .../securesms/loki/activities/HomeActivity.kt | 64 ++++++++----------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index ee5e22e857..9382bf83e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -24,7 +24,6 @@ import kotlinx.android.synthetic.main.activity_home.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import network.loki.messenger.R import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -315,25 +314,24 @@ class HomeActivity : PassphraseRequiredActionBarActivity(), val threadID = thread.threadId val recipient = thread.recipient val threadDB = DatabaseFactory.getThreadDatabase(this) - val dialogMessage: String + val message: String if (recipient.isGroupRecipient) { val group = DatabaseFactory.getGroupDatabase(this).getGroup(recipient.address.toString()).orNull() if (group != null && group.admins.map { it.toString() }.contains(TextSecurePreferences.getLocalNumber(this))) { - dialogMessage = "Because you are the creator of this group it will be deleted for everyone. This cannot be undone." + message = "Because you are the creator of this group it will be deleted for everyone. This cannot be undone." } else { - dialogMessage = resources.getString(R.string.activity_home_leave_group_dialog_message) + message = resources.getString(R.string.activity_home_leave_group_dialog_message) } } else { - dialogMessage = resources.getString(R.string.activity_home_delete_conversation_dialog_message) + message = resources.getString(R.string.activity_home_delete_conversation_dialog_message) } val dialog = AlertDialog.Builder(this) - dialog.setMessage(dialogMessage) + dialog.setMessage(message) dialog.setPositiveButton(R.string.yes) { _, _ -> lifecycleScope.launch(Dispatchers.Main) { val context = this@HomeActivity as Context - - DatabaseFactory.getSessionJobDatabase(this@HomeActivity).cancelPendingMessageSendJobs(threadID) - + // Cancel any outstanding jobs + DatabaseFactory.getSessionJobDatabase(context).cancelPendingMessageSendJobs(threadID) // Send a leave group message if this is an active closed group if (recipient.address.isClosedGroup && DatabaseFactory.getGroupDatabase(context).isActive(recipient.address.toGroupString())) { var isClosedGroup: Boolean @@ -352,34 +350,28 @@ class HomeActivity : PassphraseRequiredActionBarActivity(), return@launch } } - - withContext(Dispatchers.IO) { - val publicChat = DatabaseFactory.getLokiThreadDatabase(context).getPublicChat(threadID) - val openGroupV2 = DatabaseFactory.getLokiThreadDatabase(context).getOpenGroupChat(threadID) - //TODO Move open group related logic to OpenGroupUtilities / PublicChatManager / GroupManager - if (publicChat != null) { - val apiDB = DatabaseFactory.getLokiAPIDatabase(context) - apiDB.removeLastMessageServerID(publicChat.channel, publicChat.server) - apiDB.removeLastDeletionServerID(publicChat.channel, publicChat.server) - apiDB.clearOpenGroupProfilePictureURL(publicChat.channel, publicChat.server) - - OpenGroupAPI.leave(publicChat.channel, publicChat.server) - - ApplicationContext.getInstance(context).publicChatManager - .removeChat(publicChat.server, publicChat.channel) - } else if (openGroupV2 != null) { - val apiDB = DatabaseFactory.getLokiAPIDatabase(context) - apiDB.removeLastMessageServerID(openGroupV2.room, openGroupV2.server) - apiDB.removeLastDeletionServerID(openGroupV2.room, openGroupV2.server) - - ApplicationContext.getInstance(context).publicChatManager - .removeChat(openGroupV2.server, openGroupV2.room) - } else { - threadDB.deleteConversation(threadID) - } - ApplicationContext.getInstance(context).messageNotifier.updateNotification(context) + // Delete the conversation + val v1OpenGroup = DatabaseFactory.getLokiThreadDatabase(context).getPublicChat(threadID) + val v2OpenGroup = DatabaseFactory.getLokiThreadDatabase(context).getOpenGroupChat(threadID) + if (v1OpenGroup != null) { + val apiDB = DatabaseFactory.getLokiAPIDatabase(context) + apiDB.removeLastMessageServerID(v1OpenGroup.channel, v1OpenGroup.server) + apiDB.removeLastDeletionServerID(v1OpenGroup.channel, v1OpenGroup.server) + apiDB.clearOpenGroupProfilePictureURL(v1OpenGroup.channel, v1OpenGroup.server) + OpenGroupAPI.leave(v1OpenGroup.channel, v1OpenGroup.server) + ApplicationContext.getInstance(context).publicChatManager + .removeChat(v1OpenGroup.server, v1OpenGroup.channel) + } else if (v2OpenGroup != null) { + val apiDB = DatabaseFactory.getLokiAPIDatabase(context) + apiDB.removeLastMessageServerID(v2OpenGroup.room, v2OpenGroup.server) + apiDB.removeLastDeletionServerID(v2OpenGroup.room, v2OpenGroup.server) + ApplicationContext.getInstance(context).publicChatManager + .removeChat(v2OpenGroup.server, v2OpenGroup.room) + } else { + threadDB.deleteConversation(threadID) } - + // Update the badge count + ApplicationContext.getInstance(context).messageNotifier.updateNotification(context) // Notify the user val toastMessage = if (recipient.isGroupRecipient) R.string.MessageRecord_left_group else R.string.activity_home_conversation_deleted_message Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show()