From 82e2b25e15a530b4eb93bb074a4838b355a16969 Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Mon, 22 Jan 2024 08:08:36 +0100 Subject: fix(attachments): Allow to delete "file" attachments Refs: #871 Signed-off-by: Stefan Niedermann --- .../it/niedermann/nextcloud/deck/model/ocs/Version.java | 4 ++++ .../nextcloud/deck/remote/adapters/ServerAdapter.java | 4 ++-- .../it/niedermann/nextcloud/deck/remote/api/DeckAPI.java | 2 +- .../remote/helpers/providers/AttachmentDataProvider.java | 2 +- .../deck/ui/card/attachments/AttachmentViewHolder.java | 14 ++++---------- 5 files changed, 12 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/ocs/Version.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/ocs/Version.java index 7a6aba31d..ccb236ea6 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/model/ocs/Version.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/ocs/Version.java @@ -173,6 +173,10 @@ public class Version implements Comparable { return isGreaterOrEqualTo(VERSION_1_3_0); } + public boolean supportsDeletingFileAttachments() { + return isGreaterOrEqualTo(VERSION_1_12_2); + } + /** * Cards started to have an additional property called done with version {@link #VERSION_1_12_0} of the Deck server app. * However, there was an issue that would have required to call a second endpoint when marking a card as undone which was fixed in {@link #VERSION_1_12_2}. diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/adapters/ServerAdapter.java index ec5dc551b..cc7bedbf1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/adapters/ServerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/adapters/ServerAdapter.java @@ -305,9 +305,9 @@ public class ServerAdapter { RequestHelper.request(provider, () -> provider.getDeckAPI().downloadAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); } - public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, @NonNull ResponseCallback responseCallback) { + public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, @NonNull Attachment attachment, @NonNull ResponseCallback responseCallback) { ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAttachment(attachment.getType().getValue(), remoteBoardId, remoteStackId, remoteCardId, attachment.getId()), responseCallback); } public void restoreAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, @NonNull ResponseCallback responseCallback) { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/DeckAPI.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/DeckAPI.java index 1f17d2daa..710082c5d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/DeckAPI.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/DeckAPI.java @@ -161,7 +161,7 @@ public interface DeckAPI { Observable updateAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId, @Part MultipartBody.Part type, @Part MultipartBody.Part attachment); @DELETE("v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}") - Observable deleteAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); + Observable deleteAttachment(@Query("type") String type, @Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); @PUT("v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}/restore") Observable restoreAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/AttachmentDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/AttachmentDataProvider.java index e3f84fdaf..09ad2c81b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/AttachmentDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/AttachmentDataProvider.java @@ -104,7 +104,7 @@ public class AttachmentDataProvider extends AbstractSyncDataProvider @Override public void deleteOnServer(ServerAdapter serverAdapter, long accountId, ResponseCallback callback, Attachment entity, DataBaseAdapter dataBaseAdapter) { - serverAdapter.deleteAttachment(board.getId(), stack.getId(), card.getId(), entity.getId(), callback); + serverAdapter.deleteAttachment(board.getId(), stack.getId(), card.getId(), entity, callback); } @Override diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java index 85c84dc00..dd586bd84 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/AttachmentViewHolder.java @@ -18,7 +18,6 @@ import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.Attachment; import it.niedermann.nextcloud.deck.model.enums.DBStatus; -import it.niedermann.nextcloud.deck.model.enums.EAttachmentType; import it.niedermann.nextcloud.deck.ui.theme.ThemeUtils; import it.niedermann.nextcloud.deck.util.AttachmentUtil; @@ -36,15 +35,10 @@ public abstract class AttachmentViewHolder extends RecyclerView.ViewHolder { getNotSyncedYetStatusIcon().setVisibility(synced ? View.GONE : View.VISIBLE); itemView.setOnCreateContextMenuListener((menu, v, menuInfo) -> { menuInflater.inflate(R.menu.attachment_menu, menu); - if (EAttachmentType.DECK_FILE.equals(attachment.getType())) { - menu.findItem(R.id.delete).setOnMenuItemClickListener(item -> { - DeleteAttachmentDialogFragment.newInstance(attachment).show(fragmentManager, DeleteAttachmentDialogFragment.class.getCanonicalName()); - return false; - }); - menu.findItem(R.id.delete).setVisible(true); - } else { - menu.findItem(R.id.delete).setVisible(false); - } + menu.findItem(R.id.delete).setOnMenuItemClickListener(item -> { + DeleteAttachmentDialogFragment.newInstance(attachment).show(fragmentManager, DeleteAttachmentDialogFragment.class.getCanonicalName()); + return false; + }); if (attachmentUri == null || attachment.getId() == null || cardRemoteId == null) { menu.findItem(android.R.id.copyUrl).setVisible(false); } else { -- cgit v1.2.3