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