2021-07-09 05:18:48 +02:00
|
|
|
package org.thoughtcrime.securesms.conversation.v2.utilities
|
2019-10-10 01:39:56 +02:00
|
|
|
|
|
|
|
import android.content.Context
|
2021-04-26 05:12:05 +02:00
|
|
|
import org.session.libsession.messaging.mentions.MentionsManager
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.session.libsession.utilities.TextSecurePreferences
|
2019-10-10 01:39:56 +02:00
|
|
|
import org.thoughtcrime.securesms.database.model.MessageRecord
|
2021-10-04 09:51:19 +02:00
|
|
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
2019-10-10 01:39:56 +02:00
|
|
|
|
2020-05-11 08:19:26 +02:00
|
|
|
object MentionManagerUtilities {
|
2019-10-10 01:39:56 +02:00
|
|
|
|
2020-05-30 00:53:00 +02:00
|
|
|
fun populateUserPublicKeyCacheIfNeeded(threadID: Long, context: Context) {
|
2021-08-02 08:59:55 +02:00
|
|
|
// exit early if we need to
|
|
|
|
if (MentionsManager.userPublicKeyCache[threadID] != null) return
|
|
|
|
|
2019-10-10 01:39:56 +02:00
|
|
|
val result = mutableSetOf<String>()
|
2021-10-04 09:51:19 +02:00
|
|
|
val recipient = DatabaseComponent.get(context).threadDatabase().getRecipientForThreadId(threadID) ?: return
|
2021-08-03 05:35:38 +02:00
|
|
|
if (recipient.address.isClosedGroup) {
|
2021-10-04 09:51:19 +02:00
|
|
|
val members = DatabaseComponent.get(context).groupDatabase().getGroupMembers(recipient.address.toGroupString(), false).map { it.address.serialize() }
|
2020-05-30 00:53:00 +02:00
|
|
|
result.addAll(members)
|
|
|
|
} else {
|
2021-10-04 09:51:19 +02:00
|
|
|
val messageDatabase = DatabaseComponent.get(context).mmsSmsDatabase()
|
2021-08-03 05:35:38 +02:00
|
|
|
val reader = messageDatabase.readerFor(messageDatabase.getConversation(threadID, 0, 200))
|
2020-05-30 00:53:00 +02:00
|
|
|
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
|
|
|
}
|
2020-05-30 00:53:00 +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
|
|
|
}
|
|
|
|
}
|