Add ShardMessageHeader

This commit is contained in:
Sebastian Kürten
2021-03-11 09:52:39 +01:00
parent b3292f86ab
commit a9edf43df2
7 changed files with 88 additions and 19 deletions

View File

@@ -3,6 +3,7 @@ package org.briarproject.briar.android.conversation;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.api.conversation.ConversationRequest;
import org.briarproject.briar.api.conversation.ConversationResponse;
import org.briarproject.briar.api.socialbackup.ShardMessageHeader;
import javax.annotation.Nullable;
import javax.annotation.concurrent.NotThreadSafe;
@@ -30,6 +31,13 @@ class ConversationNoticeItem extends ConversationItem {
this.msgText = null;
}
ConversationNoticeItem(@LayoutRes int layoutRes, String text,
ShardMessageHeader r) {
super(layoutRes, r);
this.text = text;
this.msgText = null;
}
@Nullable
String getMsgText() {
return msgText;

View File

@@ -16,6 +16,7 @@ import org.briarproject.briar.api.introduction.IntroductionResponse;
import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
import org.briarproject.briar.api.socialbackup.ShardMessageHeader;
import java.util.List;
@@ -292,6 +293,19 @@ class ConversationVisitor implements
}
}
@Override
public ConversationItem visitShardMessage(ShardMessageHeader r) {
if (r.isLocal()) {
String text = ctx.getString(R.string.social_backup_shard_sent);
return new ConversationNoticeItem(
R.layout.list_item_conversation_notice_out, text, r);
} else {
String text = ctx.getString(R.string.social_backup_shard_received);
return new ConversationNoticeItem(
R.layout.list_item_conversation_notice_in, text, r);
}
}
interface TextCache {
@Nullable
String getText(MessageId m);

View File

@@ -3,8 +3,6 @@ package org.briarproject.briar.android.socialbackup;
import android.os.Bundle;
import android.widget.Toast;
import androidx.fragment.app.FragmentTransaction;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException;
@@ -14,7 +12,6 @@ import org.briarproject.briar.android.activity.BriarActivity;
import org.briarproject.briar.android.contactselection.ContactSelectorListener;
import org.briarproject.briar.android.fragment.BaseFragment;
import org.briarproject.briar.api.socialbackup.BackupMetadata;
import org.briarproject.briar.api.socialbackup.Shard;
import org.briarproject.briar.api.socialbackup.SocialBackupManager;
import java.util.Collection;
@@ -29,10 +26,10 @@ public class DistributedBackupActivity extends BriarActivity implements
private Collection<ContactId> custodians;
@Inject
public SocialBackupManager socialBackupManager;
public SocialBackupManager socialBackupManager;
@Inject
public DatabaseComponent db;
public DatabaseComponent db;
@Override
public void injectActivity(ActivityComponent component) {
@@ -43,19 +40,21 @@ public class DistributedBackupActivity extends BriarActivity implements
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_distributed_backup);
// TODO here we should check if we already have a backup
// TODO here we should check if we already have a backup
try {
db.transaction(false, txn -> {
BackupMetadata backupMetadata = socialBackupManager.getBackupMetadata(txn);
if (backupMetadata == null) {
CustodianSelectorFragment fragment =
CustodianSelectorFragment.newInstance();
showInitialFragment(fragment);
} else {
ExistingBackupFragment fragment = ExistingBackupFragment.newInstance(backupMetadata);
showInitialFragment(fragment);
}
BackupMetadata backupMetadata =
socialBackupManager.getBackupMetadata(txn);
if (backupMetadata == null) {
CustodianSelectorFragment fragment =
CustodianSelectorFragment.newInstance();
showInitialFragment(fragment);
} else {
ExistingBackupFragment fragment =
ExistingBackupFragment.newInstance(backupMetadata);
showInitialFragment(fragment);
}
});
} catch (DbException e) {
e.printStackTrace();
@@ -68,14 +67,16 @@ public class DistributedBackupActivity extends BriarActivity implements
String.format("selected %d contacts", contacts.size()),
Toast.LENGTH_SHORT).show();
custodians = contacts;
ThresholdSelectorFragment fragment = ThresholdSelectorFragment.newInstance(contacts.size());
ThresholdSelectorFragment fragment =
ThresholdSelectorFragment.newInstance(contacts.size());
showNextFragment(fragment);
}
@Override
public void thresholdDefined(int threshold) throws DbException {
db.transaction(false, txn -> {
socialBackupManager.createBackup(txn, (List<ContactId>) custodians, threshold);
socialBackupManager
.createBackup(txn, (List<ContactId>) custodians, threshold);
ShardsSentFragment fragment = new ShardsSentFragment();
showNextFragment(fragment);
});