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 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); public boolean isContactBlocked(final String number);
@ -69,7 +69,7 @@ public interface Signal extends DBusInterface {
public boolean isMember(final byte[] groupId); 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 { class MessageReceived extends DBusSignal {

View file

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