implement isRegistered() method for DBus

This commit is contained in:
John Freed 2021-08-10 22:22:16 +02:00
parent 8aed357994
commit da28e62974
2 changed files with 32 additions and 3 deletions

View file

@ -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<String> members, String avatar
) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber, Error.GroupNotFound;
boolean isRegistered();
boolean isRegistered(String number);
List<Boolean> isRegistered(List<String> numbers);
void updateProfile(
String name, String about, String aboutEmoji, String avatarPath, boolean removeAvatar

View file

@ -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<String, Boolean> registered;
List<String> numbers = new ArrayList<String>();
numbers.add(number);
registered = m.areUsersRegistered(new HashSet<String>(numbers));
return registered.get(number);
} catch (IOException e) {
throw new Error.Failure(e.getMessage());
}
}
@Override
public List<Boolean> isRegistered(List<String> numbers) {
try {
Map<String, Boolean> registered;
List<Boolean> results = new ArrayList<Boolean> ();
registered = m.areUsersRegistered(new HashSet<String>(numbers));
for (String number : numbers) {
results.add(registered.get(number));
}
return results;
} catch (IOException e) {
throw new Error.Failure(e.getMessage());
}
}
@Override