2020-05-12 11:46:11 +10:00
|
|
|
package org.thoughtcrime.securesms.loki.protocol
|
2020-02-14 11:18:23 +11:00
|
|
|
|
|
|
|
import android.content.Context
|
2020-05-13 12:29:31 +10:00
|
|
|
import org.thoughtcrime.securesms.ApplicationContext
|
2020-02-14 11:18:23 +11:00
|
|
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
|
|
|
import org.whispersystems.libsignal.loki.LokiSessionResetProtocol
|
|
|
|
import org.whispersystems.libsignal.loki.LokiSessionResetStatus
|
|
|
|
import org.whispersystems.libsignal.protocol.PreKeySignalMessage
|
|
|
|
|
|
|
|
class LokiSessionResetImplementation(private val context: Context) : LokiSessionResetProtocol {
|
|
|
|
|
2020-05-13 10:24:20 +10:00
|
|
|
override fun getSessionResetStatus(hexEncodedPublicKey: String): LokiSessionResetStatus {
|
|
|
|
return DatabaseFactory.getLokiThreadDatabase(context).getSessionResetStatus(hexEncodedPublicKey)
|
|
|
|
}
|
2020-02-14 11:18:23 +11:00
|
|
|
|
2020-05-13 10:24:20 +10:00
|
|
|
override fun setSessionResetStatus(hexEncodedPublicKey: String, sessionResetStatus: LokiSessionResetStatus) {
|
|
|
|
return DatabaseFactory.getLokiThreadDatabase(context).setSessionResetStatus(hexEncodedPublicKey, sessionResetStatus)
|
2020-02-14 11:18:23 +11:00
|
|
|
}
|
|
|
|
|
2020-05-13 10:24:20 +10:00
|
|
|
override fun onNewSessionAdopted(hexEncodedPublicKey: String, oldSessionResetStatus: LokiSessionResetStatus) {
|
|
|
|
if (oldSessionResetStatus == LokiSessionResetStatus.IN_PROGRESS) {
|
2020-05-13 12:29:31 +10:00
|
|
|
val ephemeralMessage = EphemeralMessage.create(hexEncodedPublicKey)
|
|
|
|
ApplicationContext.getInstance(context).jobManager.add(PushEphemeralMessageSendJob(ephemeralMessage))
|
2020-05-13 10:24:20 +10:00
|
|
|
}
|
|
|
|
// TODO: Show session reset succeed message
|
|
|
|
}
|
2020-02-14 11:18:23 +11:00
|
|
|
|
2020-05-13 10:24:20 +10:00
|
|
|
override fun validatePreKeySignalMessage(sender: String, message: PreKeySignalMessage) {
|
|
|
|
val preKeyRecord = DatabaseFactory.getLokiPreKeyRecordDatabase(context).getPreKeyRecord(sender)
|
|
|
|
check(preKeyRecord != null) { "Received a background message from a user without an associated pre key record." }
|
|
|
|
check(preKeyRecord.id == (message.preKeyId ?: -1)) { "Received a background message from an unknown source." }
|
|
|
|
}
|
2020-02-14 11:18:23 +11:00
|
|
|
}
|