return new Uuid(UUID.fromString(identifier));
}
+ if (identifier.startsWith("u:")) {
+ return new Username(identifier.substring(2));
+ }
+
final var normalizedNumber = PhoneNumberFormatter.formatNumber(identifier, localNumber);
if (!normalizedNumber.equals(identifier)) {
final Logger logger = LoggerFactory.getLogger(RecipientIdentifier.class);
return new Number(address.number().get());
} else if (address.uuid().isPresent()) {
return new Uuid(address.uuid().get());
+ } else if (address.username().isPresent()) {
+ return new Username(address.username().get());
}
throw new AssertionError("RecipientAddress without identifier");
}
}
}
+ record Username(String username) implements Single {
+
+ @Override
+ public String getIdentifier() {
+ return "u:" + username;
+ }
+
+ @Override
+ public RecipientAddress toPartialRecipientAddress() {
+ return new RecipientAddress(null, null, username);
+ }
+ }
+
record Group(GroupId groupId) implements RecipientIdentifier {
@Override