X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ed8ac5b84ccea9dac672021aec74c26d035d17e4..d356d92b5eb24f7340055f766455b943c274bc50:/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java index 7452eaee..def343a9 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java @@ -13,7 +13,10 @@ import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException; import org.asamk.signal.manager.api.PinLockedException; import org.asamk.signal.manager.api.RateLimitException; import org.asamk.signal.manager.api.UserAlreadyExistsException; +import org.asamk.signal.manager.api.VerificationMethodNotAvailableException; import org.freedesktop.dbus.DBusPath; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.URI; @@ -24,6 +27,7 @@ import java.util.concurrent.TimeoutException; public class DbusSignalControlImpl implements org.asamk.SignalControl { + private static final Logger logger = LoggerFactory.getLogger(DbusSignalControlImpl.class); private final MultiAccountManager c; private final String objectPath; @@ -59,7 +63,7 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { "Invalid account (phone number), make sure you include the country code."); } try (final RegistrationManager registrationManager = c.getNewRegistrationManager(number)) { - registrationManager.register(voiceVerification, captcha); + registrationManager.register(voiceVerification, captcha, false); } catch (RateLimitException e) { String message = "Rate limit reached"; throw new SignalControl.Error.Failure(message); @@ -70,7 +74,7 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { throw new Error.InvalidNumber(e.getMessage()); } catch (OverlappingFileLockException e) { throw new SignalControl.Error.Failure("Account is already in use"); - } catch (IOException e) { + } catch (IOException | VerificationMethodNotAvailableException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } } @@ -101,20 +105,21 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { @Override public String link(final String newDeviceName) throws Error.Failure { + final URI deviceLinkUri; try { - final URI deviceLinkUri = c.getNewProvisioningDeviceLinkUri(); - Thread.ofPlatform().name("dbus-link").start(() -> { - final ProvisioningManager provisioningManager = c.getProvisioningManagerFor(deviceLinkUri); - try { - provisioningManager.finishDeviceLink(newDeviceName); - } catch (IOException | TimeoutException | UserAlreadyExistsException e) { - e.printStackTrace(); - } - }); - return deviceLinkUri.toString(); + deviceLinkUri = c.getNewProvisioningDeviceLinkUri(); } catch (TimeoutException | IOException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } + Thread.ofPlatform().name("dbus-link").start(() -> { + final ProvisioningManager provisioningManager = c.getProvisioningManagerFor(deviceLinkUri); + try { + provisioningManager.finishDeviceLink(newDeviceName); + } catch (IOException | TimeoutException | UserAlreadyExistsException e) { + logger.warn("Failed to finish linking", e); + } + }); + return deviceLinkUri.toString(); } @Override