]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/configuration/ConfigurationStore.java
b810ea23a5c1eddc50b07c22e4abe8ea4997baed
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / configuration / ConfigurationStore.java
1 package org.asamk.signal.manager.storage.configuration;
2
3 import org.asamk.signal.manager.api.PhoneNumberSharingMode;
4
5 public class ConfigurationStore {
6
7 private final Saver saver;
8
9 private Boolean readReceipts;
10 private Boolean unidentifiedDeliveryIndicators;
11 private Boolean typingIndicators;
12 private Boolean linkPreviews;
13 private Boolean phoneNumberUnlisted;
14 private PhoneNumberSharingMode phoneNumberSharingMode;
15
16 public ConfigurationStore(final Saver saver) {
17 this.saver = saver;
18 }
19
20 public static ConfigurationStore fromStorage(Storage storage, Saver saver) {
21 final var store = new ConfigurationStore(saver);
22 store.readReceipts = storage.readReceipts;
23 store.unidentifiedDeliveryIndicators = storage.unidentifiedDeliveryIndicators;
24 store.typingIndicators = storage.typingIndicators;
25 store.linkPreviews = storage.linkPreviews;
26 store.phoneNumberSharingMode = storage.phoneNumberSharingMode;
27 return store;
28 }
29
30 public Boolean getReadReceipts() {
31 return readReceipts;
32 }
33
34 public void setReadReceipts(final boolean readReceipts) {
35 this.readReceipts = readReceipts;
36 saver.save(toStorage());
37 }
38
39 public Boolean getUnidentifiedDeliveryIndicators() {
40 return unidentifiedDeliveryIndicators;
41 }
42
43 public void setUnidentifiedDeliveryIndicators(final boolean unidentifiedDeliveryIndicators) {
44 this.unidentifiedDeliveryIndicators = unidentifiedDeliveryIndicators;
45 saver.save(toStorage());
46 }
47
48 public Boolean getTypingIndicators() {
49 return typingIndicators;
50 }
51
52 public void setTypingIndicators(final boolean typingIndicators) {
53 this.typingIndicators = typingIndicators;
54 saver.save(toStorage());
55 }
56
57 public Boolean getLinkPreviews() {
58 return linkPreviews;
59 }
60
61 public void setLinkPreviews(final boolean linkPreviews) {
62 this.linkPreviews = linkPreviews;
63 saver.save(toStorage());
64 }
65
66 public Boolean getPhoneNumberUnlisted() {
67 return phoneNumberUnlisted;
68 }
69
70 public void setPhoneNumberUnlisted(final boolean phoneNumberUnlisted) {
71 this.phoneNumberUnlisted = phoneNumberUnlisted;
72 saver.save(toStorage());
73 }
74
75 public PhoneNumberSharingMode getPhoneNumberSharingMode() {
76 return phoneNumberSharingMode;
77 }
78
79 public void setPhoneNumberSharingMode(final PhoneNumberSharingMode phoneNumberSharingMode) {
80 this.phoneNumberSharingMode = phoneNumberSharingMode;
81 saver.save(toStorage());
82 }
83
84 private Storage toStorage() {
85 return new Storage(readReceipts,
86 unidentifiedDeliveryIndicators,
87 typingIndicators,
88 linkPreviews,
89 phoneNumberUnlisted,
90 phoneNumberSharingMode);
91 }
92
93 public record Storage(
94 Boolean readReceipts,
95 Boolean unidentifiedDeliveryIndicators,
96 Boolean typingIndicators,
97 Boolean linkPreviews,
98 Boolean phoneNumberUnlisted,
99 PhoneNumberSharingMode phoneNumberSharingMode
100 ) {}
101
102 public interface Saver {
103
104 void save(Storage storage);
105 }
106 }