]>
nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/RecipientIdentifier.java
1 package org
.asamk
.signal
.manager
.api
;
3 import org
.asamk
.signal
.manager
.groups
.GroupId
;
4 import org
.asamk
.signal
.manager
.storage
.recipients
.RecipientAddress
;
5 import org
.whispersystems
.signalservice
.api
.util
.PhoneNumberFormatter
;
6 import org
.whispersystems
.signalservice
.api
.util
.UuidUtil
;
10 public sealed interface RecipientIdentifier
{
12 record NoteToSelf() implements RecipientIdentifier
{
14 public static NoteToSelf INSTANCE
= new NoteToSelf();
17 sealed interface Single
extends RecipientIdentifier
{
19 static Single
fromString(String identifier
, String localNumber
) throws InvalidNumberException
{
21 return UuidUtil
.isUuid(identifier
)
22 ?
new Uuid(UUID
.fromString(identifier
))
23 : new Number(PhoneNumberFormatter
.formatNumber(identifier
, localNumber
));
24 } catch (org
.whispersystems
.signalservice
.api
.util
.InvalidNumberException e
) {
25 throw new InvalidNumberException(e
.getMessage(), e
);
29 static Single
fromAddress(RecipientAddress address
) {
30 if (address
.getNumber().isPresent()) {
31 return new Number(address
.getNumber().get());
32 } else if (address
.getUuid().isPresent()) {
33 return new Uuid(address
.getUuid().get());
35 throw new AssertionError("RecipientAddress without identifier");
38 String
getIdentifier();
41 record Uuid(UUID uuid
) implements Single
{
44 public String
getIdentifier() {
45 return uuid
.toString();
49 record Number(String number
) implements Single
{
52 public String
getIdentifier() {
57 record Group(GroupId groupId
) implements RecipientIdentifier
{}