1 package org
.asamk
.signal
.manager
.storage
.configuration
;
3 import org
.asamk
.signal
.manager
.api
.PhoneNumberSharingMode
;
5 public class ConfigurationStore
{
7 private final Saver saver
;
9 private Boolean readReceipts
;
10 private Boolean unidentifiedDeliveryIndicators
;
11 private Boolean typingIndicators
;
12 private Boolean linkPreviews
;
13 private Boolean phoneNumberUnlisted
;
14 private PhoneNumberSharingMode phoneNumberSharingMode
;
16 public ConfigurationStore(final Saver saver
) {
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
;
30 public Boolean
getReadReceipts() {
34 public void setReadReceipts(final boolean readReceipts
) {
35 this.readReceipts
= readReceipts
;
36 saver
.save(toStorage());
39 public Boolean
getUnidentifiedDeliveryIndicators() {
40 return unidentifiedDeliveryIndicators
;
43 public void setUnidentifiedDeliveryIndicators(final boolean unidentifiedDeliveryIndicators
) {
44 this.unidentifiedDeliveryIndicators
= unidentifiedDeliveryIndicators
;
45 saver
.save(toStorage());
48 public Boolean
getTypingIndicators() {
49 return typingIndicators
;
52 public void setTypingIndicators(final boolean typingIndicators
) {
53 this.typingIndicators
= typingIndicators
;
54 saver
.save(toStorage());
57 public Boolean
getLinkPreviews() {
61 public void setLinkPreviews(final boolean linkPreviews
) {
62 this.linkPreviews
= linkPreviews
;
63 saver
.save(toStorage());
66 public Boolean
getPhoneNumberUnlisted() {
67 return phoneNumberUnlisted
;
70 public void setPhoneNumberUnlisted(final boolean phoneNumberUnlisted
) {
71 this.phoneNumberUnlisted
= phoneNumberUnlisted
;
72 saver
.save(toStorage());
75 public PhoneNumberSharingMode
getPhoneNumberSharingMode() {
76 return phoneNumberSharingMode
;
79 public void setPhoneNumberSharingMode(final PhoneNumberSharingMode phoneNumberSharingMode
) {
80 this.phoneNumberSharingMode
= phoneNumberSharingMode
;
81 saver
.save(toStorage());
84 private Storage
toStorage() {
85 return new Storage(readReceipts
,
86 unidentifiedDeliveryIndicators
,
90 phoneNumberSharingMode
);
93 public record Storage(
95 Boolean unidentifiedDeliveryIndicators
,
96 Boolean typingIndicators
,
98 Boolean phoneNumberUnlisted
,
99 PhoneNumberSharingMode phoneNumberSharingMode
102 public interface Saver
{
104 void save(Storage storage
);