]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/TextStyle.java
483163088738b1686d3056f65c546da1deebb00b
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / TextStyle.java
1 package org.asamk.signal.manager.api;
2
3 import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
4
5 public record TextStyle(Style style, int start, int length) {
6
7 public enum Style {
8 NONE,
9 BOLD,
10 ITALIC,
11 SPOILER,
12 STRIKETHROUGH,
13 MONOSPACE;
14
15 static Style fromInternal(SignalServiceProtos.BodyRange.Style style) {
16 return switch (style) {
17 case NONE -> NONE;
18 case BOLD -> BOLD;
19 case ITALIC -> ITALIC;
20 case SPOILER -> SPOILER;
21 case STRIKETHROUGH -> STRIKETHROUGH;
22 case MONOSPACE -> MONOSPACE;
23 };
24 }
25
26 public static Style from(String style) {
27 return switch (style) {
28 case "NONE" -> NONE;
29 case "BOLD" -> BOLD;
30 case "ITALIC" -> ITALIC;
31 case "SPOILER" -> SPOILER;
32 case "STRIKETHROUGH" -> STRIKETHROUGH;
33 case "MONOSPACE" -> MONOSPACE;
34 default -> null;
35 };
36 }
37
38 SignalServiceProtos.BodyRange.Style toBodyRangeStyle() {
39 return switch (this) {
40 case NONE -> SignalServiceProtos.BodyRange.Style.NONE;
41 case BOLD -> SignalServiceProtos.BodyRange.Style.BOLD;
42 case ITALIC -> SignalServiceProtos.BodyRange.Style.ITALIC;
43 case SPOILER -> SignalServiceProtos.BodyRange.Style.SPOILER;
44 case STRIKETHROUGH -> SignalServiceProtos.BodyRange.Style.STRIKETHROUGH;
45 case MONOSPACE -> SignalServiceProtos.BodyRange.Style.MONOSPACE;
46 };
47 }
48 }
49
50 static TextStyle from(SignalServiceProtos.BodyRange bodyRange) {
51 return new TextStyle(Style.fromInternal(bodyRange.getStyle()), bodyRange.getStart(), bodyRange.getLength());
52 }
53
54 public SignalServiceProtos.BodyRange toBodyRange() {
55 return SignalServiceProtos.BodyRange.newBuilder()
56 .setStart(this.start())
57 .setLength(this.length())
58 .setStyle(this.style().toBodyRangeStyle())
59 .build();
60 }
61 }