From 29679ed266cb98213fde53cc1e78a93626b21548 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Mon, 25 May 2020 13:58:30 +1000 Subject: [PATCH] Hopefully unbork existing clients --- .../securesms/loki/activities/HomeActivity.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index 8a05b8736b..a061abe468 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -49,6 +49,8 @@ import org.whispersystems.signalservice.loki.protocol.mentions.MentionsManager import org.whispersystems.signalservice.loki.protocol.meta.SessionMetaProtocol import org.whispersystems.signalservice.loki.protocol.sessionmanagement.SessionManagementProtocol import org.whispersystems.signalservice.loki.protocol.syncmessages.SyncMessagesProtocol +import org.whispersystems.signalservice.loki.protocol.todo.LokiMessageFriendRequestStatus +import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendRequestStatus import kotlin.math.abs class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListener, SeedReminderViewDelegate, NewConversationButtonSetViewDelegate { @@ -165,6 +167,28 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe SyncMessagesProtocol.configureIfNeeded(apiDB, userPublicKey) application.lokiPublicChatManager.startPollersIfNeeded() } + // TODO: Temporary hack to unbork existing clients + val c = DatabaseFactory.getThreadDatabase(this).conversationList + val lokiMessageDB = DatabaseFactory.getLokiMessageDatabase(this) + fun unborkThreadIfNeeded() { + try { + val threadID = c.getLong(c.getColumnIndexOrThrow(ThreadDatabase.ID)) + val hasPendingFR = (DatabaseFactory.getLokiThreadDatabase(this).getFriendRequestStatus(threadID) == LokiThreadFriendRequestStatus.REQUEST_RECEIVED) + if (!hasPendingFR) { return } + val lastMessageID = org.thoughtcrime.securesms.loki.protocol.FriendRequestProtocol.getLastMessageID(this, threadID) + if (lastMessageID == null) { return } + val lastMessageFRStatus = lokiMessageDB.getFriendRequestStatus(lastMessageID) + if (lastMessageFRStatus == LokiMessageFriendRequestStatus.REQUEST_PENDING) { return } + lokiMessageDB.setFriendRequestStatus(lastMessageID, LokiMessageFriendRequestStatus.REQUEST_PENDING) + } catch (exception: Exception) { + // Do nothing + } + } + c.moveToFirst() + unborkThreadIfNeeded() + while (c.moveToNext()) { + unborkThreadIfNeeded() + } } override fun onResume() {