session-android/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/MentionManagerUtilities.kt

35 lines
1.6 KiB
Kotlin
Raw Normal View History

2020-05-12 03:46:11 +02:00
package org.thoughtcrime.securesms.loki.utilities
2019-10-10 01:39:56 +02:00
import android.content.Context
import org.session.libsession.utilities.TextSecurePreferences
2021-04-26 05:12:05 +02:00
import org.session.libsession.messaging.mentions.MentionsManager
2019-10-10 01:39:56 +02:00
import org.thoughtcrime.securesms.database.DatabaseFactory
import org.thoughtcrime.securesms.database.model.MessageRecord
2020-05-11 08:19:26 +02:00
object MentionManagerUtilities {
2019-10-10 01:39:56 +02:00
fun populateUserPublicKeyCacheIfNeeded(threadID: Long, context: Context) {
2019-10-10 01:39:56 +02:00
val result = mutableSetOf<String>()
val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadID)
if (recipient != null && recipient.address.isClosedGroup) {
val members = DatabaseFactory.getGroupDatabase(context).getGroupMembers(recipient.address.toGroupString(), false).map { it.address.serialize() }
result.addAll(members)
} else {
2021-05-24 02:27:31 +02:00
if (MentionsManager.userPublicKeyCache[threadID] != null) { return }
val messageDatabase = DatabaseFactory.getMmsSmsDatabase(context)
val reader = messageDatabase.readerFor(messageDatabase.getConversation(threadID))
var record: MessageRecord? = reader.next
while (record != null) {
result.add(record.individualRecipient.address.serialize())
try {
record = reader.next
} catch (exception: Exception) {
record = null
}
2019-10-10 01:39:56 +02:00
}
reader.close()
2021-01-19 00:48:02 +01:00
result.add(TextSecurePreferences.getLocalNumber(context)!!)
2019-10-10 01:39:56 +02:00
}
2021-05-24 02:27:31 +02:00
MentionsManager.userPublicKeyCache[threadID] = result
2019-10-10 01:39:56 +02:00
}
}