mirror of
https://github.com/oxen-io/session-android.git
synced 2023-12-14 02:53:01 +01:00
206505abe8
* feat: Message requests * Apply contact sync message * Filter based on message requests toggle * Add message requests screen * Implement message requests screen * Handle message request buttons * Handle approval syncing * Display message request response * Display pending message request * Display pending message request * Add approval migrations * Send message request response * Fix conversation filters * Add approval migration * Handle message request response * Update message request response proto * Update message request response handling * Refresh message requests * Show message request banner on new message request * Message request item layout tweaks * Fix latest unapproved conversation query * Handle sent message request responses on restore * QA feedback tweaks * Remove send limit on message requests * Config message handling tweaks * Reverse conversation upon message request approval * Remove read receipts, delete declined conversations * Fix contact filtering in config messages * Fix message request order and handle deletion * Fix message request snippet on home screen * Refresh message request list after decline or clearing all * Fix message request reversal * Fix message request notifications * Disable media buttons for message requests * Hide message request banner after reading * Refresh message request banner
58 lines
2.9 KiB
Kotlin
58 lines
2.9 KiB
Kotlin
package org.thoughtcrime.securesms.util
|
|
|
|
import android.content.Context
|
|
import nl.komponents.kovenant.Promise
|
|
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
|
|
|
|
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.name.isNullOrEmpty() && !recipient.isLocalNumber && recipient.address.serialize().isNotEmpty()
|
|
}.map { recipient ->
|
|
ConfigurationMessage.Contact(
|
|
publicKey = recipient.address.serialize(),
|
|
name = recipient.name!!,
|
|
profilePicture = recipient.profileAvatar,
|
|
profileKey = recipient.profileKey,
|
|
isApproved = recipient.isApproved,
|
|
isBlocked = recipient.isBlocked,
|
|
didApproveMe = recipient.hasApprovedMe()
|
|
)
|
|
}
|
|
val configurationMessage = ConfigurationMessage.getCurrent(contacts) ?: return
|
|
MessageSender.send(configurationMessage, Address.fromSerialized(userPublicKey))
|
|
TextSecurePreferences.setLastConfigurationSyncTime(context, now)
|
|
}
|
|
|
|
fun forceSyncConfigurationNowIfNeeded(context: Context): Promise<Unit, Exception> {
|
|
val userPublicKey = TextSecurePreferences.getLocalNumber(context) ?: return Promise.ofSuccess(Unit)
|
|
val contacts = ContactUtilities.getAllContacts(context).filter { recipient ->
|
|
!recipient.isGroupRecipient && !recipient.name.isNullOrEmpty() && !recipient.isLocalNumber && recipient.address.serialize().isNotEmpty()
|
|
}.map { recipient ->
|
|
ConfigurationMessage.Contact(
|
|
publicKey = recipient.address.serialize(),
|
|
name = recipient.name!!,
|
|
profilePicture = recipient.profileAvatar,
|
|
profileKey = recipient.profileKey,
|
|
isApproved = recipient.isApproved,
|
|
isBlocked = recipient.isBlocked,
|
|
didApproveMe = recipient.hasApprovedMe()
|
|
)
|
|
}
|
|
val configurationMessage = ConfigurationMessage.getCurrent(contacts) ?: return Promise.ofSuccess(Unit)
|
|
val promise = MessageSender.send(configurationMessage, Destination.from(Address.fromSerialized(userPublicKey)))
|
|
TextSecurePreferences.setLastConfigurationSyncTime(context, System.currentTimeMillis())
|
|
return promise
|
|
}
|
|
|
|
} |