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 PhoneNumberSharingMode phoneNumberSharingMode
;
15 public ConfigurationStore(final Saver saver
) {
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
;
29 public Boolean
getReadReceipts() {
33 public void setReadReceipts(final boolean readReceipts
) {
34 this.readReceipts
= readReceipts
;
35 saver
.save(toStorage());
38 public Boolean
getUnidentifiedDeliveryIndicators() {
39 return unidentifiedDeliveryIndicators
;
42 public void setUnidentifiedDeliveryIndicators(final boolean unidentifiedDeliveryIndicators
) {
43 this.unidentifiedDeliveryIndicators
= unidentifiedDeliveryIndicators
;
44 saver
.save(toStorage());
47 public Boolean
getTypingIndicators() {
48 return typingIndicators
;
51 public void setTypingIndicators(final boolean typingIndicators
) {
52 this.typingIndicators
= typingIndicators
;
53 saver
.save(toStorage());
56 public Boolean
getLinkPreviews() {
60 public void setLinkPreviews(final boolean linkPreviews
) {
61 this.linkPreviews
= linkPreviews
;
62 saver
.save(toStorage());
65 public PhoneNumberSharingMode
getPhoneNumberSharingMode() {
66 return phoneNumberSharingMode
;
69 public void setPhoneNumberSharingMode(final PhoneNumberSharingMode phoneNumberSharingMode
) {
70 this.phoneNumberSharingMode
= phoneNumberSharingMode
;
71 saver
.save(toStorage());
74 private Storage
toStorage() {
75 return new Storage(readReceipts
,
76 unidentifiedDeliveryIndicators
,
79 phoneNumberSharingMode
);
82 public record Storage(
84 Boolean unidentifiedDeliveryIndicators
,
85 Boolean typingIndicators
,
87 PhoneNumberSharingMode phoneNumberSharingMode
90 public interface Saver
{
92 void save(Storage storage
);