]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/configuration/ConfigurationStore.java
09d5162e5546941a8c015c778f1a9ca5fb8f8792
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / configuration / ConfigurationStore.java
1 package org.asamk.signal.manager.configuration;
2
3 public class ConfigurationStore {
4
5 private final Saver saver;
6
7 private Boolean readReceipts;
8 private Boolean unidentifiedDeliveryIndicators;
9 private Boolean typingIndicators;
10 private Boolean linkPreviews;
11
12 public ConfigurationStore(final Saver saver) {
13 this.saver = saver;
14 }
15
16 public static ConfigurationStore fromStorage(Storage storage, Saver saver) {
17 final var store = new ConfigurationStore(saver);
18 store.readReceipts = storage.readReceipts;
19 store.unidentifiedDeliveryIndicators = storage.unidentifiedDeliveryIndicators;
20 store.typingIndicators = storage.typingIndicators;
21 store.linkPreviews = storage.linkPreviews;
22 return store;
23 }
24
25 public Boolean getReadReceipts() {
26 return readReceipts;
27 }
28
29 public void setReadReceipts(final boolean readReceipts) {
30 this.readReceipts = readReceipts;
31 saver.save(toStorage());
32 }
33
34 public Boolean getUnidentifiedDeliveryIndicators() {
35 return unidentifiedDeliveryIndicators;
36 }
37
38 public void setUnidentifiedDeliveryIndicators(final boolean unidentifiedDeliveryIndicators) {
39 this.unidentifiedDeliveryIndicators = unidentifiedDeliveryIndicators;
40 saver.save(toStorage());
41 }
42
43 public Boolean getTypingIndicators() {
44 return typingIndicators;
45 }
46
47 public void setTypingIndicators(final boolean typingIndicators) {
48 this.typingIndicators = typingIndicators;
49 saver.save(toStorage());
50 }
51
52 public Boolean getLinkPreviews() {
53 return linkPreviews;
54 }
55
56 public void setLinkPreviews(final boolean linkPreviews) {
57 this.linkPreviews = linkPreviews;
58 saver.save(toStorage());
59 }
60
61 private Storage toStorage() {
62 return new Storage(readReceipts, unidentifiedDeliveryIndicators, typingIndicators, linkPreviews);
63 }
64
65 public record Storage(
66 Boolean readReceipts, Boolean unidentifiedDeliveryIndicators, Boolean typingIndicators, Boolean linkPreviews
67 ) {}
68
69 public interface Saver {
70
71 void save(Storage storage);
72 }
73 }