diff options
author | stefan-niedermann <info@niedermann.it> | 2019-12-07 01:23:11 +0300 |
---|---|---|
committer | stefan-niedermann <info@niedermann.it> | 2019-12-07 01:23:11 +0300 |
commit | 2df41bf4a1f3ae03998a261fdc41e271ea2da8c6 (patch) | |
tree | 29d3a05c9a81ebf6e8735d12d221349291ad54b5 /app/src/main/java | |
parent | 71db3048d730df3a8c7a7257c384aea465643d1f (diff) | |
parent | c45c69eb67bf7d866ea13841fbc5d9fb25452ac7 (diff) |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'app/src/main/java')
3 files changed, 16 insertions, 8 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 3fe1e1ed2..6e7d2c209 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 @@ -1,7 +1,6 @@ package it.niedermann.nextcloud.deck.api; -import java.io.File; import java.util.List; import io.reactivex.Observable; @@ -16,12 +15,14 @@ import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.model.full.FullStack; import it.niedermann.nextcloud.deck.model.propagation.CardUpdate; import it.niedermann.nextcloud.deck.model.propagation.Reorder; +import okhttp3.MultipartBody; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.Header; +import retrofit2.http.Multipart; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Part; @@ -123,8 +124,9 @@ public interface DeckAPI { @GET("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments") Observable<List<Attachment>> getAttachments(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Header(MODIFIED_SINCE_HEADER) String lastSync); - @POST("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments") - Observable<Void> uploadAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Part File attachment); + @POST("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachment?type=deck_file") + @Multipart + Observable<Attachment> uploadAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Part MultipartBody.Part type, @Part MultipartBody.Part attachment); @PUT("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}") Observable<Attachment> updateAttachment(@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/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index 34aa55b83..3f16206ba 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -896,10 +896,10 @@ public class SyncManager { Card card = dataBaseAdapter.getCardByLocalIdDirectly(accountId, localCardId); Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId()); Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId()); - serverAdapter.uploadAttachment(board.getId(), stack.getId(), card.getId(), new File(uri.getPath()), new IResponseCallback<Void>(dataBaseAdapter.readAccountDirectly(accountId)) { + serverAdapter.uploadAttachment(board.getId(), stack.getId(), card.getId(), new File(uri.getPath()), new IResponseCallback<Attachment>(dataBaseAdapter.readAccountDirectly(accountId)) { @Override - public void onResponse(Void response) { - DeckLog.log("uploading "+uri.getPath()+" successfull."); + public void onResponse(Attachment response) { + DeckLog.log("uploading "+uri.getPath()+" successful."); } }); }); 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 a905f2bf7..1b39d0a70 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 @@ -29,6 +29,7 @@ import it.niedermann.nextcloud.deck.api.LastSyncUtil; import it.niedermann.nextcloud.deck.api.RequestHelper; import it.niedermann.nextcloud.deck.exceptions.OfflineException; import it.niedermann.nextcloud.deck.model.AccessControl; +import it.niedermann.nextcloud.deck.model.Attachment; import it.niedermann.nextcloud.deck.model.Board; import it.niedermann.nextcloud.deck.model.Card; import it.niedermann.nextcloud.deck.model.Label; @@ -40,6 +41,9 @@ import it.niedermann.nextcloud.deck.model.ocs.Capabilities; import it.niedermann.nextcloud.deck.model.propagation.CardUpdate; import it.niedermann.nextcloud.deck.model.propagation.Reorder; import it.niedermann.nextcloud.deck.util.DateUtil; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; public class ServerAdapter { @@ -264,9 +268,11 @@ public class ServerAdapter { } // ## ATTACHMENTS - public void uploadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, File attachment, IResponseCallback<Void> responseCallback) { + public void uploadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, File attachment, IResponseCallback<Attachment> responseCallback) { ensureInternetConnection(); - RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, attachment), responseCallback); + MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", attachment.getName(), RequestBody.create(MediaType.parse("image/*"), attachment)); + MultipartBody.Part typePart = MultipartBody.Part.createFormData("type", attachment.getName(), RequestBody.create(MediaType.parse("text/plain"), "deck_file")); + RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, typePart, filePart), responseCallback); } public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, IResponseCallback<Void> responseCallback) { ensureInternetConnection(); |