You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-android/src/org/thoughtcrime/securesms/loki/protocol/SessionMetaProtocol.kt

38 lines
2.0 KiB
Kotlin

5 years ago
package org.thoughtcrime.securesms.loki.protocol
import android.content.Context
import org.thoughtcrime.securesms.database.Address
import org.thoughtcrime.securesms.database.DatabaseFactory
import org.thoughtcrime.securesms.recipients.Recipient
import org.whispersystems.signalservice.loki.protocol.multidevice.MultiDeviceProtocol
import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendRequestStatus
object SessionMetaProtocol {
@JvmStatic
fun canUserReplyToNotification(recipient: Recipient, context: Context): Boolean {
val isGroup = recipient.isGroupRecipient
if (isGroup) { return !recipient.address.isRSSFeed }
val linkedDevices = MultiDeviceProtocol.shared.getAllLinkedDevices(recipient.address.serialize())
return linkedDevices.any { device ->
val recipient = Recipient.from(context, Address.fromSerialized(device), false)
val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient)
DatabaseFactory.getLokiThreadDatabase(context).getFriendRequestStatus(threadID) == LokiThreadFriendRequestStatus.FRIENDS
}
}
@JvmStatic
fun shouldSendReadReceipt(publicKey: String, context: Context): Boolean {
val recipient = Recipient.from(context, Address.fromSerialized(publicKey),false)
val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient)
return DatabaseFactory.getLokiThreadDatabase(context).getFriendRequestStatus(threadID) == LokiThreadFriendRequestStatus.FRIENDS
}
@JvmStatic
fun shouldSendTypingIndicator(recipient: Recipient, context: Context): Boolean {
if (recipient.isGroupRecipient) { return false }
val recipient = Recipient.from(context, Address.fromSerialized(recipient.address.serialize()),false)
val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient)
return DatabaseFactory.getLokiThreadDatabase(context).getFriendRequestStatus(threadID) == LokiThreadFriendRequestStatus.FRIENDS
}
}