diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java index 98cdf65b0..64083ea5f 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java @@ -10,6 +10,13 @@ import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.event.EventExecutor; import org.briarproject.bramble.api.mailbox.MailboxAuthToken; import org.briarproject.bramble.api.mailbox.MailboxPairingState; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.ConnectionError; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.InvalidQrCode; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.MailboxAlreadyPaired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Paired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Pairing; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.QrCodeReceived; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.UnexpectedError; import org.briarproject.bramble.api.mailbox.MailboxPairingTask; import org.briarproject.bramble.api.mailbox.MailboxProperties; import org.briarproject.bramble.api.mailbox.MailboxSettingsManager; @@ -84,7 +91,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask { this.mailboxUpdateManager = mailboxUpdateManager; this.qrCodeClassifier = qrCodeClassifier; timeStarted = clock.currentTimeMillis(); - state = new MailboxPairingState.QrCodeReceived(timeStarted); + state = new QrCodeReceived(timeStarted); } @Override @@ -111,27 +118,25 @@ class MailboxPairingTaskImpl implements MailboxPairingTask { QrCodeType qrCodeType = typeAndVersion.getFirst(); int formatVersion = typeAndVersion.getSecond(); if (qrCodeType != MAILBOX || formatVersion != QR_FORMAT_VERSION) { - setState(new MailboxPairingState.InvalidQrCode(qrCodeType, - formatVersion)); + setState(new InvalidQrCode(qrCodeType, formatVersion)); return; } try { pairMailbox(); } catch (FormatException e) { - onMailboxError(e, new MailboxPairingState.InvalidQrCode(qrCodeType, - formatVersion)); + onMailboxError(e, new InvalidQrCode(qrCodeType, formatVersion)); } catch (MailboxAlreadyPairedException e) { - onMailboxError(e, new MailboxPairingState.MailboxAlreadyPaired()); + onMailboxError(e, new MailboxAlreadyPaired()); } catch (IOException e) { - onMailboxError(e, new MailboxPairingState.ConnectionError()); + onMailboxError(e, new ConnectionError()); } catch (ApiException | DbException e) { - onMailboxError(e, new MailboxPairingState.UnexpectedError()); + onMailboxError(e, new UnexpectedError()); } } private void pairMailbox() throws IOException, ApiException, DbException { MailboxProperties mailboxProperties = decodeQrCodePayload(payload); - setState(new MailboxPairingState.Pairing(timeStarted)); + setState(new Pairing(timeStarted)); MailboxProperties ownerProperties = api.setup(mailboxProperties); long time = clock.currentTimeMillis(); db.transaction(false, txn -> { @@ -150,7 +155,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask { } } }); - setState(new MailboxPairingState.Paired()); + setState(new Paired()); } private void onMailboxError(Exception e, MailboxPairingState state) { diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImplTest.java index 91573e46d..01e4ba9c5 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImplTest.java @@ -8,6 +8,13 @@ import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.mailbox.MailboxAuthToken; import org.briarproject.bramble.api.mailbox.MailboxPairingState; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.ConnectionError; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.InvalidQrCode; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.MailboxAlreadyPaired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Paired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Pairing; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.QrCodeReceived; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.UnexpectedError; import org.briarproject.bramble.api.mailbox.MailboxPairingTask; import org.briarproject.bramble.api.mailbox.MailboxProperties; import org.briarproject.bramble.api.mailbox.MailboxSettingsManager; @@ -17,6 +24,8 @@ import org.briarproject.bramble.api.mailbox.MailboxVersion; import org.briarproject.bramble.api.qrcode.QrCodeClassifier; import org.briarproject.bramble.api.qrcode.QrCodeClassifier.QrCodeType; import org.briarproject.bramble.api.system.Clock; +import org.briarproject.bramble.mailbox.MailboxApi.ApiException; +import org.briarproject.bramble.mailbox.MailboxApi.MailboxAlreadyPairedException; import org.briarproject.bramble.test.BrambleMockTestCase; import org.briarproject.bramble.test.DbExpectations; import org.briarproject.bramble.test.ImmediateExecutor; @@ -75,8 +84,7 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { public void testInitialQrCodeReceivedState() { MailboxPairingTask task = createPairingTask(getRandomString(42)); task.addObserver(state -> - assertTrue(state instanceof MailboxPairingState.QrCodeReceived) - ); + assertTrue(state instanceof QrCodeReceived)); } @Test @@ -88,8 +96,7 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { task.run(); task.addObserver(state -> - assertTrue(state instanceof MailboxPairingState.InvalidQrCode) - ); + assertTrue(state instanceof InvalidQrCode)); } @Test @@ -101,8 +108,7 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { task.run(); task.addObserver(state -> - assertTrue(state instanceof MailboxPairingState.InvalidQrCode) - ); + assertTrue(state instanceof InvalidQrCode)); } @Test @@ -114,8 +120,7 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { task.run(); task.addObserver(state -> - assertTrue(state instanceof MailboxPairingState.InvalidQrCode) - ); + assertTrue(state instanceof InvalidQrCode)); } @Test @@ -151,14 +156,11 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { MailboxPairingTask task = createPairingTask(validPayload); task.addObserver(state -> { if (i.get() == 0) { - assertEquals(MailboxPairingState.QrCodeReceived.class, - state.getClass()); + assertEquals(QrCodeReceived.class, state.getClass()); } else if (i.get() == 1) { - assertEquals(MailboxPairingState.Pairing.class, - state.getClass()); + assertEquals(Pairing.class, state.getClass()); } else if (i.get() == 2) { - assertEquals(MailboxPairingState.Paired.class, - state.getClass()); + assertEquals(Paired.class, state.getClass()); } else fail("Unexpected change of state " + state.getClass()); i.getAndIncrement(); }); @@ -167,20 +169,18 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { @Test public void testAlreadyPaired() throws Exception { - testApiException(new MailboxApi.MailboxAlreadyPairedException(), - MailboxPairingState.MailboxAlreadyPaired.class); + testApiException(new MailboxAlreadyPairedException(), + MailboxAlreadyPaired.class); } @Test public void testMailboxApiException() throws Exception { - testApiException(new MailboxApi.ApiException(), - MailboxPairingState.UnexpectedError.class); + testApiException(new ApiException(), UnexpectedError.class); } @Test public void testApiIOException() throws Exception { - testApiException(new IOException(), - MailboxPairingState.ConnectionError.class); + testApiException(new IOException(), ConnectionError.class); } private void testApiException(Exception e, @@ -219,8 +219,8 @@ public class MailboxPairingTaskImplTest extends BrambleMockTestCase { MailboxPairingTask task = createPairingTask(validPayload); task.run(); - task.addObserver(state -> assertEquals(state.getClass(), - MailboxPairingState.UnexpectedError.class)); + task.addObserver(state -> + assertEquals(state.getClass(), UnexpectedError.class)); } private PredicateMatcher matches(MailboxProperties p2) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java index 64aaeacd7..65a69ab10 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java @@ -6,10 +6,24 @@ import android.widget.ProgressBar; import android.widget.Toast; import org.briarproject.bramble.api.mailbox.MailboxPairingState; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.ConnectionError; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.InvalidQrCode; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.MailboxAlreadyPaired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Paired; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Pending; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.UnexpectedError; import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.fragment.FinalFragment; +import org.briarproject.briar.android.mailbox.MailboxState.CameraError; +import org.briarproject.briar.android.mailbox.MailboxState.IsPaired; +import org.briarproject.briar.android.mailbox.MailboxState.NotSetup; +import org.briarproject.briar.android.mailbox.MailboxState.OfflineWhenPairing; +import org.briarproject.briar.android.mailbox.MailboxState.Pairing; +import org.briarproject.briar.android.mailbox.MailboxState.ScanningQrCode; +import org.briarproject.briar.android.mailbox.MailboxState.ShowDownload; +import org.briarproject.briar.android.mailbox.MailboxState.WasUnpaired; import org.briarproject.briar.android.view.BlankFragment; import org.briarproject.nullsafety.MethodsNotNullByDefault; import org.briarproject.nullsafety.ParametersNotNullByDefault; @@ -25,6 +39,9 @@ import androidx.lifecycle.ViewModelProvider; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; import static android.widget.Toast.LENGTH_LONG; +import static org.briarproject.bramble.api.mailbox.MailboxConstants.QR_FORMAT_VERSION; +import static org.briarproject.bramble.api.qrcode.QrCodeClassifier.QrCodeType.BQP; +import static org.briarproject.bramble.api.qrcode.QrCodeClassifier.QrCodeType.MAILBOX; import static org.briarproject.briar.android.util.UiUtils.showFragment; @MethodsNotNullByDefault @@ -56,24 +73,23 @@ public class MailboxActivity extends BriarActivity { } viewModel.getPairingState().observeEvent(this, state -> { - if (state instanceof MailboxState.NotSetup) { + if (state instanceof NotSetup) { onNotSetup(); - } else if (state instanceof MailboxState.ShowDownload) { + } else if (state instanceof ShowDownload) { onShowDownload(); - } else if (state instanceof MailboxState.ScanningQrCode) { + } else if (state instanceof ScanningQrCode) { onScanningQrCode(); - } else if (state instanceof MailboxState.Pairing) { - MailboxPairingState s = - ((MailboxState.Pairing) state).pairingState; + } else if (state instanceof Pairing) { + MailboxPairingState s = ((Pairing) state).pairingState; onMailboxPairingStateChanged(s); - } else if (state instanceof MailboxState.OfflineWhenPairing) { + } else if (state instanceof OfflineWhenPairing) { onOffline(); - } else if (state instanceof MailboxState.CameraError) { + } else if (state instanceof CameraError) { onCameraError(); - } else if (state instanceof MailboxState.IsPaired) { - onIsPaired(((MailboxState.IsPaired) state).isOnline); - } else if (state instanceof MailboxState.WasUnpaired) { - MailboxState.WasUnpaired s = (MailboxState.WasUnpaired) state; + } else if (state instanceof IsPaired) { + onIsPaired(((IsPaired) state).isOnline); + } else if (state instanceof WasUnpaired) { + WasUnpaired s = (WasUnpaired) state; onUnPaired(s.tellUserToWipeMailbox); } else { throw new AssertionError("Unknown state: " + state); @@ -104,7 +120,7 @@ public class MailboxActivity extends BriarActivity { @Override public void onBackPressed() { MailboxState s = viewModel.getPairingState().getLastValue(); - if (s instanceof MailboxState.Pairing) { + if (s instanceof Pairing) { // don't go back in the flow if we are already pairing // with the mailbox. We provide a try-again button instead. supportFinishAfterTransition(); @@ -158,31 +174,44 @@ public class MailboxActivity extends BriarActivity { } Fragment f; String tag; - if (s instanceof MailboxPairingState.Pending) { - long timeStarted = ((MailboxPairingState.Pending) s).timeStarted; + if (s instanceof Pending) { + long timeStarted = ((Pending) s).timeStarted; f = MailboxConnectingFragment.newInstance(timeStarted); tag = MailboxConnectingFragment.TAG; - } else if (s instanceof MailboxPairingState.InvalidQrCode) { - f = ErrorFragment.newInstance( - R.string.mailbox_setup_qr_code_wrong_title, - R.string.mailbox_setup_qr_code_wrong_description); + } else if (s instanceof InvalidQrCode) { + InvalidQrCode i = (InvalidQrCode) s; + int errorRes; + if (i.qrCodeType == MAILBOX) { + if (i.formatVersion < QR_FORMAT_VERSION) { + errorRes = R.string.mailbox_qr_code_too_old; + } else if (i.formatVersion > QR_FORMAT_VERSION) { + errorRes = R.string.mailbox_qr_code_too_new; + } else { + errorRes = R.string.mailbox_setup_qr_code_wrong_description; + } + } else if (i.qrCodeType == BQP) { + errorRes = R.string.contact_qr_code_for_mailbox; + } else { + errorRes = R.string.mailbox_setup_qr_code_wrong_description; + } + f = ErrorFragment.newInstance(R.string.qr_code_invalid, errorRes); tag = ErrorFragment.TAG; - } else if (s instanceof MailboxPairingState.MailboxAlreadyPaired) { + } else if (s instanceof MailboxAlreadyPaired) { f = ErrorFragment.newInstance( R.string.mailbox_setup_already_paired_title, R.string.mailbox_setup_already_paired_description); tag = ErrorFragment.TAG; - } else if (s instanceof MailboxPairingState.ConnectionError) { + } else if (s instanceof ConnectionError) { f = ErrorFragment.newInstance( R.string.mailbox_setup_io_error_title, R.string.mailbox_setup_io_error_description); tag = ErrorFragment.TAG; - } else if (s instanceof MailboxPairingState.UnexpectedError) { + } else if (s instanceof UnexpectedError) { f = ErrorFragment.newInstance( R.string.mailbox_setup_assertion_error_title, R.string.mailbox_setup_assertion_error_description); tag = ErrorFragment.TAG; - } else if (s instanceof MailboxPairingState.Paired) { + } else if (s instanceof Paired) { f = FinalFragment.newInstance(R.string.mailbox_setup_paired_title, R.drawable.ic_check_circle_outline, R.color.briar_brand_green, diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java index a3f38c272..955436a40 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java @@ -15,6 +15,7 @@ import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.mailbox.MailboxManager; import org.briarproject.bramble.api.mailbox.MailboxPairingState; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Paired; import org.briarproject.bramble.api.mailbox.MailboxPairingTask; import org.briarproject.bramble.api.mailbox.MailboxStatus; import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent; @@ -24,7 +25,14 @@ import org.briarproject.bramble.api.plugin.TorConstants; import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent; import org.briarproject.bramble.api.system.AndroidExecutor; +import org.briarproject.briar.android.mailbox.MailboxState.CameraError; +import org.briarproject.briar.android.mailbox.MailboxState.IsPaired; import org.briarproject.briar.android.mailbox.MailboxState.NotSetup; +import org.briarproject.briar.android.mailbox.MailboxState.OfflineWhenPairing; +import org.briarproject.briar.android.mailbox.MailboxState.Pairing; +import org.briarproject.briar.android.mailbox.MailboxState.ScanningQrCode; +import org.briarproject.briar.android.mailbox.MailboxState.ShowDownload; +import org.briarproject.briar.android.mailbox.MailboxState.WasUnpaired; import org.briarproject.briar.android.qrcode.QrCodeDecoder; import org.briarproject.briar.android.viewmodel.DbViewModel; import org.briarproject.briar.android.viewmodel.LiveEvent; @@ -113,7 +121,7 @@ class MailboxViewModel extends DbViewModel MailboxStatus mailboxStatus = mailboxManager.getMailboxStatus(txn); boolean isOnline = isTorActive(); - pairingState.postEvent(new MailboxState.IsPaired(isOnline)); + pairingState.postEvent(new IsPaired(isOnline)); status.postValue(mailboxStatus); } else { pairingState.postEvent(new NotSetup()); @@ -142,14 +150,14 @@ class MailboxViewModel extends DbViewModel @UiThread private void onTorInactive() { MailboxState lastState = pairingState.getLastValue(); - if (lastState instanceof MailboxState.IsPaired) { + if (lastState instanceof IsPaired) { // we are already paired, so use IsPaired state - pairingState.setEvent(new MailboxState.IsPaired(false)); - } else if (lastState instanceof MailboxState.Pairing) { - MailboxState.Pairing p = (MailboxState.Pairing) lastState; + pairingState.setEvent(new IsPaired(false)); + } else if (lastState instanceof Pairing) { + Pairing p = (Pairing) lastState; // check that we not just finished pairing (showing success screen) - if (!(p.pairingState instanceof MailboxPairingState.Paired)) { - pairingState.setEvent(new MailboxState.OfflineWhenPairing()); + if (!(p.pairingState instanceof Paired)) { + pairingState.setEvent(new OfflineWhenPairing()); } // else ignore offline event as user will be leaving UI flow anyway } @@ -158,15 +166,15 @@ class MailboxViewModel extends DbViewModel @UiThread void onScanButtonClicked() { if (isTorActive()) { - pairingState.setEvent(new MailboxState.ScanningQrCode()); + pairingState.setEvent(new ScanningQrCode()); } else { - pairingState.setEvent(new MailboxState.OfflineWhenPairing()); + pairingState.setEvent(new OfflineWhenPairing()); } } @UiThread void onCameraError() { - pairingState.setEvent(new MailboxState.CameraError()); + pairingState.setEvent(new CameraError()); } @Override @@ -182,7 +190,7 @@ class MailboxViewModel extends DbViewModel pairingTask = mailboxManager.startPairingTask(qrCodePayload); pairingTask.addObserver(this); } else { - pairingState.postEvent(new MailboxState.OfflineWhenPairing()); + pairingState.postEvent(new OfflineWhenPairing()); } } @@ -193,7 +201,7 @@ class MailboxViewModel extends DbViewModel LOG.info("New pairing state: " + mailboxPairingState.getClass().getSimpleName()); } - pairingState.setEvent(new MailboxState.Pairing(mailboxPairingState)); + pairingState.setEvent(new Pairing(mailboxPairingState)); } private boolean isTorActive() { @@ -203,7 +211,7 @@ class MailboxViewModel extends DbViewModel @UiThread void showDownloadFragment() { - pairingState.setEvent(new MailboxState.ShowDownload()); + pairingState.setEvent(new ShowDownload()); } @UiThread @@ -214,7 +222,7 @@ class MailboxViewModel extends DbViewModel @UiThread void checkIfOnlineWhenPaired() { boolean isOnline = isTorActive(); - pairingState.setEvent(new MailboxState.IsPaired(isOnline)); + pairingState.setEvent(new IsPaired(isOnline)); } LiveData checkConnection() { @@ -227,7 +235,7 @@ class MailboxViewModel extends DbViewModel checkConnection(success -> { boolean isOnline = isTorActive(); // make UI move back to status fragment by changing pairingState - pairingState.postEvent(new MailboxState.IsPaired(isOnline)); + pairingState.postEvent(new IsPaired(isOnline)); }); } @@ -246,7 +254,7 @@ class MailboxViewModel extends DbViewModel ioExecutor.execute(() -> { try { boolean wasWiped = mailboxManager.unPair(); - pairingState.postEvent(new MailboxState.WasUnpaired(!wasWiped)); + pairingState.postEvent(new WasUnpaired(!wasWiped)); } catch (DbException e) { handleException(e); } diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index fda5d4d01..46d3b6329 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -637,8 +637,10 @@ Connecting to Mailbox… This may take up to %1s - Wrong QR code - The scanned code is invalid. Please open the Briar Mailbox app on your Mailbox device and scan the QR code it presents. + The QR code you have scanned comes from an older version of Briar Mailbox.\n\nPlease upgrade Briar Mailbox to the latest version and then try again. + The QR code you have scanned comes from a newer version of Briar Mailbox.\n\nPlease upgrade Briar to the latest version and then try again. + The QR code you have scanned is for adding a Briar contact.\n\nIf you want to add a contact, please go to the contact list and tap the + icon. + The QR code you have scanned does not come from Briar Mailbox.\n\nPlease open the Briar Mailbox app on your Mailbox device and scan the QR code it presents. Mailbox already linked Unlink the Mailbox on your other device and try again. Could not connect diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/AbstractMailboxIntegrationTest.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/AbstractMailboxIntegrationTest.java index 2eb0eef4f..ee1136a52 100644 --- a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/AbstractMailboxIntegrationTest.java +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/AbstractMailboxIntegrationTest.java @@ -11,7 +11,7 @@ import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.LocalAuthor; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.mailbox.MailboxAuthToken; -import org.briarproject.bramble.api.mailbox.MailboxPairingState; +import org.briarproject.bramble.api.mailbox.MailboxPairingState.Paired; import org.briarproject.bramble.api.mailbox.MailboxPairingTask; import org.briarproject.bramble.api.mailbox.MailboxProperties; import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox; @@ -121,7 +121,7 @@ abstract class AbstractMailboxIntegrationTest CountDownLatch latch = new CountDownLatch(1); pairingTask.addObserver((state) -> { - if (state instanceof MailboxPairingState.Paired) { + if (state instanceof Paired) { latch.countDown(); } });