import org.asamk.signal.manager.storage.recipients.RecipientResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.whispersystems.libsignal.protocol.DecryptionErrorMessage;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
import org.whispersystems.signalservice.api.crypto.ContentHint;
}
}
+ public void sendRetryReceipt(
+ DecryptionErrorMessage errorMessage, RecipientId recipientId, Optional<GroupId> groupId
+ ) throws IOException, UntrustedIdentityException {
+ var messageSender = dependencies.getMessageSender();
+ final var address = addressResolver.resolveSignalServiceAddress(recipientId);
+ logger.debug("Sending retry receipt for {} to {}, device: {}",
+ errorMessage.getTimestamp(),
+ recipientId,
+ errorMessage.getDeviceId());
+ try {
+ messageSender.sendRetryReceipt(address,
+ unidentifiedAccessHelper.getAccessFor(recipientId),
+ groupId.transform(GroupId::serialize),
+ errorMessage);
+ } catch (org.whispersystems.signalservice.api.crypto.UntrustedIdentityException e) {
+ throw new UntrustedIdentityException(address);
+ }
+ }
+
public SendMessageResult sendNullMessage(RecipientId recipientId) throws IOException {
var messageSender = dependencies.getMessageSender();