import org.asamk.signal.manager.AttachmentInvalidException;
import org.asamk.signal.manager.Manager;
import org.asamk.signal.manager.NotMasterDeviceException;
+import org.asamk.signal.manager.StickerPackInvalidException;
import org.asamk.signal.manager.UntrustedIdentityException;
+import org.asamk.signal.manager.api.Device;
import org.asamk.signal.manager.api.Message;
import org.asamk.signal.manager.api.RecipientIdentifier;
import org.asamk.signal.manager.api.TypingAction;
import org.asamk.signal.util.ErrorUtils;
import org.asamk.signal.util.Util;
import org.freedesktop.dbus.exceptions.DBusExecutionException;
+import org.whispersystems.libsignal.InvalidKeyException;
import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
return objectPath;
}
+ @Override
+ public void addDevice(String uri) {
+ try {
+ m.addDeviceLink(new URI(uri));
+ } catch (IOException | InvalidKeyException e) {
+ throw new Error.Failure(e.getClass().getSimpleName() + " Add device link failed. " + e.getMessage());
+ } catch (URISyntaxException e) {
+ throw new Error.InvalidUri(e.getClass().getSimpleName()
+ + " Device link uri has invalid format: "
+ + e.getMessage());
+ }
+ }
+
+ @Override
+ public void removeDevice(int deviceId) {
+ try {
+ m.removeLinkedDevices(deviceId);
+ } catch (IOException e) {
+ throw new Error.Failure(e.getClass().getSimpleName() + ": Error while removing device: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public List<String> listDevices() {
+ List<Device> devices;
+ List<String> results = new ArrayList<String>();
+
+ try {
+ devices = m.getLinkedDevices();
+ } catch (IOException | Error.Failure e) {
+ throw new Error.Failure("Failed to get linked devices: " + e.getMessage());
+ }
+
+ return devices.stream().map(d -> d.getName() == null ? "" : d.getName()).collect(Collectors.toList());
+ }
+
+ @Override
+ public void updateDeviceName(String deviceName) {
+ try {
+ m.updateAccountAttributes(deviceName);
+ } catch (IOException | Signal.Error.Failure e) {
+ throw new Error.Failure("UpdateAccount error: " + e.getMessage());
+ }
+ }
+
@Override
public long sendMessage(final String message, final List<String> attachments, final String recipient) {
var recipients = new ArrayList<String>(1);
}
}
+ @Override
+ public void sendContacts() {
+ try {
+ m.sendContacts();
+ } catch (IOException e) {
+ throw new Error.Failure("SendContacts error: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void sendSyncRequest() {
+ try {
+ m.requestAllSyncData();
+ } catch (IOException e) {
+ throw new Error.Failure("Request sync data error: " + e.getMessage());
+ }
+ }
+
@Override
public long sendNoteToSelfMessage(
final String message, final List<String> attachments
}
}
+ @Override
+ public void setExpirationTimer(final String number, final int expiration) {
+ try {
+ m.setExpirationTimer(getSingleRecipientIdentifier(number, m.getUsername()), expiration);
+ } catch (IOException e) {
+ throw new Error.Failure(e.getMessage());
+ }
+ }
+
@Override
public void setContactBlocked(final String number, final boolean blocked) {
try {
}
}
+ @Override
+ public String uploadStickerPack(String stickerPackPath) {
+ File path = new File(stickerPackPath);
+ try {
+ return m.uploadStickerPack(path).toString();
+ } catch (IOException e) {
+ throw new Error.Failure("Upload error (maybe image size is too large):" + e.getMessage());
+ } catch (StickerPackInvalidException e) {
+ throw new Error.Failure("Invalid sticker pack: " + e.getMessage());
+ }
+ }
+
private static void checkSendMessageResult(long timestamp, SendMessageResult result) throws DBusExecutionException {
var error = ErrorUtils.getErrorMessageFromSendMessageResult(result);