Change summary
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 44
1 file changed, 23 insertions(+), 21 deletions(-)
Detailed changes
@@ -2503,28 +2503,30 @@ public class ConversationFragment extends XmppFragment
.getNotificationService()
.setOpenConversation(this.conversation);
- conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout);
- commandAdapter = new CommandAdapter((XmppActivity) getActivity());
- binding.commandsView.setAdapter(commandAdapter);
- binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {
- conversation.startCommand(commandAdapter.getItem(position), activity.xmppConnectionService);
- });
- Jid commandJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS);
- if (commandJid != null) {
- binding.tabLayout.setVisibility(View.VISIBLE);
- activity.xmppConnectionService.fetchCommands(conversation.getAccount(), commandJid, (a, iq) -> {
- if (iq.getType() == IqPacket.TYPE.RESULT) {
- activity.runOnUiThread(() -> {
- for (Element child : iq.query().getChildren()) {
- if (!"item".equals(child.getName()) || !Namespace.DISCO_ITEMS.equals(child.getNamespace())) continue;
- commandAdapter.add(child);
- }
- });
- } else {
- binding.tabLayout.setVisibility(View.GONE);
- binding.conversationViewPager.setCurrentItem(0);
- }
+ if (commandAdapter == null) {
+ conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout);
+ commandAdapter = new CommandAdapter((XmppActivity) getActivity());
+ binding.commandsView.setAdapter(commandAdapter);
+ binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {
+ conversation.startCommand(commandAdapter.getItem(position), activity.xmppConnectionService);
});
+ Jid commandJid = conversation.getContact().resourceWhichSupport(Namespace.COMMANDS);
+ if (commandJid != null) {
+ binding.tabLayout.setVisibility(View.VISIBLE);
+ activity.xmppConnectionService.fetchCommands(conversation.getAccount(), commandJid, (a, iq) -> {
+ if (iq.getType() == IqPacket.TYPE.RESULT) {
+ activity.runOnUiThread(() -> {
+ for (Element child : iq.query().getChildren()) {
+ if (!"item".equals(child.getName()) || !Namespace.DISCO_ITEMS.equals(child.getNamespace())) continue;
+ commandAdapter.add(child);
+ }
+ });
+ } else {
+ binding.tabLayout.setVisibility(View.GONE);
+ binding.conversationViewPager.setCurrentItem(0);
+ }
+ });
+ }
}
return true;