From: AsamK Date: Thu, 23 Jan 2025 16:11:33 +0000 (+0100) Subject: Extend updateContact command with nick given/family name and note X-Git-Tag: v0.13.13~19 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/5e16123632d839bc0fa0648d8fabbec48c03a7f9?ds=sidebyside Extend updateContact command with nick given/family name and note --- 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 85644f61..bdb3dbc9 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -237,9 +237,12 @@ public interface Manager extends Closeable { void deleteContact(RecipientIdentifier.Single recipient); void setContactName( - RecipientIdentifier.Single recipient, - String givenName, - final String familyName + final RecipientIdentifier.Single recipient, + final String givenName, + final String familyName, + final String nickGivenName, + final String nickFamilyName, + final String note ) throws NotPrimaryDeviceException, UnregisteredRecipientException; void setContactsBlocked( diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java index fafb9ffe..8461fbe0 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java @@ -17,7 +17,14 @@ public class ContactHelper { return sourceContact != null && sourceContact.isBlocked(); } - public void setContactName(final RecipientId recipientId, final String givenName, final String familyName) { + public void setContactName( + final RecipientId recipientId, + final String givenName, + final String familyName, + final String nickGivenName, + final String nickFamilyName, + final String note + ) { var contact = account.getContactStore().getContact(recipientId); final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact); builder.withIsHidden(false); @@ -27,6 +34,15 @@ public class ContactHelper { if (familyName != null) { builder.withFamilyName(familyName); } + if (nickGivenName != null) { + builder.withNickNameGivenName(nickGivenName); + } + if (nickFamilyName != null) { + builder.withNickNameFamilyName(nickFamilyName); + } + if (note != null) { + builder.withNote(note); + } account.getContactStore().storeContact(recipientId, builder.build()); } diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java index 4315f50b..403b9adf 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java @@ -1049,15 +1049,23 @@ public class ManagerImpl implements Manager { @Override public void setContactName( - RecipientIdentifier.Single recipient, - String givenName, - final String familyName + final RecipientIdentifier.Single recipient, + final String givenName, + final String familyName, + final String nickGivenName, + final String nickFamilyName, + final String note ) throws NotPrimaryDeviceException, UnregisteredRecipientException { if (!account.isPrimaryDevice()) { throw new NotPrimaryDeviceException(); } context.getContactHelper() - .setContactName(context.getRecipientHelper().resolveRecipient(recipient), givenName, familyName); + .setContactName(context.getRecipientHelper().resolveRecipient(recipient), + givenName, + familyName, + nickGivenName, + nickFamilyName, + note); syncRemoteStorage(); } diff --git a/man/signal-cli.1.adoc b/man/signal-cli.1.adoc index 4196f991..48b821df 100644 --- a/man/signal-cli.1.adoc +++ b/man/signal-cli.1.adoc @@ -669,11 +669,20 @@ If the contact doesn't exist yet, it will be added. RECIPIENT:: Specify the recipient. -*--given-name* NAME, *--name* NAME:: -New (given) name. +*--given-name* GIVEN_NAME, *--name* NAME:: +New system given name. *--family-name* FAMILY_NAME:: -New family name. +New system family name. + +*--nick-given-name* NICK_GIVEN_NAME:: +New nick given name. + +*--nick-family-name* NICK_FAMILY_NAME:: +New nick family name. + +*--note* NOTE:: +New note. *-e*, *--expiration* EXPIRATION_SECONDS:: Set expiration time of messages (seconds). diff --git a/src/main/java/org/asamk/signal/commands/UpdateContactCommand.java b/src/main/java/org/asamk/signal/commands/UpdateContactCommand.java index 815c15da..312ac8e8 100644 --- a/src/main/java/org/asamk/signal/commands/UpdateContactCommand.java +++ b/src/main/java/org/asamk/signal/commands/UpdateContactCommand.java @@ -26,8 +26,11 @@ public class UpdateContactCommand implements JsonRpcLocalCommand { subparser.help("Update the details of a given contact"); subparser.addArgument("recipient").help("Contact number"); subparser.addArgument("-n", "--name").help("New contact name"); - subparser.addArgument("--given-name").help("New contact given name"); - subparser.addArgument("--family-name").help("New contact family name"); + subparser.addArgument("--given-name").help("New system given name"); + subparser.addArgument("--family-name").help("New system family name"); + subparser.addArgument("--nick-given-name").help("New nick given name"); + subparser.addArgument("--nick-family-name").help("New nick family name"); + subparser.addArgument("--note").help("New note"); subparser.addArgument("-e", "--expiration").type(int.class).help("Set expiration time of messages (seconds)"); } @@ -54,8 +57,15 @@ public class UpdateContactCommand implements JsonRpcLocalCommand { familyName = ""; } } - if (givenName != null || familyName != null) { - m.setContactName(recipient, givenName, familyName); + var nickGivenName = ns.getString("nick-given-name"); + var nickFamilyName = ns.getString("nick-family-name"); + var note = ns.getString("note"); + if (givenName != null + || familyName != null + || nickGivenName != null + || nickFamilyName != null + || note != null) { + m.setContactName(recipient, givenName, familyName, nickGivenName, nickFamilyName, note); } } catch (IOException e) { throw new IOErrorException("Update contact error: " + e.getMessage(), e); diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index 159407e1..5658d0d3 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -516,7 +516,10 @@ public class DbusManagerImpl implements Manager { public void setContactName( final RecipientIdentifier.Single recipient, final String givenName, - final String familyName + final String familyName, + final String nickGivenName, + final String nickFamilyName, + final String note ) throws NotPrimaryDeviceException { signal.setContactName(recipient.getIdentifier(), givenName); } diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index bbae26b5..ac77df99 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -531,7 +531,7 @@ public class DbusSignalImpl implements Signal, AutoCloseable { @Override public void setContactName(final String number, final String name) { try { - m.setContactName(getSingleRecipientIdentifier(number, m.getSelfNumber()), name, ""); + m.setContactName(getSingleRecipientIdentifier(number, m.getSelfNumber()), name, "", null, null, null); } catch (NotPrimaryDeviceException e) { throw new Error.Failure("This command doesn't work on linked devices."); } catch (UnregisteredRecipientException e) {