]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/configuration/ConfigurationStore.java
e7e1b5f58d8d5a768118bec8ea432c9fd6abdd73
[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 static final class Storage {
66
67 public Boolean readReceipts;
68 public Boolean unidentifiedDeliveryIndicators;
69 public Boolean typingIndicators;
70 public Boolean linkPreviews;
71
72 // For deserialization
73 private Storage() {
74 }
75
76 public Storage(
77 final Boolean readReceipts,
78 final Boolean unidentifiedDeliveryIndicators,
79 final Boolean typingIndicators,
80 final Boolean linkPreviews
81 ) {
82 this.readReceipts = readReceipts;
83 this.unidentifiedDeliveryIndicators = unidentifiedDeliveryIndicators;
84 this.typingIndicators = typingIndicators;
85 this.linkPreviews = linkPreviews;
86 }
87 }
88
89 public interface Saver {
90
91 void save(Storage storage);
92 }
93 }