package org.asamk.signal.manager;
+import org.asamk.signal.manager.api.Configuration;
import org.asamk.signal.manager.api.Device;
import org.asamk.signal.manager.api.Group;
import org.asamk.signal.manager.api.Identity;
void updateAccountAttributes(String deviceName) throws IOException;
- void updateConfiguration(
- final Boolean readReceipts,
- final Boolean unidentifiedDeliveryIndicators,
- final Boolean typingIndicators,
- final Boolean linkPreviews
- ) throws IOException, NotMasterDeviceException;
+ Configuration getConfiguration();
+
+ void updateConfiguration(Configuration configuration) throws IOException, NotMasterDeviceException;
void setProfile(
String givenName, String familyName, String about, String aboutEmoji, Optional<File> avatar
package org.asamk.signal.manager;
import org.asamk.signal.manager.actions.HandleAction;
+import org.asamk.signal.manager.api.Configuration;
import org.asamk.signal.manager.api.Device;
import org.asamk.signal.manager.api.Group;
import org.asamk.signal.manager.api.Identity;
account.isDiscoverableByPhoneNumber());
}
+ @Override
+ public Configuration getConfiguration() {
+ final var configurationStore = account.getConfigurationStore();
+ return new Configuration(java.util.Optional.ofNullable(configurationStore.getReadReceipts()),
+ java.util.Optional.ofNullable(configurationStore.getUnidentifiedDeliveryIndicators()),
+ java.util.Optional.ofNullable(configurationStore.getTypingIndicators()),
+ java.util.Optional.ofNullable(configurationStore.getLinkPreviews()));
+ }
+
@Override
public void updateConfiguration(
- final Boolean readReceipts,
- final Boolean unidentifiedDeliveryIndicators,
- final Boolean typingIndicators,
- final Boolean linkPreviews
+ Configuration configuration
) throws IOException, NotMasterDeviceException {
if (!account.isMasterDevice()) {
throw new NotMasterDeviceException();
}
final var configurationStore = account.getConfigurationStore();
- if (readReceipts != null) {
- configurationStore.setReadReceipts(readReceipts);
+ if (configuration.readReceipts().isPresent()) {
+ configurationStore.setReadReceipts(configuration.readReceipts().get());
}
- if (unidentifiedDeliveryIndicators != null) {
- configurationStore.setUnidentifiedDeliveryIndicators(unidentifiedDeliveryIndicators);
+ if (configuration.unidentifiedDeliveryIndicators().isPresent()) {
+ configurationStore.setUnidentifiedDeliveryIndicators(configuration.unidentifiedDeliveryIndicators().get());
}
- if (typingIndicators != null) {
- configurationStore.setTypingIndicators(typingIndicators);
+ if (configuration.typingIndicators().isPresent()) {
+ configurationStore.setTypingIndicators(configuration.typingIndicators().get());
}
- if (linkPreviews != null) {
- configurationStore.setLinkPreviews(linkPreviews);
+ if (configuration.linkPreviews().isPresent()) {
+ configurationStore.setLinkPreviews(configuration.linkPreviews().get());
}
syncHelper.sendConfigurationMessage();
}
--- /dev/null
+package org.asamk.signal.manager.api;
+
+import java.util.Optional;
+
+public record Configuration(
+ Optional<Boolean> readReceipts,
+ Optional<Boolean> unidentifiedDeliveryIndicators,
+ Optional<Boolean> typingIndicators,
+ Optional<Boolean> linkPreviews
+) {}
import org.asamk.signal.commands.exceptions.UserErrorException;
import org.asamk.signal.manager.Manager;
import org.asamk.signal.manager.NotMasterDeviceException;
+import org.asamk.signal.manager.api.Configuration;
import java.io.IOException;
+import java.util.Optional;
public class UpdateConfigurationCommand implements JsonRpcLocalCommand {
final var typingIndicators = ns.getBoolean("typing-indicators");
final var linkPreviews = ns.getBoolean("link-previews");
try {
- m.updateConfiguration(readReceipts, unidentifiedDeliveryIndicators, typingIndicators, linkPreviews);
+ m.updateConfiguration(new Configuration(Optional.ofNullable(readReceipts),
+ Optional.ofNullable(unidentifiedDeliveryIndicators),
+ Optional.ofNullable(typingIndicators),
+ Optional.ofNullable(linkPreviews)));
} catch (IOException e) {
throw new IOErrorException("UpdateAccount error: " + e.getMessage(), e);
} catch (NotMasterDeviceException e) {
import org.asamk.signal.manager.NotMasterDeviceException;
import org.asamk.signal.manager.StickerPackInvalidException;
import org.asamk.signal.manager.UntrustedIdentityException;
+import org.asamk.signal.manager.api.Configuration;
import org.asamk.signal.manager.api.Device;
import org.asamk.signal.manager.api.Group;
import org.asamk.signal.manager.api.Identity;
}
@Override
- public void updateConfiguration(
- final Boolean readReceipts,
- final Boolean unidentifiedDeliveryIndicators,
- final Boolean typingIndicators,
- final Boolean linkPreviews
- ) throws IOException {
+ public Configuration getConfiguration() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void updateConfiguration(Configuration configuration) throws IOException {
throw new UnsupportedOperationException();
}