]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/Manager.java
Implement MessageSendLog for resending after encryption error
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / Manager.java
index 137e32ad40564515a78ee472e20a07b0533c8d45..ed70bceebe760cfc31c468663ff1321632aa2e0f 100644 (file)
@@ -6,12 +6,15 @@ import org.asamk.signal.manager.api.Group;
 import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
+import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.Pair;
 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.StickerPack;
+import org.asamk.signal.manager.api.StickerPackUrl;
 import org.asamk.signal.manager.api.TypingAction;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.api.UpdateGroup;
@@ -64,6 +67,7 @@ public interface Manager extends Closeable {
             throw new NotRegisteredException();
         }
 
+        account.initDatabase();
         final var serviceEnvironmentConfig = ServiceConfig.getServiceEnvironmentConfig(serviceEnvironment, userAgent);
 
         return new ManagerImpl(account, pathConfig, serviceEnvironmentConfig, userAgent);
@@ -97,6 +101,13 @@ public interface Manager extends Closeable {
 
     void checkAccountState() throws IOException;
 
+    /**
+     * This is used for checking a set of phone numbers for registration on Signal
+     *
+     * @param numbers The set of phone number in question
+     * @return A map of numbers to canonicalized number and uuid. If a number is not registered the uuid is null.
+     * @throws IOException if it's unable to get the contacts to check if they're registered
+     */
     Map<String, Pair<String, UUID>> areUsersRegistered(Set<String> numbers) throws IOException;
 
     void updateAccountAttributes(String deviceName) throws IOException;
@@ -105,6 +116,13 @@ public interface Manager extends Closeable {
 
     void updateConfiguration(Configuration configuration) throws IOException, NotMasterDeviceException;
 
+    /**
+     * @param givenName  if null, the previous givenName will be kept
+     * @param familyName if null, the previous familyName will be kept
+     * @param about      if null, the previous about text will be kept
+     * @param aboutEmoji if null, the previous about emoji will be kept
+     * @param avatar     if avatar is null the image from the local avatar store is used (if present),
+     */
     void setProfile(
             String givenName, String familyName, String about, String aboutEmoji, Optional<File> avatar
     ) throws IOException;
@@ -117,11 +135,11 @@ public interface Manager extends Closeable {
 
     List<Device> getLinkedDevices() throws IOException;
 
-    void removeLinkedDevices(long deviceId) throws IOException;
+    void removeLinkedDevices(int deviceId) throws IOException;
 
     void addDeviceLink(URI linkUri) throws IOException, InvalidDeviceLinkException;
 
-    void setRegistrationLockPin(Optional<String> pin) throws IOException;
+    void setRegistrationLockPin(Optional<String> pin) throws IOException, NotMasterDeviceException;
 
     Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException, UnregisteredRecipientException;
 
@@ -159,7 +177,7 @@ public interface Manager extends Closeable {
 
     SendMessageResults sendMessage(
             Message message, Set<RecipientIdentifier> recipients
-    ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException;
+    ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException, InvalidStickerException;
 
     SendMessageResults sendRemoteDeleteMessage(
             long targetSentTimestamp, Set<RecipientIdentifier> recipients
@@ -191,11 +209,22 @@ public interface Manager extends Closeable {
             GroupId groupId, boolean blocked
     ) throws GroupNotFoundException, IOException, NotMasterDeviceException;
 
+    /**
+     * Change the expiration timer for a contact
+     */
     void setExpirationTimer(
             RecipientIdentifier.Single recipient, int messageExpirationTimer
     ) throws IOException, UnregisteredRecipientException;
 
-    URI uploadStickerPack(File path) throws IOException, StickerPackInvalidException;
+    /**
+     * Upload the sticker pack from path.
+     *
+     * @param path Path can be a path to a manifest.json file or to a zip file that contains a manifest.json file
+     * @return if successful, returns the URL to install the sticker pack in the signal app
+     */
+    StickerPackUrl uploadStickerPack(File path) throws IOException, StickerPackInvalidException;
+
+    List<StickerPack> getStickerPacks();
 
     void requestAllSyncData() throws IOException;
 
@@ -245,18 +274,41 @@ public interface Manager extends Closeable {
 
     List<Identity> getIdentities(RecipientIdentifier.Single recipient);
 
+    /**
+     * Trust this the identity with this fingerprint
+     *
+     * @param recipient   account of the identity
+     * @param fingerprint Fingerprint
+     */
     boolean trustIdentityVerified(
             RecipientIdentifier.Single recipient, byte[] fingerprint
     ) throws UnregisteredRecipientException;
 
+    /**
+     * Trust this the identity with this safety number
+     *
+     * @param recipient    account of the identity
+     * @param safetyNumber Safety number
+     */
     boolean trustIdentityVerifiedSafetyNumber(
             RecipientIdentifier.Single recipient, String safetyNumber
     ) throws UnregisteredRecipientException;
 
+    /**
+     * Trust this the identity with this scannable safety number
+     *
+     * @param recipient    account of the identity
+     * @param safetyNumber Scannable safety number
+     */
     boolean trustIdentityVerifiedSafetyNumber(
             RecipientIdentifier.Single recipient, byte[] safetyNumber
     ) throws UnregisteredRecipientException;
 
+    /**
+     * Trust all keys of this identity without verification
+     *
+     * @param recipient account of the identity
+     */
     boolean trustIdentityAllKeys(RecipientIdentifier.Single recipient) throws UnregisteredRecipientException;
 
     void addClosedListener(Runnable listener);