Implement deleteMessages in SocialBackupManagerImpl

This commit is contained in:
ameba23
2021-06-21 12:25:14 +02:00
parent d975d1dbdd
commit 33549bcbe1

View File

@@ -44,15 +44,15 @@ import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.DeletionResult;
import org.briarproject.briar.api.socialbackup.BackupExistsException;
import org.briarproject.briar.api.socialbackup.BackupMetadata;
import org.briarproject.briar.api.socialbackup.BackupPayload;
import org.briarproject.briar.api.socialbackup.ContactData;
import org.briarproject.briar.api.socialbackup.DarkCrystal;
import org.briarproject.briar.api.socialbackup.ReturnShardPayload;
import org.briarproject.briar.api.socialbackup.Shard;
import org.briarproject.briar.api.socialbackup.BackupPayload;
import org.briarproject.briar.api.socialbackup.ShardMessageHeader;
import org.briarproject.briar.api.socialbackup.ShardReceivedEvent;
import org.briarproject.briar.api.socialbackup.SocialBackupManager;
import org.briarproject.briar.client.ConversationClientImpl;
import org.briarproject.briar.api.socialbackup.ContactData;
import java.util.ArrayList;
import java.util.Collection;
@@ -234,18 +234,24 @@ class SocialBackupManagerImpl extends ConversationClientImpl
return false;
}
public ReturnShardPayload getReturnShardPayload(Transaction txn, ContactId contactId) throws DbException {
GroupId groupId = getContactGroup(db.getContact(txn, contactId)).getId();
return new ReturnShardPayload(getRemoteShard(txn, groupId), getRemoteBackup(txn, groupId));
public ReturnShardPayload getReturnShardPayload(Transaction txn,
ContactId contactId) throws DbException {
GroupId groupId =
getContactGroup(db.getContact(txn, contactId)).getId();
return new ReturnShardPayload(getRemoteShard(txn, groupId),
getRemoteBackup(txn, groupId));
}
public byte[] getReturnShardPayloadBytes(Transaction txn, ContactId contactId) throws DbException {
return messageEncoder.encodeReturnShardPayload(getReturnShardPayload(txn, contactId));
public byte[] getReturnShardPayloadBytes(Transaction txn,
ContactId contactId) throws DbException {
return messageEncoder.encodeReturnShardPayload(
getReturnShardPayload(txn, contactId));
}
public boolean amCustodian(Transaction txn, ContactId contactId) {
try {
GroupId groupId = getContactGroup(db.getContact(txn, contactId)).getId();
GroupId groupId =
getContactGroup(db.getContact(txn, contactId)).getId();
return findMessage(txn, groupId, SHARD, false) != null;
} catch (DbException e) {
return false;
@@ -356,7 +362,8 @@ class SocialBackupManagerImpl extends ConversationClientImpl
.getMessage(txn, messageEntry.getKey());
MessageStatus status = db.getMessageStatus(txn, contactId,
messageEntry.getKey());
headers.add(createShardMessageHeader(message, meta, status));
headers.add(
createShardMessageHeader(message, meta, status));
}
}
return headers;
@@ -395,6 +402,11 @@ class SocialBackupManagerImpl extends ConversationClientImpl
public DeletionResult deleteMessages(Transaction txn, ContactId c,
Set<MessageId> messageIds) throws DbException {
DeletionResult result = new DeletionResult();
GroupId g = getContactGroup(db.getContact(txn, c)).getId();
for (MessageId m : messageIds) {
db.deleteMessage(txn, m);
db.deleteMessageMetadata(txn, m);
}
return result;
}
@@ -421,7 +433,9 @@ class SocialBackupManagerImpl extends ConversationClientImpl
}
private BackupPayload createBackupPayload(Transaction txn,
SecretKey secret, List<org.briarproject.briar.api.socialbackup.ContactData> contactData, int version)
SecretKey secret,
List<org.briarproject.briar.api.socialbackup.ContactData> contactData,
int version)
throws DbException {
Identity identity = identityManager.getIdentity(txn);
return backupPayloadEncoder.encodeBackupPayload(secret, identity,
@@ -431,7 +445,8 @@ class SocialBackupManagerImpl extends ConversationClientImpl
private List<ContactData> loadContactData(Transaction txn)
throws DbException {
Collection<Contact> contacts = contactManager.getContacts(txn);
List<org.briarproject.briar.api.socialbackup.ContactData> contactData = new ArrayList<>();
List<org.briarproject.briar.api.socialbackup.ContactData> contactData =
new ArrayList<>();
for (Contact c : contacts) {
// Skip contacts that are in the process of being removed
Group contactGroup = getContactGroup(c);
@@ -439,7 +454,9 @@ class SocialBackupManagerImpl extends ConversationClientImpl
Map<TransportId, TransportProperties> props =
getTransportProperties(txn, c.getId());
Shard shard = getRemoteShard(txn, contactGroup.getId());
contactData.add(new org.briarproject.briar.api.socialbackup.ContactData(c, props, shard));
contactData
.add(new org.briarproject.briar.api.socialbackup.ContactData(
c, props, shard));
}
return contactData;
}
@@ -519,7 +536,9 @@ class SocialBackupManagerImpl extends ConversationClientImpl
throw new DbException(e);
}
}
private void updateBackup(Transaction txn, List<org.briarproject.briar.api.socialbackup.ContactData> contactData)
private void updateBackup(Transaction txn,
List<org.briarproject.briar.api.socialbackup.ContactData> contactData)
throws DbException {
BackupMetadata backupMetadata = requireNonNull(getBackupMetadata(txn));
int newVersion = backupMetadata.getVersion() + 1;