diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/ui')
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/BlockContactDialog.java | 8 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/ui/BlocklistActivity.java | 20 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java index 4f768b009..562bf2efa 100644 --- a/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java +++ b/src/main/java/de/pixart/messenger/ui/BlockContactDialog.java @@ -25,14 +25,18 @@ public final class BlockContactDialog { final String value; @StringRes int res; - if (blockable.getJid().getLocal() == null || blockable.getAccount().isBlocked(Jid.ofDomain(blockable.getJid().getDomain()))) { + if (blockable.getJid().isFullJid()) { + builder.setTitle(isBlocked ? R.string.action_unblock_participant : R.string.action_block_participant); + value = blockable.getJid().toEscapedString(); + res = isBlocked ? R.string.unblock_contact_text : R.string.block_contact_text; + } else if (blockable.getJid().getLocal() == null || blockable.getAccount().isBlocked(Jid.ofDomain(blockable.getJid().getDomain()))) { builder.setTitle(isBlocked ? R.string.action_unblock_domain : R.string.action_block_domain); value = Jid.ofDomain(blockable.getJid().getDomain()).toString(); res = isBlocked ? R.string.unblock_domain_text : R.string.block_domain_text; } else { int resBlockAction = blockable instanceof Conversation && ((Conversation) blockable).isWithStranger() ? R.string.block_stranger : R.string.action_block_contact; builder.setTitle(isBlocked ? R.string.action_unblock_contact : resBlockAction); - value = blockable.getJid().asBareJid().toString(); + value = blockable.getJid().asBareJid().toEscapedString(); res = isBlocked ? R.string.unblock_contact_text : R.string.block_contact_text; } binding.text.setText(JidDialog.style(xmppActivity, res, value)); diff --git a/src/main/java/de/pixart/messenger/ui/BlocklistActivity.java b/src/main/java/de/pixart/messenger/ui/BlocklistActivity.java index 49422583d..2927fe3e3 100644 --- a/src/main/java/de/pixart/messenger/ui/BlocklistActivity.java +++ b/src/main/java/de/pixart/messenger/ui/BlocklistActivity.java @@ -10,7 +10,10 @@ import java.util.Collections; import de.pixart.messenger.R; import de.pixart.messenger.entities.Account; +import de.pixart.messenger.entities.Blockable; import de.pixart.messenger.entities.Contact; +import de.pixart.messenger.entities.ListItem; +import de.pixart.messenger.entities.RawBlockable; import de.pixart.messenger.ui.interfaces.OnBackendConnected; import de.pixart.messenger.xmpp.OnUpdateBlocklist; import rocks.xmpp.addr.Jid; @@ -22,7 +25,7 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); getListView().setOnItemLongClickListener((parent, view, position, id) -> { - BlockContactDialog.show(BlocklistActivity.this, (Contact) getListItems().get(position)); + BlockContactDialog.show(BlocklistActivity.this, (Blockable) getListItems().get(position)); return true; }); this.binding.fab.show(); @@ -49,9 +52,14 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem getListItems().clear(); if (account != null) { for (final Jid jid : account.getBlocklist()) { - final Contact contact = account.getRoster().getContact(jid); - if (contact.match(this, needle) && contact.isBlocked()) { - getListItems().add(contact); + ListItem item; + if (jid.isFullJid()) { + item = new RawBlockable(account, jid); + } else { + item = account.getRoster().getContact(jid); + } + if (item.match(this, needle)) { + getListItems().add(item); } } Collections.sort(getListItems()); @@ -78,8 +86,8 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem ); dialog.setOnEnterJidDialogPositiveListener((accountJid, contactJid) -> { - Contact contact = account.getRoster().getContact(contactJid); - if (xmppConnectionService.sendBlockRequest(contact, false)) { + Blockable blockable = new RawBlockable(account, contactJid); + if (xmppConnectionService.sendBlockRequest(blockable, false)) { Toast.makeText(BlocklistActivity.this, R.string.corresponding_conversations_closed, Toast.LENGTH_SHORT).show(); } return true; |