From: AsamK Date: Tue, 16 May 2023 21:09:07 +0000 (+0200) Subject: Fix deleting old unregistered recipient X-Git-Tag: v0.11.11~17 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/760934d5a511afd7f0d6b728e70f5758058f0521?ds=inline Fix deleting old unregistered recipient Fixes #1242 --- 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 2a3866a5..f614d7ec 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 @@ -107,7 +107,11 @@ public class RecipientHelper { try { return Optional.of(resolveRecipient(recipient)); } catch (UnregisteredRecipientException e) { - return Optional.empty(); + if (recipient instanceof RecipientIdentifier.Number r) { + return account.getRecipientStore().resolveRecipientByNumberOptional(r.number()); + } else { + return Optional.empty(); + } } } diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java index d3b949f8..b8a4b39b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java @@ -215,6 +215,16 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re return byNumber.get().id(); } + public Optional resolveRecipientByNumberOptional(final String number) { + final Optional byNumber; + try (final var connection = database.getConnection()) { + byNumber = findByNumber(connection, number); + } catch (SQLException e) { + throw new RuntimeException("Failed read from recipient store", e); + } + return byNumber.map(RecipientWithAddress::id); + } + public RecipientId resolveRecipientByUsername( final String username, Supplier serviceIdSupplier ) throws UnregisteredRecipientException {