context.getSyncHelper().sendSyncFetchProfileMessage();
}
+ void refreshCurrentUsername() throws IOException, BaseUsernameException {
+ context.getAccountHelper().refreshCurrentUsername();
+ }
+
@Override
public String setUsername(final String username) throws IOException, InvalidUsernameException {
try {
private SendMessageResults sendMessage(
SignalServiceDataMessage.Builder messageBuilder, Set<RecipientIdentifier> recipients
+ ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException {
+ return sendMessage(messageBuilder, recipients, Optional.empty());
+ }
+
+ private SendMessageResults sendMessage(
+ SignalServiceDataMessage.Builder messageBuilder,
+ Set<RecipientIdentifier> recipients,
+ Optional<Long> editTargetTimestamp
) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException {
var results = new HashMap<RecipientIdentifier, List<SendMessageResult>>();
long timestamp = System.currentTimeMillis();
if (recipient instanceof RecipientIdentifier.Single single) {
try {
final var recipientId = context.getRecipientHelper().resolveRecipient(single);
- final var result = context.getSendHelper().sendMessage(messageBuilder, recipientId);
+ final var result = context.getSendHelper()
+ .sendMessage(messageBuilder, recipientId, editTargetTimestamp);
results.put(recipient, List.of(toSendMessageResult(result)));
} catch (UnregisteredRecipientException e) {
results.put(recipient,
List.of(SendMessageResult.unregisteredFailure(single.toPartialRecipientAddress())));
}
} else if (recipient instanceof RecipientIdentifier.NoteToSelf) {
- final var result = context.getSendHelper().sendSelfMessage(messageBuilder);
+ final var result = context.getSendHelper().sendSelfMessage(messageBuilder, editTargetTimestamp);
results.put(recipient, List.of(toSendMessageResult(result)));
} else if (recipient instanceof RecipientIdentifier.Group group) {
- final var result = context.getSendHelper().sendAsGroupMessage(messageBuilder, group.groupId());
+ final var result = context.getSendHelper()
+ .sendAsGroupMessage(messageBuilder, group.groupId(), editTargetTimestamp);
results.put(recipient, result.stream().map(this::toSendMessageResult).toList());
}
}
return sendMessage(messageBuilder, recipients);
}
+ @Override
+ public SendMessageResults sendEditMessage(
+ Message message, Set<RecipientIdentifier> recipients, long editTargetTimestamp
+ ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException, InvalidStickerException {
+ final var messageBuilder = SignalServiceDataMessage.newBuilder();
+ applyMessage(messageBuilder, message);
+ return sendMessage(messageBuilder, recipients, Optional.of(editTargetTimestamp));
+ }
+
private void applyMessage(
final SignalServiceDataMessage.Builder messageBuilder, final Message message
) throws AttachmentInvalidException, IOException, UnregisteredRecipientException, InvalidStickerException {
var delete = new SignalServiceDataMessage.RemoteDelete(targetSentTimestamp);
final var messageBuilder = SignalServiceDataMessage.newBuilder().withRemoteDelete(delete);
for (final var recipient : recipients) {
- if (recipient instanceof RecipientIdentifier.Single r) {
+ if (recipient instanceof RecipientIdentifier.Uuid u) {
+ account.getMessageSendLogStore()
+ .deleteEntryForRecipientNonGroup(targetSentTimestamp, ServiceId.from(u.uuid()));
+ } else if (recipient instanceof RecipientIdentifier.Single r) {
try {
final var recipientId = context.getRecipientHelper().resolveRecipient(r);
- account.getMessageSendLogStore()
- .deleteEntryForRecipientNonGroup(targetSentTimestamp,
- account.getRecipientAddressResolver()
- .resolveRecipientAddress(recipientId)
- .getServiceId());
+ final var address = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId);
+ if (address.serviceId().isPresent()) {
+ account.getMessageSendLogStore()
+ .deleteEntryForRecipientNonGroup(targetSentTimestamp, address.serviceId().get());
+ }
} catch (UnregisteredRecipientException ignored) {
}
} else if (recipient instanceof RecipientIdentifier.Group r) {
final var serviceId = context.getAccount()
.getRecipientAddressResolver()
.resolveRecipientAddress(recipientId)
- .getServiceId();
- account.getAciSessionStore().deleteAllSessions(serviceId);
+ .serviceId();
+ if (serviceId.isPresent()) {
+ account.getAciSessionStore().deleteAllSessions(serviceId.get());
+ }
}
}
}
public List<Identity> getIdentities(RecipientIdentifier.Single recipient) {
ServiceId serviceId;
try {
- serviceId = account.getRecipientAddressResolver()
- .resolveRecipientAddress(context.getRecipientHelper().resolveRecipient(recipient))
- .getServiceId();
+ final var address = account.getRecipientAddressResolver()
+ .resolveRecipientAddress(context.getRecipientHelper().resolveRecipient(recipient));
+ if (address.serviceId().isEmpty()) {
+ return List.of();
+ }
+ serviceId = address.serviceId().get();
} catch (UnregisteredRecipientException e) {
return List.of();
}