]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Implement support for usernames
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index c0dc1cf832ac8e68f4b4b06ff050fc1dbbc276d2..cefb7a820f68a63030fbd5ff9ffba873c91e18b2 100644 (file)
@@ -10,6 +10,7 @@ import org.asamk.signal.manager.api.Group;
 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.InvalidUsernameException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
@@ -147,10 +148,20 @@ public class DbusManagerImpl implements Manager {
                 emptyIfNull(updateProfile.getFamilyName()),
                 emptyIfNull(updateProfile.getAbout()),
                 emptyIfNull(updateProfile.getAboutEmoji()),
-                updateProfile.getAvatar() == null ? "" : updateProfile.getAvatar().getPath(),
+                updateProfile.getAvatar() == null ? "" : updateProfile.getAvatar(),
                 updateProfile.isDeleteAvatar());
     }
 
+    @Override
+    public String setUsername(final String username) throws IOException, InvalidUsernameException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void deleteUsername() throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public void unregister() throws IOException {
         signal.unregister();
@@ -219,7 +230,15 @@ public class DbusManagerImpl implements Manager {
             throw new UnsupportedOperationException();
         }
         final var group = getRemoteObject(signal.getGroup(groupId.serialize()), Signal.Group.class);
-        group.quitGroup();
+        try {
+            group.quitGroup();
+        } catch (Signal.Error.GroupNotFound e) {
+            throw new GroupNotFoundException(groupId);
+        } catch (Signal.Error.NotAGroupMember e) {
+            throw new NotAGroupMemberException(groupId, group.Get("org.asamk.Signal.Group", "Name"));
+        } catch (Signal.Error.LastGroupAdmin e) {
+            throw new LastGroupAdminException(groupId, group.Get("org.asamk.Signal.Group", "Name"));
+        }
         return new SendGroupMessageResults(0, List.of());
     }
 
@@ -231,11 +250,11 @@ public class DbusManagerImpl implements Manager {
 
     @Override
     public Pair<GroupId, SendGroupMessageResults> createGroup(
-            final String name, final Set<RecipientIdentifier.Single> members, final File avatarFile
+            final String name, final Set<RecipientIdentifier.Single> members, final String avatarFile
     ) throws IOException, AttachmentInvalidException {
         final var newGroupId = signal.createGroup(emptyIfNull(name),
                 members.stream().map(RecipientIdentifier.Single::getIdentifier).toList(),
-                avatarFile == null ? "" : avatarFile.getPath());
+                avatarFile == null ? "" : avatarFile);
         return new Pair<>(GroupId.unknownVersion(newGroupId), new SendGroupMessageResults(0, List.of()));
     }
 
@@ -253,7 +272,7 @@ public class DbusManagerImpl implements Manager {
         if (updateGroup.getAvatarFile() != null) {
             group.Set("org.asamk.Signal.Group",
                     "Avatar",
-                    updateGroup.getAvatarFile() == null ? "" : updateGroup.getAvatarFile().getPath());
+                    updateGroup.getAvatarFile() == null ? "" : updateGroup.getAvatarFile());
         }
         if (updateGroup.getExpirationTimer() != null) {
             group.Set("org.asamk.Signal.Group", "MessageExpirationTimer", updateGroup.getExpirationTimer());
@@ -778,6 +797,7 @@ public class DbusManagerImpl implements Manager {
                                 Optional.empty(),
                                 List.of(),
                                 List.of(),
+                                List.of(),
                                 List.of())),
                         Optional.empty(),
                         Optional.empty(),
@@ -852,6 +872,7 @@ public class DbusManagerImpl implements Manager {
                                         Optional.empty(),
                                         List.of(),
                                         List.of(),
+                                        List.of(),
                                         List.of())),
                                 Optional.empty())),
                                 Optional.empty(),