diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-03-20 21:49:27 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-03-20 21:49:27 +0300 |
commit | 7bdf0df83e32cb566ac3a250419b689f5f9ebe55 (patch) | |
tree | 9cc589e4878c724bd2f7058888e9fe76e7c1d294 | |
parent | 0df58bfd1b8d81943e66e8f077701bbaef7ae236 (diff) |
#871 Allow to delete "file" attachments
Signed-off-by: Stefan Niedermann <info@niedermann.it>
4 files changed, 16 insertions, 14 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java index 988753d48..fe2e67366 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java @@ -159,6 +159,9 @@ public interface DeckAPI { @DELETE("v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}") Observable<Void> deleteAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); + @DELETE("v1.1/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/file:{attachmentId}") + Observable<Void> deleteFileAttachment(@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<Attachment> 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/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java index a1051b98c..4cd0e0edb 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java @@ -224,7 +224,7 @@ public class ServerAdapter { ensureInternetConnection(); RequestHelper.request(provider, () -> { final Account account = responseCallback.getAccount(); - if(account != null && account.getServerDeckVersionAsObject().supportsFileAttachments()) { + if (account != null && account.getServerDeckVersionAsObject().supportsFileAttachments()) { return provider.getDeckAPI().getCard_1_1(boardId, stackId, cardId, getLastSyncDateFormatted(responseCallback.getAccount().getId())); } return provider.getDeckAPI().getCard_1_0(boardId, stackId, cardId, getLastSyncDateFormatted(responseCallback.getAccount().getId())); @@ -331,9 +331,13 @@ 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, IResponseCallback<Void> responseCallback) { + public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, @NonNull Attachment attachment, IResponseCallback<Void> responseCallback) { ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + if (EAttachmentType.DECK_FILE.equals(attachment.getType())) { + RequestHelper.request(provider, () -> provider.getDeckAPI().deleteFileAttachment(remoteBoardId, remoteStackId, remoteCardId, attachment.getId()), responseCallback); + } else { + RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, attachment.getId()), responseCallback); + } } public void restoreAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, IResponseCallback<Attachment> responseCallback) { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AttachmentDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AttachmentDataProvider.java index 4a2b2c613..a215a35b1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AttachmentDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AttachmentDataProvider.java @@ -102,7 +102,7 @@ public class AttachmentDataProvider extends AbstractSyncDataProvider<Attachment> @Override public void deleteOnServer(ServerAdapter serverAdapter, long accountId, IResponseCallback<Void> 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 51087584e..b563aa673 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 @@ -17,7 +17,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.branding.BrandingUtil; import it.niedermann.nextcloud.deck.util.AttachmentUtil; @@ -38,15 +37,11 @@ public abstract class AttachmentViewHolder extends RecyclerView.ViewHolder { setNotSyncedYetStatus(!DBStatus.LOCAL_EDITED.equals(attachment.getStatusEnum()), mainColor); 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; + }); + menu.findItem(R.id.delete).setVisible(true); if (attachmentUri == null || attachment.getId() == null || cardRemoteId == null) { menu.findItem(android.R.id.copyUrl).setVisible(false); } else { |