Updates based on feedback and fixes

This commit is contained in:
Adimarantis 2021-02-28 19:32:12 +01:00
parent a05a23f85d
commit 21f5bb70b8
2 changed files with 22 additions and 34 deletions

View file

@ -59,9 +59,9 @@ public interface Signal extends DBusInterface {
public List<String> listNumbers();
public String getContactNumber(final String name);
public List<String> getContactNumber(final String name) throws Error.Failure;
public void quitGroup(final byte[] groupId);
public void quitGroup(final byte[] groupId) throws Error.GroupNotFound,Error.Failure;
public boolean isContactBlocked(final String number);
@ -69,7 +69,7 @@ public interface Signal extends DBusInterface {
public boolean isMember(final byte[] groupId);
public void joinGroup(final String groupLink);
public void joinGroup(final String groupLink) throws Error.Failure;
class MessageReceived extends DBusSignal {

View file

@ -22,6 +22,8 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
import java.util.stream.Collectors;
public class DbusSignalImpl implements Signal {
@ -145,11 +147,9 @@ public class DbusSignalImpl implements Signal {
// Since contact names might be empty if not defined, also potentially return
// the profile name
// Profile names separate firstname/lastname by a \0 - replace by space
// otherwise the interface will hickup
@Override
public String getContactName(final String number) {
String name = m.getContactOrProfileName(number).replace("\0", " ");
String name = m.getContactOrProfileName(number);
return name;
}
@ -272,34 +272,21 @@ public class DbusSignalImpl implements Signal {
// all numbers the system knows
@Override
public List<String> listNumbers() {
List<String> numbers = new ArrayList<>();
for (IdentityInfo identity : m.getIdentities()) {
String number = identity.getAddress().getNumber().orNull();
if (number != null) {
if (numbers.indexOf(number) == -1) {
numbers.add(number);
}
}
}
var contacts = m.getContacts();
for (var c : contacts) {
if (numbers.indexOf(c.number) == -1) {
numbers.add(c.number);
}
}
return numbers;
return Stream.concat(m.getIdentities().stream().map(i -> i.getAddress().getNumber().orNull()),
m.getContacts().stream().map(c -> c.number))
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
}
@Override
public String getContactNumber(final String name) {
public List<String> getContactNumber(final String name) {
// Contact names have precendence.
List<String> numbers=new ArrayList<>();
var contacts = m.getContacts();
for (var c : contacts) {
if (!c.name.isEmpty() && c.name.equals(name)) {
return c.number;
if (c.name!=null && c.name.equals(name)) {
numbers.add(c.number);
}
}
// Try profiles if no contact name was found
@ -308,15 +295,16 @@ public class DbusSignalImpl implements Signal {
if (number != null) {
var address = Utils.getSignalServiceAddressFromIdentifier(number);
var profile = m.getRecipientProfile(address);
String profileName = profile.getName().replace("\0", " ");
String profileName = profile.getDisplayName();
if (profileName.equals(name)) {
return number;
numbers.add(number);
}
}
}
return "";
if (numbers.size()==0) {
throw new Error.Failure("Contact name not found");
}
return numbers;
}
@Override
@ -354,7 +342,7 @@ public class DbusSignalImpl implements Signal {
return c.blocked;
}
}
throw new Error.InvalidNumber("Contact not found");
return false;
}
@Override