]> nmode's Git Repositories - signal-cli/commitdiff
Fix deleting old group in dbus mode
authorAsamK <asamk@gmx.de>
Sun, 2 Apr 2023 17:25:49 +0000 (19:25 +0200)
committerAsamK <asamk@gmx.de>
Sun, 2 Apr 2023 17:25:49 +0000 (19:25 +0200)
Fixes #1192

src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index c65d75c0b5aa1795069c52c70a32f75dbb75cdcd..bc8bf74e47cfeea0b074259ea99588fe582f621b 100644 (file)
@@ -592,6 +592,13 @@ public interface Signal extends DBusInterface {
             }
         }
 
             }
         }
 
+        class NotAGroupMember extends DBusExecutionException {
+
+            public NotAGroupMember(final String message) {
+                super("Not a group member: " + message);
+            }
+        }
+
         class InvalidGroupId extends DBusExecutionException {
 
             public InvalidGroupId(final String message) {
         class InvalidGroupId extends DBusExecutionException {
 
             public InvalidGroupId(final String message) {
index 0ccff7351415d8c12825cfd67c380c41d7af4886..3cdce2489dd4dd9680f16201d252c1879d5fd125 100644 (file)
@@ -219,7 +219,15 @@ public class DbusManagerImpl implements Manager {
             throw new UnsupportedOperationException();
         }
         final var group = getRemoteObject(signal.getGroup(groupId.serialize()), Signal.Group.class);
             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());
     }
 
         return new SendGroupMessageResults(0, List.of());
     }
 
index 2c0c30b21bd9a5a7b229a472f2e016e495cb49d3..dafcababe772fbfef6883294bac1d9c3f663c455 100644 (file)
@@ -1193,8 +1193,10 @@ public class DbusSignalImpl implements Signal {
         public void quitGroup() throws Error.Failure {
             try {
                 m.quitGroup(groupId, Set.of());
         public void quitGroup() throws Error.Failure {
             try {
                 m.quitGroup(groupId, Set.of());
-            } catch (GroupNotFoundException | NotAGroupMemberException e) {
+            } catch (GroupNotFoundException e) {
                 throw new Error.GroupNotFound(e.getMessage());
                 throw new Error.GroupNotFound(e.getMessage());
+            } catch (NotAGroupMemberException e) {
+                throw new Error.NotAGroupMember(e.getMessage());
             } catch (IOException e) {
                 throw new Error.Failure(e.getMessage());
             } catch (LastGroupAdminException e) {
             } catch (IOException e) {
                 throw new Error.Failure(e.getMessage());
             } catch (LastGroupAdminException e) {