diff options
author | Stefan Niedermann <info@niedermann.it> | 2024-01-22 10:08:36 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2024-01-22 10:08:43 +0300 |
commit | 82e2b25e15a530b4eb93bb074a4838b355a16969 (patch) | |
tree | d118667bbe7a77ad9c7ee2ea1f90a7ed41e9f591 /app | |
parent | d0198d39d002a1fe20852ccf6a37a6b3772f99b2 (diff) |
fix(attachments): Allow to delete "file" attachments
Refs: #871
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app')
5 files changed, 12 insertions, 14 deletions
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<Version> { return isGreaterOrEqualTo(VERSION_1_3_0); } + public boolean supportsDeletingFileAttachments() { + return isGreaterOrEqualTo(VERSION_1_12_2); + } + /** * Cards started to have an additional property called <a href="https://github.com/nextcloud/deck/pull/4137"><code>done</code></a> with version <a href="https://github.com/nextcloud/deck/releases/tag/v1.12.0">{@link #VERSION_1_12_0}</a> of the Deck server app. * However, there was an <a href="https://github.com/nextcloud/deck/issues/534#issuecomment-1892061055">issue that would have required to call a second endpoint when marking a card as <code>undone</code></a> which was <a href="https://github.com/nextcloud/deck/pull/5491">fixed</a> 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<EmptyResponse> responseCallback) { + public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, @NonNull Attachment attachment, @NonNull ResponseCallback<EmptyResponse> 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<Attachment> 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<Attachment> 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<EmptyResponse> deleteAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); + Observable<EmptyResponse> 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<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/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<Attachment> @Override public void deleteOnServer(ServerAdapter serverAdapter, long accountId, ResponseCallback<EmptyResponse> 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 { |