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()) } }