41 lines
2.3 KiB
Kotlin
41 lines
2.3 KiB
Kotlin
package org.thoughtcrime.securesms.util
|
|
|
|
import android.content.Context
|
|
import org.session.libsession.messaging.messages.Destination
|
|
import org.session.libsession.messaging.messages.control.ConfigurationMessage
|
|
import org.session.libsession.messaging.sending_receiving.MessageSender
|
|
import org.session.libsession.utilities.Address
|
|
import org.session.libsession.utilities.TextSecurePreferences
|
|
import org.thoughtcrime.securesms.loki.utilities.ContactUtilities
|
|
|
|
object ConfigurationMessageUtilities {
|
|
|
|
@JvmStatic
|
|
fun syncConfigurationIfNeeded(context: Context) {
|
|
val userPublicKey = TextSecurePreferences.getLocalNumber(context) ?: return
|
|
val lastSyncTime = TextSecurePreferences.getLastConfigurationSyncTime(context)
|
|
val now = System.currentTimeMillis()
|
|
if (now - lastSyncTime < 7 * 24 * 60 * 60 * 1000) return
|
|
val contacts = ContactUtilities.getAllContacts(context).filter { recipient ->
|
|
!recipient.isBlocked && !recipient.name.isNullOrEmpty() && !recipient.isLocalNumber && recipient.address.serialize().isNotEmpty()
|
|
}.map { recipient ->
|
|
ConfigurationMessage.Contact(recipient.address.serialize(), recipient.name!!, recipient.profileAvatar, recipient.profileKey)
|
|
}
|
|
val configurationMessage = ConfigurationMessage.getCurrent(contacts) ?: return
|
|
MessageSender.send(configurationMessage, Address.fromSerialized(userPublicKey))
|
|
TextSecurePreferences.setLastConfigurationSyncTime(context, now)
|
|
}
|
|
|
|
fun forceSyncConfigurationNowIfNeeded(context: Context) {
|
|
val userPublicKey = TextSecurePreferences.getLocalNumber(context) ?: return
|
|
val contacts = ContactUtilities.getAllContacts(context).filter { recipient ->
|
|
!recipient.isGroupRecipient && !recipient.isBlocked && !recipient.name.isNullOrEmpty() && !recipient.isLocalNumber && recipient.address.serialize().isNotEmpty()
|
|
}.map { recipient ->
|
|
ConfigurationMessage.Contact(recipient.address.serialize(), recipient.name!!, recipient.profileAvatar, recipient.profileKey)
|
|
}
|
|
val configurationMessage = ConfigurationMessage.getCurrent(contacts) ?: return
|
|
MessageSender.send(configurationMessage, Destination.from(Address.fromSerialized(userPublicKey)))
|
|
TextSecurePreferences.setLastConfigurationSyncTime(context, System.currentTimeMillis())
|
|
}
|
|
|
|
} |