X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/4f8da7819e080382ffea7754e4fa5f29177d102f..bc3bdbbf215c21084c5109209a9a4d6a6c345771:/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index f6ea4eef..608ed581 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -185,6 +185,8 @@ public class DbusSignalImpl implements Signal { m.addDeviceLink(deviceLinkUrl); } catch (IOException | InvalidDeviceLinkException e) { throw new Error.Failure(e.getClass().getSimpleName() + " Add device link failed. " + e.getMessage()); + } catch (NotPrimaryDeviceException e) { + throw new Error.Failure("This command doesn't work on linked devices."); } catch (URISyntaxException e) { throw new Error.InvalidUri(e.getClass().getSimpleName() + " Device link uri has invalid format: " @@ -1030,7 +1032,7 @@ public class DbusSignalImpl implements Signal { connection.exportObject(object); logger.debug("Exported dbus object: " + object.getObjectPath()); } catch (DBusException e) { - e.printStackTrace(); + logger.warn("Failed to export dbus object (" + object.getObjectPath() + "): " + e.getMessage()); } } @@ -1044,8 +1046,8 @@ public class DbusSignalImpl implements Signal { final var object = new DbusSignalIdentityImpl(i); exportObject(object); this.identities.add(new StructIdentity(new DBusPath(object.getObjectPath()), - emptyIfNull(i.recipient().getIdentifier()), - i.recipient().getLegacyIdentifier())); + i.recipient().uuid().map(UUID::toString).orElse(""), + i.recipient().number().orElse(""))); }); } @@ -1063,11 +1065,12 @@ public class DbusSignalImpl implements Signal { @Override public DBusPath getIdentity(String number) throws Error.Failure { - - final var found = identities.stream().filter(identity -> identity.getName().equals(number)).findFirst(); + final var found = identities.stream() + .filter(identity -> identity.getNumber().equals(number) || identity.getUuid().equals(number)) + .findFirst(); if (found.isEmpty()) { - throw new Error.Failure("Identity for " + number + " unkown"); + throw new Error.Failure("Identity for " + number + " unknown"); } return found.get().getObjectPath(); } @@ -1088,7 +1091,7 @@ public class DbusSignalImpl implements Signal { List.of(new DbusProperty<>("Number", () -> identity.recipient().number().orElse("")), new DbusProperty<>("Uuid", () -> identity.recipient().uuid().map(UUID::toString).orElse("")), - new DbusProperty<>("Fingerprint", () -> identity.getFingerprint()), + new DbusProperty<>("Fingerprint", identity::getFingerprint), new DbusProperty<>("SafetyNumber", identity::safetyNumber), new DbusProperty<>("ScannableSafetyNumber", identity::scannableSafetyNumber), new DbusProperty<>("TrustLevel", identity::trustLevel), @@ -1097,7 +1100,8 @@ public class DbusSignalImpl implements Signal { @Override public String getObjectPath() { - return getIdentityObjectPath(objectPath, identity.recipient().getLegacyIdentifier()); + return getIdentityObjectPath(objectPath, + identity.recipient().getLegacyIdentifier() + "_" + identity.recipient().getIdentifier()); } @Override @@ -1108,6 +1112,7 @@ public class DbusSignalImpl implements Signal { } catch (UnregisteredRecipientException e) { throw new Error.Failure("The user " + e.getSender().getIdentifier() + " is not registered."); } + updateIdentities(); } @Override @@ -1134,6 +1139,7 @@ public class DbusSignalImpl implements Signal { } catch (UnregisteredRecipientException e) { throw new Error.Failure("The user " + e.getSender().getIdentifier() + " is not registered."); } + updateIdentities(); } } @@ -1181,8 +1187,7 @@ public class DbusSignalImpl implements Signal { public class DbusSignalConfigurationImpl extends DbusProperties implements Signal.Configuration { - public DbusSignalConfigurationImpl( - ) { + public DbusSignalConfigurationImpl() { super.addPropertiesHandler(new DbusInterfacePropertiesHandler("org.asamk.Signal.Configuration", List.of(new DbusProperty<>("ReadReceipts", this::getReadReceipts, this::setReadReceipts), new DbusProperty<>("UnidentifiedDeliveryIndicators",