mirror of
https://github.com/AsamK/signal-cli
synced 2025-09-02 20:40:38 +00:00
Updates based on feedback and fixes
This commit is contained in:
parent
a05a23f85d
commit
21f5bb70b8
2 changed files with 22 additions and 34 deletions
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue