From 606739b93d47dbe50d7eabb2963b02f00957c78e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Tue, 31 Jan 2023 11:25:17 +0100 Subject: [PATCH] Add fix for nightly desktop users that broke their db for some contacts --- .../briar/sharing/SharingManagerImpl.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java index 9b74a2b08..a97d34f53 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java @@ -13,6 +13,7 @@ import org.briarproject.bramble.api.data.MetadataParser; import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Metadata; +import org.briarproject.bramble.api.db.NoSuchGroupException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook; import org.briarproject.bramble.api.sync.ClientId; @@ -109,7 +110,24 @@ abstract class SharingManagerImpl // Create a local group to indicate that we've set this client up Group localGroup = contactGroupFactory.createLocalGroup(getClientId(), getMajorVersion()); - if (db.containsGroup(txn, localGroup.getId())) return; + + if (db.containsGroup(txn, localGroup.getId())) { + // Check each contact one by one and see if a group already exists. + // If none exists, call addingContact() for that contact. + for (Contact c : db.getContacts(txn)) { + try { + getGroupCount(txn, c.getId()); + } catch (NoSuchGroupException e) { + System.out.println( + "no such group for " + c.getAuthor().getName() + + " " + + c.getAlias()); + addingContact(txn, c); + } + } + return; + } + db.addGroup(txn, localGroup); // Set things up for any pre-existing contacts for (Contact c : db.getContacts(txn)) addingContact(txn, c);