diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java index 7b3a35ab3a70a12d1b708bc6322d99c27fb05974..0f6400ec0ec58aa501215dd5624cafc3961aff9b 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java @@ -28,6 +28,7 @@ import eu.siacs.conversations.ui.util.Attachment; import eu.siacs.conversations.ui.util.ViewUtil; import eu.siacs.conversations.worker.ExportBackupWorker; +import java.io.File; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; @@ -174,6 +175,21 @@ public class MediaAdapter extends RecyclerView.Adapter ViewUtil.view(activity, attachment)); + holder.binding.getRoot().setOnCreateContextMenuListener((menu, v, menuInfo) -> { + final var path = activity.xmppConnectionService.getFileBackend().getOriginalPath(attachment.getUri()); + if (path == null) return; + final var file = new File(path); + if (!file.canWrite()) return; + + menu.add("Delete File").setOnMenuItemClickListener((x) -> { + if (file.delete()) { + activity.xmppConnectionService.evictPreview(file); + attachments.remove(attachment); + notifyDataSetChanged(); + } + return true; + }); + }); } public void setAttachments(final List attachments) {