X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/71e0c3f80c4dddfa6c689f0aa897ecf9a011bce1..73d44ba3fee81e5a19f1055bd90366e37f0341ec:/lib/src/main/java/org/asamk/signal/manager/Manager.java diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 8b373e38..ed70bcee 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -6,13 +6,17 @@ 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; import org.asamk.signal.manager.config.ServiceConfig; import org.asamk.signal.manager.config.ServiceEnvironment; @@ -40,7 +44,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.UUID; -import java.util.concurrent.TimeUnit; public interface Manager extends Closeable { @@ -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> areUsersRegistered(Set 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 avatar ) throws IOException; @@ -117,29 +135,29 @@ public interface Manager extends Closeable { List 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 pin) throws IOException; + void setRegistrationLockPin(Optional pin) throws IOException, NotMasterDeviceException; - Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException; + Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException, UnregisteredRecipientException; List getGroups(); SendGroupMessageResults quitGroup( GroupId groupId, Set groupAdmins - ) throws GroupNotFoundException, IOException, NotAGroupMemberException, LastGroupAdminException; + ) throws GroupNotFoundException, IOException, NotAGroupMemberException, LastGroupAdminException, UnregisteredRecipientException; void deleteGroup(GroupId groupId) throws IOException; Pair createGroup( String name, Set members, File avatarFile - ) throws IOException, AttachmentInvalidException; + ) throws IOException, AttachmentInvalidException, UnregisteredRecipientException; SendGroupMessageResults updateGroup( final GroupId groupId, final UpdateGroup updateGroup - ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException, GroupSendingNotAllowedException; + ) throws IOException, GroupNotFoundException, AttachmentInvalidException, NotAGroupMemberException, GroupSendingNotAllowedException, UnregisteredRecipientException; Pair joinGroup( GroupInviteLinkUrl inviteLinkUrl @@ -159,7 +177,7 @@ public interface Manager extends Closeable { SendMessageResults sendMessage( Message message, Set recipients - ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException; + ) throws IOException, AttachmentInvalidException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException, InvalidStickerException; SendMessageResults sendRemoteDeleteMessage( long targetSentTimestamp, Set recipients @@ -171,31 +189,42 @@ public interface Manager extends Closeable { RecipientIdentifier.Single targetAuthor, long targetSentTimestamp, Set recipients - ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException; + ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException; SendMessageResults sendEndSessionMessage(Set recipients) throws IOException; - void deleteRecipient(RecipientIdentifier.Single recipient) throws IOException; + void deleteRecipient(RecipientIdentifier.Single recipient); - void deleteContact(RecipientIdentifier.Single recipient) throws IOException; + void deleteContact(RecipientIdentifier.Single recipient); void setContactName( RecipientIdentifier.Single recipient, String name - ) throws NotMasterDeviceException, IOException; + ) throws NotMasterDeviceException, IOException, UnregisteredRecipientException; void setContactBlocked( RecipientIdentifier.Single recipient, boolean blocked - ) throws NotMasterDeviceException, IOException; + ) throws NotMasterDeviceException, IOException, UnregisteredRecipientException; void setGroupBlocked( GroupId groupId, boolean blocked ) throws GroupNotFoundException, IOException, NotMasterDeviceException; + /** + * Change the expiration timer for a contact + */ void setExpirationTimer( RecipientIdentifier.Single recipient, int messageExpirationTimer - ) throws IOException; + ) 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 getStickerPacks(); void requestAllSyncData() throws IOException; @@ -245,13 +274,42 @@ public interface Manager extends Closeable { List getIdentities(RecipientIdentifier.Single recipient); - boolean trustIdentityVerified(RecipientIdentifier.Single recipient, byte[] fingerprint); + /** + * 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; - boolean trustIdentityVerifiedSafetyNumber(RecipientIdentifier.Single recipient, String safetyNumber); + /** + * 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; - boolean trustIdentityVerifiedSafetyNumber(RecipientIdentifier.Single recipient, byte[] safetyNumber); + /** + * 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; - boolean trustIdentityAllKeys(RecipientIdentifier.Single recipient); + /** + * 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);