]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
Refresh username after registering
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / ManagerImpl.java
index bb55746cc3674679e1e8d0dca92cc1cb6fc44636..1dbd9bc68087a4be2c1cf4e7a6c5748a58dc4a01 100644 (file)
@@ -25,6 +25,7 @@ import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidStickerException;
+import org.asamk.signal.manager.api.InvalidUsernameException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
@@ -65,6 +66,7 @@ import org.asamk.signal.manager.util.AttachmentUtils;
 import org.asamk.signal.manager.util.KeyUtils;
 import org.asamk.signal.manager.util.MimeUtils;
 import org.asamk.signal.manager.util.StickerUtils;
+import org.signal.libsignal.usernames.BaseUsernameException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.SignalSessionLock;
@@ -290,6 +292,24 @@ class ManagerImpl implements Manager {
         context.getSyncHelper().sendSyncFetchProfileMessage();
     }
 
+    void refreshCurrentUsername() throws IOException, BaseUsernameException {
+        context.getAccountHelper().refreshCurrentUsername();
+    }
+
+    @Override
+    public String setUsername(final String username) throws IOException, InvalidUsernameException {
+        try {
+            return context.getAccountHelper().reserveUsername(username);
+        } catch (BaseUsernameException e) {
+            throw new InvalidUsernameException(e.getMessage() + " (" + e.getClass().getSimpleName() + ")", e);
+        }
+    }
+
+    @Override
+    public void deleteUsername() throws IOException {
+        context.getAccountHelper().deleteUsername();
+    }
+
     @Override
     public void unregister() throws IOException {
         context.getAccountHelper().unregister();
@@ -569,7 +589,7 @@ class ManagerImpl implements Manager {
             final var textAttachment = AttachmentUtils.createAttachmentStream(new StreamDetails(new ByteArrayInputStream(
                     messageBytes), MimeUtils.LONG_TEXT, messageBytes.length), Optional.empty());
             messageBuilder.withBody(message.messageText().substring(0, 2000));
-            messageBuilder.withAttachment(textAttachment);
+            messageBuilder.withAttachment(context.getAttachmentHelper().uploadAttachment(textAttachment));
         } else {
             messageBuilder.withBody(message.messageText());
         }
@@ -737,13 +757,18 @@ class ManagerImpl implements Manager {
 
     @Override
     public void deleteRecipient(final RecipientIdentifier.Single recipient) {
-        account.removeRecipient(account.getRecipientResolver().resolveRecipient(recipient.getIdentifier()));
+        final var recipientIdOptional = context.getRecipientHelper().resolveRecipientOptional(recipient);
+        if (recipientIdOptional.isPresent()) {
+            account.removeRecipient(recipientIdOptional.get());
+        }
     }
 
     @Override
     public void deleteContact(final RecipientIdentifier.Single recipient) {
-        account.getContactStore()
-                .deleteContact(account.getRecipientResolver().resolveRecipient(recipient.getIdentifier()));
+        final var recipientIdOptional = context.getRecipientHelper().resolveRecipientOptional(recipient);
+        if (recipientIdOptional.isPresent()) {
+            account.getContactStore().deleteContact(recipientIdOptional.get());
+        }
     }
 
     @Override