]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/RegistrationManagerImpl.java
Separate registrationLock attribute from master key
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / RegistrationManagerImpl.java
index ebafe24b2e73a6e2325157b6e208cce2e323a1fe..5a99b82713de9c451b670c3ee3fba36b8a08e6d4 100644 (file)
@@ -18,7 +18,9 @@ package org.asamk.signal.manager;
 
 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.PinLockedException;
+import org.asamk.signal.manager.api.UpdateProfile;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
 import org.asamk.signal.manager.helper.AccountFileUpdater;
@@ -94,7 +96,9 @@ class RegistrationManagerImpl implements RegistrationManager {
     }
 
     @Override
-    public void register(boolean voiceVerification, String captcha) throws IOException, CaptchaRequiredException {
+    public void register(
+            boolean voiceVerification, String captcha
+    ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
         if (account.isRegistered()
                 && account.getServiceEnvironment() != null
                 && account.getServiceEnvironment() != serviceEnvironmentConfig.getType()) {
@@ -139,7 +143,7 @@ class RegistrationManagerImpl implements RegistrationManager {
             }
             // Set an initial empty profile so user can be added to groups
             try {
-                m.setProfile(null, null, null, null, null);
+                m.updateProfile(UpdateProfile.newBuilder().build());
             } catch (NoClassDefFoundError e) {
                 logger.warn("Failed to set default profile: {}", e.getMessage());
             }
@@ -155,6 +159,18 @@ class RegistrationManagerImpl implements RegistrationManager {
         }
     }
 
+    @Override
+    public void deleteLocalAccountData() throws IOException {
+        account.deleteAccountData();
+        accountFileUpdater.removeAccount();
+        account = null;
+    }
+
+    @Override
+    public boolean isRegistered() {
+        return account.isRegistered();
+    }
+
     private boolean attemptReactivateAccount() {
         try {
             final var accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.getSignalServiceConfiguration(),
@@ -166,7 +182,7 @@ class RegistrationManagerImpl implements RegistrationManager {
                     account.getLocalRegistrationId(),
                     true,
                     null,
-                    account.getPinMasterKey() == null ? null : account.getPinMasterKey().deriveRegistrationLock(),
+                    account.getRegistrationLock(),
                     account.getSelfUnidentifiedAccessKey(),
                     account.isUnrestrictedUnidentifiedAccess(),
                     capabilities,