]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/configuration/ConfigurationStore.java
793683e677eb01e41ad683db7f1f58241a305523
[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 PhoneNumberSharingMode phoneNumberSharingMode;
14
15 public ConfigurationStore(final Saver saver) {
16 this.saver = saver;
17 }
18
19 public static ConfigurationStore fromStorage(Storage storage, Saver saver) {
20 final var store = new ConfigurationStore(saver);
21 store.readReceipts = storage.readReceipts;
22 store.unidentifiedDeliveryIndicators = storage.unidentifiedDeliveryIndicators;
23 store.typingIndicators = storage.typingIndicators;
24 store.linkPreviews = storage.linkPreviews;
25 store.phoneNumberSharingMode = storage.phoneNumberSharingMode;
26 return store;
27 }
28
29 public Boolean getReadReceipts() {
30 return readReceipts;
31 }
32
33 public void setReadReceipts(final boolean readReceipts) {
34 this.readReceipts = readReceipts;
35 saver.save(toStorage());
36 }
37
38 public Boolean getUnidentifiedDeliveryIndicators() {
39 return unidentifiedDeliveryIndicators;
40 }
41
42 public void setUnidentifiedDeliveryIndicators(final boolean unidentifiedDeliveryIndicators) {
43 this.unidentifiedDeliveryIndicators = unidentifiedDeliveryIndicators;
44 saver.save(toStorage());
45 }
46
47 public Boolean getTypingIndicators() {
48 return typingIndicators;
49 }
50
51 public void setTypingIndicators(final boolean typingIndicators) {
52 this.typingIndicators = typingIndicators;
53 saver.save(toStorage());
54 }
55
56 public Boolean getLinkPreviews() {
57 return linkPreviews;
58 }
59
60 public void setLinkPreviews(final boolean linkPreviews) {
61 this.linkPreviews = linkPreviews;
62 saver.save(toStorage());
63 }
64
65 public PhoneNumberSharingMode getPhoneNumberSharingMode() {
66 return phoneNumberSharingMode;
67 }
68
69 public void setPhoneNumberSharingMode(final PhoneNumberSharingMode phoneNumberSharingMode) {
70 this.phoneNumberSharingMode = phoneNumberSharingMode;
71 saver.save(toStorage());
72 }
73
74 private Storage toStorage() {
75 return new Storage(readReceipts,
76 unidentifiedDeliveryIndicators,
77 typingIndicators,
78 linkPreviews,
79 phoneNumberSharingMode);
80 }
81
82 public record Storage(
83 Boolean readReceipts,
84 Boolean unidentifiedDeliveryIndicators,
85 Boolean typingIndicators,
86 Boolean linkPreviews,
87 PhoneNumberSharingMode phoneNumberSharingMode
88 ) {}
89
90 public interface Saver {
91
92 void save(Storage storage);
93 }
94 }