From 417496c2eaf9dc06a1919b3e0a3ccfa5098a0c19 Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Tue, 14 Jul 2026 19:50:14 +0300 Subject: [PATCH] SPARK-2119: check if pre-approve is supported --- .../org/jivesoftware/spark/ui/RosterDialog.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/jivesoftware/spark/ui/RosterDialog.java b/core/src/main/java/org/jivesoftware/spark/ui/RosterDialog.java index 931539407..df17c8302 100644 --- a/core/src/main/java/org/jivesoftware/spark/ui/RosterDialog.java +++ b/core/src/main/java/org/jivesoftware/spark/ui/RosterDialog.java @@ -519,7 +519,7 @@ public class RosterDialog implements ActionListener { boolean isNewContact = userEntry == null || userEntry.getGroups().isEmpty(); if (isNewContact) { try { - roster.preApproveAndCreateEntry(jid, nickname, new String[]{group}); + addContactToRoster(jid, nickname, new String[]{group}, roster); return true; } catch (XMPPException | SmackException | InterruptedException e) { @@ -540,6 +540,17 @@ public class RosterDialog implements ActionListener { } } + private void addContactToRoster(BareJid contactJid, String displayName, String[] parentNames, Roster roster) throws SmackException, XMPPException.XMPPErrorException, InterruptedException { + if (roster.isSubscriptionPreApprovalSupported()) { + try { + roster.preApproveAndCreateEntry(contactJid, displayName, parentNames); + } catch (SmackException.FeatureNotSupportedException ignored) { + } + } else { + roster.createItemAndRequestSubscription(contactJid, displayName, parentNames); + } + } + public List getAccounts() { List list = new ArrayList<>(); for (Transport transport : TransportUtils.getTransports()) {