return new Number(address.number().get());
} else if (address.aci().isPresent()) {
return new Uuid(UUID.fromString(address.aci().get()));
+ } else if (address.pni().isPresent()) {
+ return new Pni(address.pni().get());
} else if (address.username().isPresent()) {
return new Username(address.username().get());
}
}
}
+ record Pni(String pni) implements Single {
+
+ @Override
+ public String getIdentifier() {
+ return pni;
+ }
+
+ @Override
+ public RecipientAddress toPartialRecipientAddress() {
+ return new RecipientAddress(null, pni, null, null);
+ }
+ }
+
record Number(String number) implements Single {
@Override
public RecipientId resolveRecipient(final RecipientIdentifier.Single recipient) throws UnregisteredRecipientException {
if (recipient instanceof RecipientIdentifier.Uuid uuidRecipient) {
return account.getRecipientResolver().resolveRecipient(ACI.from(uuidRecipient.uuid()));
+ } else if (recipient instanceof RecipientIdentifier.Pni pniRecipient) {
+ return account.getRecipientResolver().resolveRecipient(PNI.parseOrThrow(pniRecipient.pni()));
} else if (recipient instanceof RecipientIdentifier.Number numberRecipient) {
final var number = numberRecipient.number();
return account.getRecipientStore().resolveRecipientByNumber(number, () -> {
import org.whispersystems.signalservice.api.messages.SignalServiceTypingMessage;
import org.whispersystems.signalservice.api.push.ServiceId;
import org.whispersystems.signalservice.api.push.ServiceId.ACI;
+import org.whispersystems.signalservice.api.push.ServiceId.PNI;
import org.whispersystems.signalservice.api.push.ServiceIdType;
import org.whispersystems.signalservice.api.push.exceptions.CdsiResourceExhaustedException;
import org.whispersystems.signalservice.api.util.DeviceNameUtil;
if (recipient instanceof RecipientIdentifier.Uuid u) {
account.getMessageSendLogStore()
.deleteEntryForRecipientNonGroup(targetSentTimestamp, ACI.from(u.uuid()));
+ } else if (recipient instanceof RecipientIdentifier.Pni pni) {
+ account.getMessageSendLogStore()
+ .deleteEntryForRecipientNonGroup(targetSentTimestamp, PNI.parseOrThrow(pni.pni()));
} else if (recipient instanceof RecipientIdentifier.Single r) {
try {
final var recipientId = context.getRecipientHelper().resolveRecipient(r);