X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/5cccf521032954d7ad8e3f70e3cbef2ce1293e85..7587a603872a337dd6be706854a0658ea131dbbe:/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 b7a97c46..e568816f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -1,6 +1,5 @@ package org.asamk.signal.manager; -import org.asamk.signal.manager.api.AccountCheckException; import org.asamk.signal.manager.api.AttachmentInvalidException; import org.asamk.signal.manager.api.Configuration; import org.asamk.signal.manager.api.Device; @@ -12,7 +11,6 @@ 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.NotMasterDeviceException; -import org.asamk.signal.manager.api.NotRegisteredException; import org.asamk.signal.manager.api.Pair; import org.asamk.signal.manager.api.RecipientIdentifier; import org.asamk.signal.manager.api.SendGroupMessageResults; @@ -23,19 +21,15 @@ 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; +import org.asamk.signal.manager.api.UserStatus; import org.asamk.signal.manager.groups.GroupId; import org.asamk.signal.manager.groups.GroupInviteLinkUrl; import org.asamk.signal.manager.groups.GroupNotFoundException; 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.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.RecipientAddress; +import org.asamk.signal.manager.storage.recipients.Recipient; import org.whispersystems.signalservice.api.util.PhoneNumberFormatter; import java.io.Closeable; @@ -43,53 +37,14 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.time.Duration; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.UUID; public interface Manager extends Closeable { - static Manager init( - String number, - File settingsPath, - ServiceEnvironment serviceEnvironment, - String userAgent, - TrustNewIdentity trustNewIdentity - ) throws IOException, NotRegisteredException, AccountCheckException { - var pathConfig = PathConfig.createDefault(settingsPath); - - if (!SignalAccount.userExists(pathConfig.dataPath(), number)) { - throw new NotRegisteredException(); - } - - var account = SignalAccount.load(pathConfig.dataPath(), number, true, trustNewIdentity); - - if (!account.isRegistered()) { - account.close(); - throw new NotRegisteredException(); - } - - account.initDatabase(); - final var serviceEnvironmentConfig = ServiceConfig.getServiceEnvironmentConfig(serviceEnvironment, userAgent); - - final var manager = new ManagerImpl(account, pathConfig, serviceEnvironmentConfig, userAgent); - - try { - manager.checkAccountState(); - } catch (IOException e) { - manager.close(); - throw new AccountCheckException("Error while checking account " + account + ": " + e.getMessage(), e); - } - - return manager; - } - - static void initLogger() { - LibSignalLogger.initLogger(); - } - static boolean isValidNumber(final String e164Number, final String countryCode) { return PhoneNumberFormatter.isValidNumber(e164Number, countryCode); } @@ -103,7 +58,7 @@ public interface Manager extends Closeable { * @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; + Map getUserStatus(Set numbers) throws IOException; void updateAccountAttributes(String deviceName) throws IOException; @@ -186,6 +141,10 @@ public interface Manager extends Closeable { Set recipients ) throws IOException, NotAGroupMemberException, GroupNotFoundException, GroupSendingNotAllowedException, UnregisteredRecipientException; + SendMessageResults sendPaymentNotificationMessage( + byte[] receipt, String note, RecipientIdentifier.Single recipient + ) throws IOException; + SendMessageResults sendEndSessionMessage(Set recipients) throws IOException; void deleteRecipient(RecipientIdentifier.Single recipient); @@ -196,12 +155,12 @@ public interface Manager extends Closeable { RecipientIdentifier.Single recipient, String name ) throws NotMasterDeviceException, IOException, UnregisteredRecipientException; - void setContactBlocked( - RecipientIdentifier.Single recipient, boolean blocked + void setContactsBlocked( + Collection recipient, boolean blocked ) throws NotMasterDeviceException, IOException, UnregisteredRecipientException; - void setGroupBlocked( - GroupId groupId, boolean blocked + void setGroupsBlocked( + Collection groupId, boolean blocked ) throws GroupNotFoundException, IOException, NotMasterDeviceException; /** @@ -259,7 +218,12 @@ public interface Manager extends Closeable { void sendContacts() throws IOException; - List> getContacts(); + List getRecipients( + boolean onlyContacts, + Optional blocked, + Collection address, + Optional name + ); String getContactOrProfileName(RecipientIdentifier.Single recipient); @@ -306,6 +270,8 @@ public interface Manager extends Closeable { */ boolean trustIdentityAllKeys(RecipientIdentifier.Single recipient) throws UnregisteredRecipientException; + void addAddressChangedListener(Runnable listener); + void addClosedListener(Runnable listener); @Override