]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/TextStyle.java
Update libsignal-service
[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.BodyRange;
4
5 public record TextStyle(Style style, Integer start, Integer length) {
6
7 public enum Style {
8 NONE,
9 BOLD,
10 ITALIC,
11 SPOILER,
12 STRIKETHROUGH,
13 MONOSPACE;
14
15 static Style fromInternal(BodyRange.Style style) {
16 if (style == null) {
17 return NONE;
18 }
19 return switch (style) {
20 case NONE -> NONE;
21 case BOLD -> BOLD;
22 case ITALIC -> ITALIC;
23 case SPOILER -> SPOILER;
24 case STRIKETHROUGH -> STRIKETHROUGH;
25 case MONOSPACE -> MONOSPACE;
26 };
27 }
28
29 public static Style from(String style) {
30 return switch (style) {
31 case "NONE" -> NONE;
32 case "BOLD" -> BOLD;
33 case "ITALIC" -> ITALIC;
34 case "SPOILER" -> SPOILER;
35 case "STRIKETHROUGH" -> STRIKETHROUGH;
36 case "MONOSPACE" -> MONOSPACE;
37 default -> null;
38 };
39 }
40
41 BodyRange.Style toBodyRangeStyle() {
42 return switch (this) {
43 case NONE -> BodyRange.Style.NONE;
44 case BOLD -> BodyRange.Style.BOLD;
45 case ITALIC -> BodyRange.Style.ITALIC;
46 case SPOILER -> BodyRange.Style.SPOILER;
47 case STRIKETHROUGH -> BodyRange.Style.STRIKETHROUGH;
48 case MONOSPACE -> BodyRange.Style.MONOSPACE;
49 };
50 }
51 }
52
53 static TextStyle from(BodyRange bodyRange) {
54 return new TextStyle(Style.fromInternal(bodyRange.style), bodyRange.start, bodyRange.length);
55 }
56
57 public BodyRange toBodyRange() {
58 return new BodyRange.Builder().start(this.start())
59 .length(this.length())
60 .style(this.style().toBodyRangeStyle())
61 .build();
62 }
63 }