package org.asamk.signal.json;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import org.asamk.signal.manager.Manager;
-import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
-import org.whispersystems.signalservice.api.push.SignalServiceAddress;
+import org.asamk.signal.manager.api.MessageEnvelope;
import java.util.UUID;
-import static org.asamk.signal.util.Util.getLegacyIdentifier;
-
-public class JsonMention {
-
- @JsonProperty
- @Deprecated
- final String name;
-
- @JsonProperty
- final String number;
-
- @JsonProperty
- final String uuid;
-
- @JsonProperty
- final int start;
-
- @JsonProperty
- final int length;
+public record JsonMention(@Deprecated String name, String number, String uuid, int start, int length) {
- JsonMention(SignalServiceDataMessage.Mention mention, Manager m) {
- final var address = m.resolveSignalServiceAddress(new SignalServiceAddress(mention.getUuid(), null));
- this.name = getLegacyIdentifier(address);
- this.number = address.getNumber().orNull();
- this.uuid = address.getUuid().transform(UUID::toString).orNull();
- this.start = mention.getStart();
- this.length = mention.getLength();
+ static JsonMention from(MessageEnvelope.Data.Mention mention) {
+ final var address = mention.recipient();
+ return new JsonMention(address.getLegacyIdentifier(),
+ address.getNumber().orElse(null),
+ address.getUuid().map(UUID::toString).orElse(null),
+ mention.start(),
+ mention.length());
}
}