From da28e62974d6a35fa29b5589cdfb9bf9c8b4ad71 Mon Sep 17 00:00:00 2001 From: John Freed Date: Tue, 10 Aug 2021 22:22:16 +0200 Subject: [PATCH] implement isRegistered() method for DBus --- src/main/java/org/asamk/Signal.java | 6 +++- .../org/asamk/signal/dbus/DbusSignalImpl.java | 29 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 22669412..a6a57ea7 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -6,7 +6,9 @@ import org.freedesktop.dbus.interfaces.DBusInterface; import org.freedesktop.dbus.messages.DBusSignal; import org.asamk.signal.dbus.DbusAttachment; +import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * DBus interface for the org.asamk.Signal service. @@ -93,7 +95,9 @@ public interface Signal extends DBusInterface { byte[] groupId, String name, List members, String avatar ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound; - boolean isRegistered(); + boolean isRegistered(String number); + + List isRegistered(List numbers); void updateProfile( String name, String about, String aboutEmoji, String avatarPath, boolean removeAvatar diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index ae79c315..44f5318b 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -25,7 +25,9 @@ import org.whispersystems.signalservice.api.util.InvalidNumberException; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -454,8 +456,31 @@ public class DbusSignalImpl implements Signal { } @Override - public boolean isRegistered() { - return true; + public boolean isRegistered(String number) { + try { + Map registered; + List numbers = new ArrayList(); + numbers.add(number); + registered = m.areUsersRegistered(new HashSet(numbers)); + return registered.get(number); + } catch (IOException e) { + throw new Error.Failure(e.getMessage()); + } + } + + @Override + public List isRegistered(List numbers) { + try { + Map registered; + List results = new ArrayList (); + registered = m.areUsersRegistered(new HashSet(numbers)); + for (String number : numbers) { + results.add(registered.get(number)); + } + return results; + } catch (IOException e) { + throw new Error.Failure(e.getMessage()); + } } @Override