import org.asamk.signal.manager.storage.SignalAccount;
import org.asamk.signal.manager.storage.groups.GroupInfo;
import org.asamk.signal.manager.storage.identities.IdentityInfo;
-import org.asamk.signal.manager.storage.recipients.Contact;
import org.asamk.signal.manager.storage.recipients.Profile;
-import org.asamk.signal.manager.storage.recipients.RecipientAddress;
+import org.asamk.signal.manager.storage.recipients.Recipient;
import org.asamk.signal.manager.storage.recipients.RecipientId;
import org.asamk.signal.manager.storage.stickerPacks.JsonStickerPack;
import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutorService;
private final static Logger logger = LoggerFactory.getLogger(ManagerImpl.class);
private SignalAccount account;
- private AccountFileUpdater accountFileUpdater;
private final SignalDependencies dependencies;
private final Context context;
String userAgent
) {
this.account = account;
- this.accountFileUpdater = accountFileUpdater;
final var sessionLock = new SignalSessionLock() {
private final ReentrantLock LEGACY_LOCK = new ReentrantLock();
}
@Override
- public Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException, UnregisteredRecipientException {
+ public Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws UnregisteredRecipientException {
return context.getProfileHelper().getRecipientProfile(context.getRecipientHelper().resolveRecipient(recipient));
}
@Override
public SendMessageResults sendReadReceipt(
RecipientIdentifier.Single sender, List<Long> messageIds
- ) throws IOException {
+ ) {
final var timestamp = System.currentTimeMillis();
var receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.READ,
messageIds,
@Override
public SendMessageResults sendViewedReceipt(
RecipientIdentifier.Single sender, List<Long> messageIds
- ) throws IOException {
+ ) {
final var timestamp = System.currentTimeMillis();
var receiptMessage = new SignalServiceReceiptMessage(SignalServiceReceiptMessage.Type.VIEWED,
messageIds,
final RecipientIdentifier.Single sender,
final long timestamp,
final SignalServiceReceiptMessage receiptMessage
- ) throws IOException {
+ ) {
try {
final var result = context.getSendHelper()
.sendReceiptMessage(receiptMessage, context.getRecipientHelper().resolveRecipient(sender));
}
}
- private ArrayList<SignalServiceDataMessage.Mention> resolveMentions(final List<Message.Mention> mentionList) throws IOException, UnregisteredRecipientException {
+ private ArrayList<SignalServiceDataMessage.Mention> resolveMentions(final List<Message.Mention> mentionList) throws UnregisteredRecipientException {
final var mentions = new ArrayList<SignalServiceDataMessage.Mention>();
for (final var m : mentionList) {
final var recipientId = context.getRecipientHelper().resolveRecipient(m.recipient());
@Override
public void setContactName(
RecipientIdentifier.Single recipient, String name
- ) throws NotMasterDeviceException, IOException, UnregisteredRecipientException {
+ ) throws NotMasterDeviceException, UnregisteredRecipientException {
if (!account.isMasterDevice()) {
throw new NotMasterDeviceException();
}
final RecipientId recipientId;
try {
recipientId = context.getRecipientHelper().resolveRecipient(recipient);
- } catch (IOException | UnregisteredRecipientException e) {
+ } catch (UnregisteredRecipientException e) {
return false;
}
return context.getContactHelper().isContactBlocked(recipientId);
}
@Override
- public List<Pair<RecipientAddress, Contact>> getContacts() {
- return account.getContactStore()
- .getContacts()
- .stream()
- .map(p -> new Pair<>(account.getRecipientStore().resolveRecipientAddress(p.first()), p.second()))
- .toList();
+ public List<Recipient> getRecipients(
+ boolean onlyContacts,
+ Optional<Boolean> blocked,
+ Collection<RecipientIdentifier.Single> recipients,
+ Optional<String> name
+ ) {
+ final var recipientIds = recipients.stream().map(a -> {
+ try {
+ return context.getRecipientHelper().resolveRecipient(a);
+ } catch (UnregisteredRecipientException e) {
+ return null;
+ }
+ }).filter(Objects::nonNull).collect(Collectors.toSet());
+ // refresh profiles of explicitly given recipients
+ context.getProfileHelper().refreshRecipientProfiles(recipientIds);
+ return account.getRecipientStore().getRecipients(onlyContacts, blocked, recipientIds, name);
}
@Override
final RecipientId recipientId;
try {
recipientId = context.getRecipientHelper().resolveRecipient(recipient);
- } catch (IOException | UnregisteredRecipientException e) {
+ } catch (UnregisteredRecipientException e) {
return null;
}
try {
identity = account.getIdentityKeyStore()
.getIdentity(context.getRecipientHelper().resolveRecipient(recipient));
- } catch (IOException | UnregisteredRecipientException e) {
+ } catch (UnregisteredRecipientException e) {
identity = null;
}
return identity == null ? List.of() : List.of(toIdentity(identity));
private boolean trustIdentity(
RecipientIdentifier.Single recipient, Function<RecipientId, Boolean> trustMethod
) throws UnregisteredRecipientException {
- RecipientId recipientId;
- try {
- recipientId = context.getRecipientHelper().resolveRecipient(recipient);
- } catch (IOException e) {
- return false;
- }
+ final var recipientId = context.getRecipientHelper().resolveRecipient(recipient);
final var updated = trustMethod.apply(recipientId);
if (updated && this.isReceiving()) {
context.getReceiveHelper().setNeedsToRetryFailedMessages(true);