diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml
index 7596c8532..5f0972bdc 100644
--- a/briar-android/src/main/AndroidManifest.xml
+++ b/briar-android/src/main/AndroidManifest.xml
@@ -174,6 +174,14 @@
android:value="org.briarproject.briar.android.account.NewOrRecoverActivity" />
+
+
+
Social Backup
- Old Social Backup
+ Restore Account
You have received a social backup shard.
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java
index 7d83a6eaa..d1c846390 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/ContactData.java
@@ -12,14 +12,14 @@ import javax.annotation.concurrent.Immutable;
@Immutable
@NotNullByDefault
-class ContactData {
+public class ContactData {
private final Contact contact;
private final Map properties;
@Nullable
private final Shard shard;
- ContactData(Contact contact,
+ public ContactData(Contact contact,
Map properties,
@Nullable Shard shard) {
this.contact = contact;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java
index 76cfa6f05..1be5a0822 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackup.java
@@ -9,7 +9,7 @@ public class SocialBackup {
private List contacts;
private int version;
- SocialBackup (Identity identity, List contacts, int version) {
+ public SocialBackup (Identity identity, List contacts, int version) {
this.identity = identity;
this.contacts = contacts;
this.version = version;
diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java
index 7019661c9..ed8e852b2 100644
--- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/BackupPayloadEncoder.java
@@ -3,12 +3,14 @@ package org.briarproject.briar.socialbackup;
import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.identity.Identity;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.briar.api.socialbackup.BackupPayload;
+import org.briarproject.briar.api.socialbackup.ContactData;
import java.util.List;
@NotNullByDefault
interface BackupPayloadEncoder {
- org.briarproject.briar.api.socialbackup.BackupPayload encodeBackupPayload(SecretKey secret, Identity identity,
- List contactData, int version);
+ BackupPayload encodeBackupPayload(SecretKey secret, Identity identity,
+ List contactData, int version);
}
diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java
index 3ebc187f9..cadf7b29e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java
@@ -52,6 +52,7 @@ 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;
@@ -193,12 +194,12 @@ class SocialBackupManagerImpl extends ConversationClientImpl
// Add the shard to our backup, if any
if (localBackupExists(txn)) {
Shard shard = messageParser.parseShardMessage(body);
- List contactData = loadContactData(txn);
- ListIterator it = contactData.listIterator();
+ List contactData = loadContactData(txn);
+ ListIterator it = contactData.listIterator();
while (it.hasNext()) {
- org.briarproject.briar.api.socialbackup.ContactData cd = it.next();
+ ContactData cd = it.next();
if (cd.getContact().getId().equals(contactId)) {
- it.set(new org.briarproject.briar.api.socialbackup.ContactData(cd.getContact(),
+ it.set(new ContactData(cd.getContact(),
cd.getProperties(), shard));
updateBackup(txn, contactData);
break;
diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java
index 9c6db68de..fb39f7f42 100644
--- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/RestoreAccountImpl.java
@@ -61,7 +61,7 @@ public class RestoreAccountImpl implements RestoreAccount {
public int recover() throws FormatException, GeneralSecurityException {
if (secretKey == null) throw new GeneralSecurityException();
// Find backup with highest version number
- int highestVersion = 0;
+ int highestVersion = -1;
for (ReturnShardPayload returnShardPayload : recoveredShards) {
BackupPayload backupPayload = returnShardPayload.getBackupPayload();
SocialBackup s = backupPayloadDecoder.decodeBackupPayload(secretKey, backupPayload);