diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 7d4524600cef11543f08aa6eacc9aee5fb1844dd..89220a6c20010250456a05d6d85e979c3370ee38 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -2764,7 +2764,17 @@ public class ConversationFragment extends XmppFragment if (adapter != null && adapter.getCount() > 1) { binding.conversationViewPager.setCurrentItem(1); } - final Jid commandJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS); + final String jid = extras.getString(ConversationsActivity.EXTRA_JID); + Jid commandJid = null; + if (jid != null) { + try { + commandJid = Jid.of(jid); + } catch (final IllegalArgumentException e) { } + } + if (commandJid == null || !commandJid.isFullJid()) { + final Jid discoJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS); + if (discoJid != null) commandJid = discoJid; + } if (node != null && commandJid != null) { conversation.startCommand(commandFor(commandJid, node), activity.xmppConnectionService); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index 4ee603b615eb85f7c84d2b91bbdce88c43e4b921..a7e7685b9be70210d1b59a281b1e6ac074bdbb49 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -100,6 +100,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio public static final String POST_ACTION_RECORD_VOICE = "record_voice"; public static final String EXTRA_TYPE = "type"; public static final String EXTRA_NODE = "node"; + public static final String EXTRA_JID = "jid"; private static final List VIEW_AND_SHARE_ACTIONS = Arrays.asList( ACTION_VIEW_CONVERSATION, diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index d828101eee0ca317edf97b14bbb0794d1c55b3c4..589e39bfc4f451b3c0dd53f3ba8bf498fa92be0c 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -480,6 +480,7 @@ public abstract class XmppActivity extends ActionBarActivity { intent.putExtra(ConversationsActivity.EXTRA_CONVERSATION, xmppConnectionService.findOrCreateConversation(account, jid, false, false).getUuid()); intent.putExtra(ConversationsActivity.EXTRA_POST_INIT_ACTION, "command"); intent.putExtra(ConversationsActivity.EXTRA_NODE, node); + intent.putExtra(ConversationsActivity.EXTRA_JID, (CharSequence) jid); intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }