]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/api/RecipientIdentifier.java
Implement support for usernames
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / RecipientIdentifier.java
index 70a60d47d0d7f6f55ec0f741b11e68d297960361..d8952ec07810fc1c02c03b78359137ac346a5f8a 100644 (file)
@@ -30,6 +30,10 @@ public sealed interface RecipientIdentifier {
                     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);
@@ -46,6 +50,8 @@ public sealed interface RecipientIdentifier {
                 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");
         }
@@ -79,6 +85,19 @@ public sealed interface RecipientIdentifier {
         }
     }
 
+    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