2019-06-21 14:18:38 +10:00
|
|
|
package org.thoughtcrime.securesms.loki
|
|
|
|
|
2019-10-07 16:15:06 +11:00
|
|
|
import android.content.Context
|
2019-06-21 14:18:38 +10:00
|
|
|
import android.content.res.Resources
|
|
|
|
import android.os.Build
|
|
|
|
import android.support.annotation.ColorRes
|
2019-10-07 16:15:06 +11:00
|
|
|
import org.thoughtcrime.securesms.database.Address
|
|
|
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
|
|
|
import org.thoughtcrime.securesms.recipients.Recipient
|
|
|
|
import org.whispersystems.signalservice.loki.messaging.LokiThreadFriendRequestStatus
|
2019-06-21 15:29:25 +10:00
|
|
|
import kotlin.math.roundToInt
|
2019-06-21 14:18:38 +10:00
|
|
|
|
|
|
|
fun Resources.getColorWithID(@ColorRes id: Int, theme: Resources.Theme?): Int {
|
|
|
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
|
|
getColor(id, theme)
|
|
|
|
} else {
|
|
|
|
@Suppress("DEPRECATION") getColor(id)
|
|
|
|
}
|
2019-06-21 15:29:25 +10:00
|
|
|
}
|
|
|
|
|
2019-06-24 11:22:53 +10:00
|
|
|
fun toPx(dp: Int, resources: Resources): Int {
|
2019-06-21 15:29:25 +10:00
|
|
|
val scale = resources.displayMetrics.density
|
2019-06-24 11:22:53 +10:00
|
|
|
return (dp * scale).roundToInt()
|
2019-10-07 16:15:06 +11:00
|
|
|
}
|
|
|
|
|
2019-10-15 14:32:23 +11:00
|
|
|
fun isPublicChat(context: Context, recipient: String): Boolean {
|
2019-10-15 13:39:17 +11:00
|
|
|
return DatabaseFactory.getLokiThreadDatabase(context).getAllPublicChats().values.map { it.server }.contains(recipient)
|
2019-10-07 16:15:06 +11:00
|
|
|
}
|
|
|
|
|
|
|
|
fun getFriendPublicKeys(context: Context, devicePublicKeys: Set<String>): Set<String> {
|
|
|
|
val lokiThreadDatabase = DatabaseFactory.getLokiThreadDatabase(context)
|
|
|
|
return devicePublicKeys.mapNotNull { device ->
|
|
|
|
val address = Address.fromSerialized(device)
|
|
|
|
val recipient = Recipient.from(context, address, false)
|
|
|
|
val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdIfExistsFor(recipient)
|
|
|
|
if (threadID < 0) { return@mapNotNull null }
|
|
|
|
val friendRequestStatus = lokiThreadDatabase.getFriendRequestStatus(threadID)
|
|
|
|
if (friendRequestStatus == LokiThreadFriendRequestStatus.FRIENDS) device else null
|
|
|
|
}.toSet()
|
2019-06-21 14:18:38 +10:00
|
|
|
}
|