mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-18 02:18:28 +00:00
feat: add expiration updates via config for contacts as well
This commit is contained in:
parent
a9e6db4734
commit
eca5712282
@ -1052,7 +1052,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
||||
if (group?.isActive == false) { return }
|
||||
}
|
||||
ExpirationDialog.show(this, thread.expireMessages) { expirationTime: Int ->
|
||||
recipientDb.setExpireMessages(thread, expirationTime)
|
||||
storage.setExpirationTimer(thread.address.serialize(), expirationTime)
|
||||
val message = ExpirationTimerUpdate(expirationTime)
|
||||
message.recipient = thread.address.serialize()
|
||||
message.sentTimestamp = System.currentTimeMillis()
|
||||
|
@ -9,6 +9,7 @@ import network.loki.messenger.libsession_util.UserGroupsConfig
|
||||
import network.loki.messenger.libsession_util.UserProfile
|
||||
import network.loki.messenger.libsession_util.util.BaseCommunityInfo
|
||||
import network.loki.messenger.libsession_util.util.Conversation
|
||||
import network.loki.messenger.libsession_util.util.ExpiryMode
|
||||
import network.loki.messenger.libsession_util.util.UserPic
|
||||
import org.session.libsession.avatars.AvatarHelper
|
||||
import org.session.libsession.database.StorageProtocol
|
||||
@ -359,6 +360,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper, private val configF
|
||||
setRecipientApprovedMe(recipient, contact.approvedMe)
|
||||
profileManager.setName(context, recipient, contact.name)
|
||||
profileManager.setNickname(context, recipient, contact.nickname)
|
||||
|
||||
if (contact.profilePicture != UserPic.DEFAULT) {
|
||||
val (url, key) = contact.profilePicture
|
||||
if (key.size != ProfileKeyUtil.PROFILE_KEY_BYTES) return@forEach
|
||||
@ -460,7 +462,6 @@ class Storage(context: Context, helper: SQLCipherOpenHelper, private val configF
|
||||
addClosedGroupEncryptionKeyPair(keyPair, group.sessionId, SnodeAPI.nowWithOffset)
|
||||
// Set expiration timer
|
||||
val expireTimer = group.disappearingTimer
|
||||
setExpirationTimer()
|
||||
setExpirationTimer(groupId, expireTimer.toInt())
|
||||
// Notify the PN server
|
||||
PushNotificationAPI.performOperation(PushNotificationAPI.ClosedGroupOperation.Subscribe, group.sessionId, localUserPublicKey)
|
||||
@ -774,9 +775,21 @@ class Storage(context: Context, helper: SQLCipherOpenHelper, private val configF
|
||||
.updateTimestampUpdated(groupID, updatedTimestamp)
|
||||
}
|
||||
|
||||
override fun setExpirationTimer(groupID: String, duration: Int) {
|
||||
val recipient = Recipient.from(context, fromSerialized(groupID), false)
|
||||
override fun setExpirationTimer(address: String, duration: Int) {
|
||||
val recipient = Recipient.from(context, fromSerialized(address), false)
|
||||
DatabaseComponent.get(context).recipientDatabase().setExpireMessages(recipient, duration)
|
||||
if (recipient.isContactRecipient) {
|
||||
configFactory.contacts?.upsertContact(address) {
|
||||
this.expiryMode = if (duration != 0) {
|
||||
ExpiryMode.AfterRead(duration.toLong())
|
||||
} else { // = 0 / delete
|
||||
ExpiryMode.NONE
|
||||
}
|
||||
}
|
||||
if (configFactory.contacts?.needsPush() == true) {
|
||||
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun setServerCapabilities(server: String, capabilities: List<String>) {
|
||||
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.service;
|
||||
import android.content.Context;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.session.libsession.messaging.MessagingModuleConfiguration;
|
||||
import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate;
|
||||
import org.session.libsession.messaging.messages.signal.IncomingMediaMessage;
|
||||
import org.session.libsession.messaging.messages.signal.OutgoingExpirationUpdateMessage;
|
||||
@ -123,7 +124,7 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
|
||||
database.insertSecureDecryptedMessageInbox(mediaMessage, -1, true);
|
||||
|
||||
//set the timer to the conversation
|
||||
DatabaseComponent.get(context).recipientDatabase().setExpireMessages(recipient, duration);
|
||||
MessagingModuleConfiguration.getShared().getStorage().setExpirationTimer(recipient.getAddress().serialize(), duration);
|
||||
|
||||
} catch (IOException | MmsException ioe) {
|
||||
Log.e("Loki", "Failed to insert expiration update message.");
|
||||
@ -149,7 +150,7 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
|
||||
recipient = Recipient.from(context, Address.fromSerialized(GroupUtil.doubleEncodeGroupID(groupId)), false);
|
||||
}
|
||||
//set the timer to the conversation
|
||||
DatabaseComponent.get(context).recipientDatabase().setExpireMessages(recipient, duration);
|
||||
MessagingModuleConfiguration.getShared().getStorage().setExpirationTimer(recipient.getAddress().serialize(), duration);
|
||||
|
||||
} catch (MmsException | IOException ioe) {
|
||||
Log.e("Loki", "Failed to insert expiration update message.");
|
||||
|
@ -2,12 +2,12 @@ package network.loki.messenger.libsession_util.util
|
||||
|
||||
data class Contact(
|
||||
val id: String,
|
||||
val name: String = "",
|
||||
val nickname: String = "",
|
||||
val approved: Boolean = false,
|
||||
val approvedMe: Boolean = false,
|
||||
val blocked: Boolean = false,
|
||||
val profilePicture: UserPic = UserPic.DEFAULT,
|
||||
val priority: Int = 0,
|
||||
val expiryMode: ExpiryMode
|
||||
var name: String = "",
|
||||
var nickname: String = "",
|
||||
var approved: Boolean = false,
|
||||
var approvedMe: Boolean = false,
|
||||
var blocked: Boolean = false,
|
||||
var profilePicture: UserPic = UserPic.DEFAULT,
|
||||
var priority: Int = 0,
|
||||
var expiryMode: ExpiryMode
|
||||
)
|
@ -142,7 +142,7 @@ interface StorageProtocol {
|
||||
fun getLatestClosedGroupEncryptionKeyPair(groupPublicKey: String): ECKeyPair?
|
||||
fun updateFormationTimestamp(groupID: String, formationTimestamp: Long)
|
||||
fun updateTimestampUpdated(groupID: String, updatedTimestamp: Long)
|
||||
fun setExpirationTimer(groupID: String, duration: Int)
|
||||
fun setExpirationTimer(address: String, duration: Int)
|
||||
|
||||
// Groups
|
||||
fun getAllGroups(): List<GroupRecord>
|
||||
|
Loading…
x
Reference in New Issue
Block a user