]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/Manager.java
Restrict blocking of group to master device
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / Manager.java
index d2eb0f8f04270bdfed61099ff360ea3e1148e37c..3cfeb4f7680eb381eb452251f7500cb7b7b91c99 100644 (file)
@@ -1,28 +1,27 @@
 package org.asamk.signal.manager;
 
 import org.asamk.signal.manager.api.Device;
+import org.asamk.signal.manager.api.Group;
+import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.RecipientIdentifier;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
 import org.asamk.signal.manager.api.SendMessageResults;
 import org.asamk.signal.manager.api.TypingAction;
+import org.asamk.signal.manager.api.UpdateGroup;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironment;
 import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupLinkState;
 import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
 import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.groups.LastGroupAdminException;
 import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.manager.storage.SignalAccount;
-import org.asamk.signal.manager.storage.groups.GroupInfo;
-import org.asamk.signal.manager.storage.identities.IdentityInfo;
 import org.asamk.signal.manager.storage.identities.TrustNewIdentity;
 import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.Profile;
-import org.asamk.signal.manager.storage.recipients.RecipientId;
+import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.whispersystems.libsignal.IdentityKey;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.libsignal.util.Pair;
@@ -51,7 +50,7 @@ import java.util.stream.Collectors;
 public interface Manager extends Closeable {
 
     static Manager init(
-            String username,
+            String number,
             File settingsPath,
             ServiceEnvironment serviceEnvironment,
             String userAgent,
@@ -59,11 +58,11 @@ public interface Manager extends Closeable {
     ) throws IOException, NotRegisteredException {
         var pathConfig = PathConfig.createDefault(settingsPath);
 
-        if (!SignalAccount.userExists(pathConfig.getDataPath(), username)) {
+        if (!SignalAccount.userExists(pathConfig.getDataPath(), number)) {
             throw new NotRegisteredException();
         }
 
-        var account = SignalAccount.load(pathConfig.getDataPath(), username, true, trustNewIdentity);
+        var account = SignalAccount.load(pathConfig.getDataPath(), number, true, trustNewIdentity);
 
         if (!account.isRegistered()) {
             throw new NotRegisteredException();
@@ -74,7 +73,7 @@ public interface Manager extends Closeable {
         return new ManagerImpl(account, pathConfig, serviceEnvironmentConfig, userAgent);
     }
 
-    static List<String> getAllLocalUsernames(File settingsPath) {
+    static List<String> getAllLocalNumbers(File settingsPath) {
         var pathConfig = PathConfig.createDefault(settingsPath);
         final var dataPath = pathConfig.getDataPath();
         final var files = dataPath.listFiles();
@@ -90,11 +89,7 @@ public interface Manager extends Closeable {
                 .collect(Collectors.toList());
     }
 
-    String getUsername();
-
-    RecipientId getSelfRecipientId();
-
-    int getDeviceId();
+    String getSelfNumber();
 
     void checkAccountState() throws IOException;
 
@@ -102,6 +97,13 @@ public interface Manager extends Closeable {
 
     void updateAccountAttributes(String deviceName) throws IOException;
 
+    void updateConfiguration(
+            final Boolean readReceipts,
+            final Boolean unidentifiedDeliveryIndicators,
+            final Boolean typingIndicators,
+            final Boolean linkPreviews
+    ) throws IOException, NotMasterDeviceException;
+
     void setProfile(
             String givenName, String familyName, String about, String aboutEmoji, Optional<File> avatar
     ) throws IOException;
@@ -114,15 +116,15 @@ public interface Manager extends Closeable {
 
     List<Device> getLinkedDevices() throws IOException;
 
-    void removeLinkedDevices(int deviceId) throws IOException;
+    void removeLinkedDevices(long deviceId) throws IOException;
 
     void addDeviceLink(URI linkUri) throws IOException, InvalidKeyException;
 
     void setRegistrationLockPin(Optional<String> pin) throws IOException, UnauthenticatedResponseException;
 
-    Profile getRecipientProfile(RecipientId recipientId);
+    Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws UnregisteredUserException;
 
-    List<GroupInfo> getGroups();
+    List<Group> getGroups();
 
     SendGroupMessageResults quitGroup(
             GroupId groupId, Set<RecipientIdentifier.Single> groupAdmins
@@ -135,20 +137,7 @@ public interface Manager extends Closeable {
     ) throws IOException, AttachmentInvalidException;
 
     SendGroupMessageResults updateGroup(
-            GroupId groupId,
-            String name,
-            String description,
-            Set<RecipientIdentifier.Single> members,
-            Set<RecipientIdentifier.Single> removeMembers,
-            Set<RecipientIdentifier.Single> admins,
-            Set<RecipientIdentifier.Single> removeAdmins,
-            boolean resetGroupLink,
-            GroupLinkState groupLinkState,
-            GroupPermission addMemberPermission,
-            GroupPermission editDetailsPermission,
-            File avatarFile,
-            Integer expirationTimer,
-            Boolean isAnnouncementGroup
+            final GroupId groupId, final UpdateGroup updateGroup
     ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException, GroupSendingNotAllowedException;
 
     Pair<GroupId, SendGroupMessageResults> joinGroup(
@@ -195,7 +184,7 @@ public interface Manager extends Closeable {
 
     void setGroupBlocked(
             GroupId groupId, boolean blocked
-    ) throws GroupNotFoundException, IOException;
+    ) throws GroupNotFoundException, IOException, NotMasterDeviceException;
 
     void setExpirationTimer(
             RecipientIdentifier.Single recipient, int messageExpirationTimer
@@ -221,15 +210,15 @@ public interface Manager extends Closeable {
 
     void sendContacts() throws IOException;
 
-    List<Pair<RecipientId, Contact>> getContacts();
+    List<Pair<RecipientAddress, Contact>> getContacts();
 
-    String getContactOrProfileName(RecipientIdentifier.Single recipientIdentifier);
+    String getContactOrProfileName(RecipientIdentifier.Single recipient);
 
-    GroupInfo getGroup(GroupId groupId);
+    Group getGroup(GroupId groupId);
 
-    List<IdentityInfo> getIdentities();
+    List<Identity> getIdentities();
 
-    List<IdentityInfo> getIdentities(RecipientIdentifier.Single recipient);
+    List<Identity> getIdentities(RecipientIdentifier.Single recipient);
 
     boolean trustIdentityVerified(RecipientIdentifier.Single recipient, byte[] fingerprint);
 
@@ -241,14 +230,8 @@ public interface Manager extends Closeable {
 
     String computeSafetyNumber(SignalServiceAddress theirAddress, IdentityKey theirIdentityKey);
 
-    byte[] computeSafetyNumberForScanning(SignalServiceAddress theirAddress, IdentityKey theirIdentityKey);
-
     SignalServiceAddress resolveSignalServiceAddress(SignalServiceAddress address);
 
-    SignalServiceAddress resolveSignalServiceAddress(UUID uuid);
-
-    SignalServiceAddress resolveSignalServiceAddress(RecipientId recipientId);
-
     @Override
     void close() throws IOException;