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: "
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());
}
}
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("")));
});
}
@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();
}
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),
@Override
public String getObjectPath() {
- return getIdentityObjectPath(objectPath, identity.recipient().getLegacyIdentifier());
+ return getIdentityObjectPath(objectPath,
+ identity.recipient().getLegacyIdentifier() + "_" + identity.recipient().getIdentifier());
}
@Override
} catch (UnregisteredRecipientException e) {
throw new Error.Failure("The user " + e.getSender().getIdentifier() + " is not registered.");
}
+ updateIdentities();
}
@Override
} catch (UnregisteredRecipientException e) {
throw new Error.Failure("The user " + e.getSender().getIdentifier() + " is not registered.");
}
+ updateIdentities();
}
}
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",