diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index e051ff51cd996c9452e3a4898b7d884224dde6a9..856658f9f741fc7930128935759db5a2e01bcb32 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1505,6 +1505,11 @@ public class ConversationFragment extends XmppFragment UIHelper.getFileDescriptionString(activity, m))); } } + + if (m.getFileParams() != null && !m.getFileParams().getThumbnails().isEmpty()) { + // We might be showing a thumbnail worth blocking + blockMedia.setVisible(true); + } if (showError) { showErrorMessage.setVisible(true); } @@ -1577,15 +1582,28 @@ public class ConversationFragment extends XmppFragment .setTitle(R.string.block_media) .setMessage("Do you really want to block this media in all messages?") .setPositiveButton(R.string.yes, (dialog, whichButton) -> { + List thumbs = selectedMessage.getFileParams() != null ? selectedMessage.getFileParams().getThumbnails() : null; + if (thumbs != null && !thumbs.isEmpty()) { + for (Element thumb : thumbs) { + Uri uri = Uri.parse(thumb.getAttribute("uri")); + if (uri.getScheme().equals("cid")) { + Cid cid = BobTransfer.cid(uri); + if (cid == null) continue; + DownloadableFile f = activity.xmppConnectionService.getFileForCid(cid); + activity.xmppConnectionService.blockMedia(f); + activity.xmppConnectionService.evictPreview(f); + f.delete(); + } + } + } File f = activity.xmppConnectionService.getFileBackend().getFile(selectedMessage); activity.xmppConnectionService.blockMedia(f); - if (activity.xmppConnectionService.getFileBackend().deleteFile(selectedMessage)) { - selectedMessage.setDeleted(true); - activity.xmppConnectionService.evictPreview(f); - activity.xmppConnectionService.updateMessage(selectedMessage, false); - activity.onConversationsListItemUpdated(); - refresh(); - } + activity.xmppConnectionService.getFileBackend().deleteFile(selectedMessage); + selectedMessage.setDeleted(true); + activity.xmppConnectionService.evictPreview(f); + activity.xmppConnectionService.updateMessage(selectedMessage, false); + activity.onConversationsListItemUpdated(); + refresh(); }) .setNegativeButton(R.string.no, null).show(); return true;