From 371dc068426ec8ecb9a7f6908a24d262bca729af Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 14 Sep 2025 17:38:19 +0200 Subject: [PATCH] Handle unregistered username correctly when sending message Fixes #1824 --- graalvm-config-dir/reflect-config.json | 2 +- .../org/asamk/signal/manager/helper/RecipientHelper.java | 5 ++++- .../java/org/asamk/signal/json/JsonRecipientAddress.java | 6 ++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index 2c7e16ef..187cab9d 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -1137,7 +1137,7 @@ "allDeclaredFields":true, "queryAllDeclaredMethods":true, "queryAllDeclaredConstructors":true, - "methods":[{"name":"number","parameterTypes":[] }, {"name":"uuid","parameterTypes":[] }] + "methods":[{"name":"number","parameterTypes":[] }, {"name":"username","parameterTypes":[] }, {"name":"uuid","parameterTypes":[] }] }, { "name":"org.asamk.signal.json.JsonRemoteDelete", diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java index a73bb741..5934ae59 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java @@ -95,7 +95,10 @@ public class RecipientHelper { try { return resolveRecipientByUsernameOrLink(username, false); } catch (Exception e) { - return null; + throw new UnregisteredRecipientException(new org.asamk.signal.manager.api.RecipientAddress(null, + null, + null, + username)); } } throw new AssertionError("Unexpected RecipientIdentifier: " + recipient); diff --git a/src/main/java/org/asamk/signal/json/JsonRecipientAddress.java b/src/main/java/org/asamk/signal/json/JsonRecipientAddress.java index e25385b6..0d9fc8cd 100644 --- a/src/main/java/org/asamk/signal/json/JsonRecipientAddress.java +++ b/src/main/java/org/asamk/signal/json/JsonRecipientAddress.java @@ -4,9 +4,11 @@ import org.asamk.signal.manager.api.RecipientAddress; import java.util.UUID; -public record JsonRecipientAddress(String uuid, String number) { +public record JsonRecipientAddress(String uuid, String number, String username) { public static JsonRecipientAddress from(RecipientAddress address) { - return new JsonRecipientAddress(address.uuid().map(UUID::toString).orElse(null), address.number().orElse(null)); + return new JsonRecipientAddress(address.uuid().map(UUID::toString).orElse(null), + address.number().orElse(null), + address.username().orElse(null)); } }