X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/e61f587bfc8f5557587d8c6cd54efcaf6631fdce..HEAD:/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 86ad6c1e..50150a98 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java @@ -10,9 +10,11 @@ import org.asamk.signal.manager.RegistrationManager; import org.asamk.signal.manager.api.CaptchaRequiredException; import org.asamk.signal.manager.api.IncorrectPinException; import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException; +import org.asamk.signal.manager.api.PinLockMissingException; 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; @@ -26,7 +28,7 @@ import java.util.concurrent.TimeoutException; public class DbusSignalControlImpl implements org.asamk.SignalControl { - private final static Logger logger = LoggerFactory.getLogger(DbusSignalControlImpl.class); + private static final Logger logger = LoggerFactory.getLogger(DbusSignalControlImpl.class); private final MultiAccountManager c; private final String objectPath; @@ -48,21 +50,24 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { @Override public void register( - final String number, final boolean voiceVerification + final String number, + final boolean voiceVerification ) throws Error.Failure, Error.InvalidNumber { registerWithCaptcha(number, voiceVerification, null); } @Override public void registerWithCaptcha( - final String number, final boolean voiceVerification, final String captcha + final String number, + final boolean voiceVerification, + final String captcha ) throws Error.Failure, Error.InvalidNumber { if (!Manager.isValidNumber(number, null)) { throw new SignalControl.Error.InvalidNumber( "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); @@ -73,7 +78,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()); } } @@ -85,7 +90,9 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { @Override public void verifyWithPin( - final String number, final String verificationCode, final String pin + final String number, + final String verificationCode, + final String pin ) throws Error.Failure, Error.InvalidNumber { try (final RegistrationManager registrationManager = c.getNewRegistrationManager(number)) { registrationManager.verifyAccount(verificationCode, pin); @@ -99,6 +106,8 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { + (e.getTimeRemaining() / 1000 / 60 / 60)); } catch (IncorrectPinException e) { throw new Error.Failure("Verification failed! Invalid pin, tries remaining: " + e.getTriesRemaining()); + } catch (PinLockMissingException e) { + throw new Error.Failure("Account is pin locked, but pin data has been deleted on the server."); } }