X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/81a11dc9776672e3468ee9a8eed556889fb2e070..d248f249e37f7b35a3b7dd69f2a06af8eddd3996:/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 e178ca15..cfd17610 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalControlImpl.java @@ -3,8 +3,8 @@ package org.asamk.signal.dbus; import org.asamk.SignalControl; import org.asamk.signal.BaseConfig; import org.asamk.signal.DbusConfig; -import org.asamk.signal.commands.SignalCreator; import org.asamk.signal.manager.Manager; +import org.asamk.signal.manager.MultiAccountManager; import org.asamk.signal.manager.ProvisioningManager; import org.asamk.signal.manager.RegistrationManager; import org.asamk.signal.manager.UserAlreadyExists; @@ -15,17 +15,17 @@ import org.freedesktop.dbus.DBusPath; import java.io.IOException; import java.net.URI; +import java.nio.channels.OverlappingFileLockException; import java.util.List; import java.util.concurrent.TimeoutException; -import java.util.stream.Collectors; public class DbusSignalControlImpl implements org.asamk.SignalControl { - private final SignalCreator c; + private final MultiAccountManager c; private final String objectPath; - public DbusSignalControlImpl(final SignalCreator c, final String objectPath) { + public DbusSignalControlImpl(final MultiAccountManager c, final String objectPath) { this.c = c; this.objectPath = objectPath; } @@ -53,13 +53,15 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { ) throws Error.Failure, Error.InvalidNumber { if (!Manager.isValidNumber(number, null)) { throw new SignalControl.Error.InvalidNumber( - "Invalid username (phone number), make sure you include the country code."); + "Invalid account (phone number), make sure you include the country code."); } try (final RegistrationManager registrationManager = c.getNewRegistrationManager(number)) { registrationManager.register(voiceVerification, captcha); } catch (CaptchaRequiredException e) { String message = captcha == null ? "Captcha required for verification." : "Invalid captcha given."; throw new SignalControl.Error.RequiresCaptcha(message); + } catch (OverlappingFileLockException e) { + throw new SignalControl.Error.Failure("Account is already in use"); } catch (IOException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } @@ -75,8 +77,9 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { final String number, final String verificationCode, final String pin ) throws Error.Failure, Error.InvalidNumber { try (final RegistrationManager registrationManager = c.getNewRegistrationManager(number)) { - final Manager manager = registrationManager.verifyAccount(verificationCode, pin); - c.addManager(manager); + registrationManager.verifyAccount(verificationCode, pin); + } catch (OverlappingFileLockException e) { + throw new SignalControl.Error.Failure("Account is already in use"); } catch (IOException | PinLockedException | IncorrectPinException e) { throw new SignalControl.Error.Failure(e.getClass().getSimpleName() + " " + e.getMessage()); } @@ -89,8 +92,7 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { final URI deviceLinkUri = provisioningManager.getDeviceLinkUri(); new Thread(() -> { try { - final Manager manager = provisioningManager.finishDeviceLink(newDeviceName); - c.addManager(manager); + provisioningManager.finishDeviceLink(newDeviceName); } catch (IOException | TimeoutException | UserAlreadyExists e) { e.printStackTrace(); } @@ -108,9 +110,6 @@ public class DbusSignalControlImpl implements org.asamk.SignalControl { @Override public List listAccounts() { - return c.getAccountNumbers() - .stream() - .map(u -> new DBusPath(DbusConfig.getObjectPath(u))) - .collect(Collectors.toList()); + return c.getAccountNumbers().stream().map(u -> new DBusPath(DbusConfig.getObjectPath(u))).toList(); } }