diff --git a/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt b/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt index fe9e07344c..6df09a2d07 100644 --- a/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt +++ b/src/org/thoughtcrime/securesms/loki/protocol/SessionManagementProtocol.kt @@ -58,7 +58,8 @@ object SessionManagementProtocol { val apiDB = DatabaseFactory.getLokiAPIDatabase(context) val sentTimestamp = apiDB.getSessionRequestSentTimestamp(publicKey) ?: 0 val processedTimestamp = apiDB.getSessionRequestProcessedTimestamp(publicKey) ?: 0 - return timestamp > sentTimestamp && timestamp > processedTimestamp + val restorationTimestamp = TextSecurePreferences.getRestorationTime(context) + return timestamp > sentTimestamp && timestamp > processedTimestamp && timestamp > restorationTimestamp } @JvmStatic @@ -95,10 +96,13 @@ object SessionManagementProtocol { } @JvmStatic - fun triggerSessionRestorationUI(context: Context, publicKey: String) { + fun triggerSessionRestorationUI(context: Context, publicKey: String, errorTimestamp: Long) { val masterDevicePublicKey = MultiDeviceProtocol.shared.getMasterDevice(publicKey) ?: publicKey val masterDeviceAsRecipient = recipient(context, masterDevicePublicKey) if (masterDeviceAsRecipient.isGroupRecipient) { return } + if (TextSecurePreferences.getRestorationTime(context) > errorTimestamp) { + return ApplicationContext.getInstance(context).sendSessionRequestIfNeeded(publicKey) + } val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(masterDeviceAsRecipient) DatabaseFactory.getLokiThreadDatabase(context).addSessionRestoreDevice(threadID, publicKey) }