diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java index b8cdb646b..891a8e5a9 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java @@ -9,23 +9,22 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault public class MailboxUpdate { - - boolean hasMailbox; - private List clientSupports; + private final boolean hasMailbox; + private final List clientSupports; public MailboxUpdate(List clientSupports) { - this.hasMailbox = false; + this(clientSupports, false); + } + + MailboxUpdate(List clientSupports, boolean hasMailbox) { this.clientSupports = clientSupports; + this.hasMailbox = hasMailbox; } public List getClientSupports() { return clientSupports; } - public void setClientSupports(List clientSupports) { - this.clientSupports = clientSupports; - } - public boolean hasMailbox() { return hasMailbox; } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java index e84506dbd..5e3110afa 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java @@ -20,8 +20,7 @@ public class MailboxUpdateWithMailbox extends MailboxUpdate { MailboxAuthToken authToken, MailboxFolderId inboxId, MailboxFolderId outboxId ) { - super(clientSupports); - this.hasMailbox = true; + super(clientSupports, true); this.serverSupports = serverSupports; this.onion = onion; this.authToken = authToken; @@ -29,6 +28,12 @@ public class MailboxUpdateWithMailbox extends MailboxUpdate { this.outboxId = outboxId; } + public MailboxUpdateWithMailbox(MailboxUpdateWithMailbox o, + List newClientSupports) { + this(newClientSupports, o.serverSupports, o.onion, o.authToken, + o.inboxId, o.outboxId); + } + public String getOnion() { return onion; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java index b8f1a8219..7511e5598 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java @@ -87,9 +87,16 @@ class MailboxUpdateManagerImpl implements MailboxUpdateManager, for (Contact c : db.getContacts(txn)) { MailboxUpdate latest = getLocalUpdate(txn, c.getId()); if (!latest.getClientSupports().equals(CLIENT_SUPPORTS)) { - latest.setClientSupports(CLIENT_SUPPORTS); + MailboxUpdate updated; + if (latest.hasMailbox()) { + updated = new MailboxUpdateWithMailbox( + (MailboxUpdateWithMailbox) latest, + CLIENT_SUPPORTS); + } else { + updated = new MailboxUpdate(CLIENT_SUPPORTS); + } Group g = getContactGroup(c); - storeMessageReplaceLatest(txn, g.getId(), latest); + storeMessageReplaceLatest(txn, g.getId(), updated); } } return;