diff options
author | Stefan Niedermann <info@niedermann.it> | 2024-01-20 22:02:39 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2024-01-20 22:02:39 +0300 |
commit | fb238e92e487e15d18aa3d742d7701a8f1de2c6d (patch) | |
tree | 1815032d365d145079ce3efcb1f87c1339b929ea | |
parent | c11ea1be86066fb878d06d8b246ee9d5f467f4ec (diff) |
refactor: Migrate RequestHelper from static methods to regular object
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/remote/adapters/ServerAdapter.java | 133 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java | 34 |
2 files changed, 75 insertions, 92 deletions
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 c33aaf5fa..261e03263 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 @@ -16,7 +16,6 @@ import java.io.File; import java.util.List; import it.niedermann.nextcloud.deck.R; -import it.niedermann.nextcloud.deck.exceptions.OfflineException; import it.niedermann.nextcloud.deck.model.AccessControl; import it.niedermann.nextcloud.deck.model.Account; import it.niedermann.nextcloud.deck.model.Attachment; @@ -53,6 +52,7 @@ public class ServerAdapter { private final String prefKeyEtags; private final SharedPreferences sharedPreferences; private final ApiProvider provider; + private final RequestHelper requestHelper; public ServerAdapter(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount, @@ -63,10 +63,18 @@ public class ServerAdapter { public ServerAdapter(@NonNull Context context, @NonNull ApiProvider apiProvider, @NonNull ConnectivityUtil connectivityUtil) { + this(context, apiProvider, connectivityUtil, new RequestHelper(apiProvider, connectivityUtil)); + } + + public ServerAdapter(@NonNull Context context, + @NonNull ApiProvider apiProvider, + @NonNull ConnectivityUtil connectivityUtil, + @NonNull RequestHelper requestHelper) { this.prefKeyEtags = context.getResources().getString(R.string.pref_key_etags); this.sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); this.connectivityUtil = connectivityUtil; this.provider = apiProvider; + this.requestHelper = requestHelper; } @Deprecated() @@ -74,13 +82,6 @@ public class ServerAdapter { return connectivityUtil.hasInternetConnection(); } - public void ensureInternetConnection() { - final boolean isConnected = connectivityUtil.hasInternetConnection(); - if (!isConnected) { - throw new OfflineException(); - } - } - // TODO what is this? private String getLastSyncDateFormatted(long accountId) { return null; @@ -94,7 +95,7 @@ public class ServerAdapter { } public void getBoards(@NonNull ResponseCallback<List<FullBoard>> responseCallback) { - RequestHelper.request(provider, () -> isEtagsEnabled() + this.requestHelper.request(() -> isEtagsEnabled() ? provider.getDeckAPI().getBoards(true, getLastSyncDateFormatted(responseCallback.getAccount().getId()), responseCallback.getAccount().getBoardsEtag()) : provider.getDeckAPI().getBoards(true, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback); } @@ -104,95 +105,77 @@ public class ServerAdapter { } public void getCapabilities(String eTag, @NonNull ResponseCallback<Capabilities> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().getCapabilities(eTag), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().getCapabilities(eTag), responseCallback); } public void getProjectsForCard(long remoteCardId, @NonNull ResponseCallback<OcsProjectList> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().getProjectsForCard(remoteCardId), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().getProjectsForCard(remoteCardId), responseCallback); } public void searchUser(String searchTerm, @NonNull ResponseCallback<OcsUserList> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().searchUser(searchTerm), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().searchUser(searchTerm), responseCallback); } public void getSingleUserData(String userUid, @NonNull ResponseCallback<OcsUser> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().getSingleUserData(userUid), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().getSingleUserData(userUid), responseCallback); } public void searchGroupMembers(String groupUID, @NonNull ResponseCallback<GroupMemberUIDs> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().searchGroupMembers(groupUID), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().searchGroupMembers(groupUID), responseCallback); } public void getActivitiesForCard(long cardId, @NonNull ResponseCallback<List<Activity>> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().getActivitiesForCard(cardId), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().getActivitiesForCard(cardId), responseCallback); } public void createBoard(Board board, @NonNull ResponseCallback<FullBoard> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().createBoard(board), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().createBoard(board), responseCallback); } public void deleteBoard(Board board, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteBoard(board.getId()), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteBoard(board.getId()), responseCallback); } public void updateBoard(Board board, @NonNull ResponseCallback<FullBoard> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateBoard(board.getId(), board), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateBoard(board.getId(), board), responseCallback); } public void createAccessControl(long remoteBoardId, AccessControl acl, @NonNull ResponseCallback<AccessControl> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().createAccessControl(remoteBoardId, acl), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().createAccessControl(remoteBoardId, acl), responseCallback); } public void updateAccessControl(long remoteBoardId, AccessControl acl, @NonNull ResponseCallback<AccessControl> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateAccessControl(remoteBoardId, acl.getId(), acl), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateAccessControl(remoteBoardId, acl.getId(), acl), responseCallback); } public void deleteAccessControl(long remoteBoardId, AccessControl acl, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAccessControl(remoteBoardId, acl.getId(), acl), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteAccessControl(remoteBoardId, acl.getId(), acl), responseCallback); } public void getStacks(long boardId, @NonNull ResponseCallback<List<FullStack>> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().getStacks(boardId, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().getStacks(boardId, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback); } public void getStack(long boardId, long stackId, @NonNull ResponseCallback<FullStack> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().getStack(boardId, stackId, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().getStack(boardId, stackId, getLastSyncDateFormatted(responseCallback.getAccount().getId())), responseCallback); } public void createStack(Board board, Stack stack, @NonNull ResponseCallback<FullStack> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().createStack(board.getId(), stack), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().createStack(board.getId(), stack), responseCallback); } public void deleteStack(Board board, Stack stack, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteStack(board.getId(), stack.getId()), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteStack(board.getId(), stack.getId()), responseCallback); } public void updateStack(Board board, Stack stack, @NonNull ResponseCallback<FullStack> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateStack(board.getId(), stack.getId(), stack), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateStack(board.getId(), stack.getId(), stack), responseCallback); } public void getCard(long boardId, long stackId, long cardId, @NonNull ResponseCallback<FullCard> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> { + this.requestHelper.request(() -> { final Account account = responseCallback.getAccount(); if (account.getServerDeckVersionAsObject().supportsFileAttachments()) { return provider.getDeckAPI().getCard_1_1(boardId, stackId, cardId, getLastSyncDateFormatted(responseCallback.getAccount().getId())); @@ -202,75 +185,63 @@ public class ServerAdapter { } public void createCard(long boardId, long stackId, Card card, @NonNull ResponseCallback<FullCard> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().createCard(boardId, stackId, card), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().createCard(boardId, stackId, card), responseCallback); } public void deleteCard(long boardId, long stackId, Card card, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteCard(boardId, stackId, card.getId()), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteCard(boardId, stackId, card.getId()), responseCallback); } public void updateCard(long boardId, long stackId, CardUpdate card, @NonNull ResponseCallback<FullCard> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateCard(boardId, stackId, card.getId(), card), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateCard(boardId, stackId, card.getId(), card), responseCallback); } public void assignUserToCard(long boardId, long stackId, long cardId, String userUID, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().assignUserToCard(boardId, stackId, cardId, userUID), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().assignUserToCard(boardId, stackId, cardId, userUID), responseCallback); } public void unassignUserFromCard(long boardId, long stackId, long cardId, String userUID, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().unassignUserFromCard(boardId, stackId, cardId, userUID), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().unassignUserFromCard(boardId, stackId, cardId, userUID), responseCallback); } public void assignLabelToCard(long boardId, long stackId, long cardId, long labelId, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().assignLabelToCard(boardId, stackId, cardId, labelId), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().assignLabelToCard(boardId, stackId, cardId, labelId), responseCallback); } public void unassignLabelFromCard(long boardId, long stackId, long cardId, long labelId, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().unassignLabelFromCard(boardId, stackId, cardId, labelId), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().unassignLabelFromCard(boardId, stackId, cardId, labelId), responseCallback); } // Labels public void createLabel(long boardId, Label label, @NonNull ResponseCallback<Label> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().createLabel(boardId, label), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().createLabel(boardId, label), responseCallback); } public void deleteLabel(long boardId, Label label, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteLabel(boardId, label.getId()), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteLabel(boardId, label.getId()), responseCallback); } public void updateLabel(long boardId, Label label, @NonNull ResponseCallback<Label> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateLabel(boardId, label.getId(), label), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateLabel(boardId, label.getId(), label), responseCallback); } public void reorder(long boardId, long currentStackId, long cardId, long newStackId, int newPosition, @NonNull ResponseCallback<List<FullCard>> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().moveCard(boardId, currentStackId, cardId, new Reorder(newPosition, (int) newStackId)), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().moveCard(boardId, currentStackId, cardId, new Reorder(newPosition, (int) newStackId)), responseCallback); } // Attachments public void uploadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, File attachment, @NonNull ResponseCallback<Attachment> responseCallback) { - ensureInternetConnection(); final Account account = responseCallback.getAccount(); final String type = account.getServerDeckVersionAsObject().supportsFileAttachments() ? EAttachmentType.FILE.getValue() : EAttachmentType.DECK_FILE.getValue(); final MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", attachment.getName(), RequestBody.create(MediaType.parse(getMimeType(attachment)), attachment)); final MultipartBody.Part typePart = MultipartBody.Part.createFormData("type", null, RequestBody.create(MediaType.parse(TEXT_PLAIN), type)); - RequestHelper.request(provider, () -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, typePart, filePart), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, typePart, filePart), responseCallback); } @NonNull @@ -288,48 +259,40 @@ public class ServerAdapter { } public void updateAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, String contentType, Uri attachmentUri, @NonNull ResponseCallback<Attachment> responseCallback) { - ensureInternetConnection(); final File attachment = new File(attachmentUri.getPath()); final String type = responseCallback.getAccount().getServerDeckVersionAsObject().supportsFileAttachments() ? EAttachmentType.FILE.getValue() : EAttachmentType.DECK_FILE.getValue(); final MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", attachment.getName(), RequestBody.create(MediaType.parse(contentType), attachment)); final MultipartBody.Part typePart = MultipartBody.Part.createFormData("type", attachment.getName(), RequestBody.create(MediaType.parse(TEXT_PLAIN), type)); - RequestHelper.request(provider, () -> provider.getDeckAPI().updateAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId, typePart, filePart), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().updateAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId, typePart, filePart), responseCallback); } public void downloadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, @NonNull ResponseCallback<ResponseBody> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().downloadAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().downloadAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); } public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); } public void restoreAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, @NonNull ResponseCallback<Attachment> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getDeckAPI().restoreAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + this.requestHelper.request(() -> provider.getDeckAPI().restoreAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); } public void getCommentsForRemoteCardId(Long remoteCardId, @NonNull ResponseCallback<OcsComment> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().getCommentsForCard(remoteCardId), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().getCommentsForCard(remoteCardId), responseCallback); } public void createCommentForCard(DeckComment comment, @NonNull ResponseCallback<OcsComment> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().createCommentForCard(comment.getObjectId(), comment), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().createCommentForCard(comment.getObjectId(), comment), responseCallback); } public void updateCommentForCard(DeckComment comment, @NonNull ResponseCallback<OcsComment> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().updateCommentForCard(comment.getObjectId(), comment.getId(), comment), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().updateCommentForCard(comment.getObjectId(), comment.getId(), comment), responseCallback); } public void deleteCommentForCard(DeckComment comment, @NonNull ResponseCallback<Void> responseCallback) { - ensureInternetConnection(); - RequestHelper.request(provider, () -> provider.getNextcloudAPI().deleteCommentForCard(comment.getObjectId(), comment.getId()), responseCallback); + this.requestHelper.request(() -> provider.getNextcloudAPI().deleteCommentForCard(comment.getObjectId(), comment.getId()), responseCallback); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java index 4106c73a3..d9aeee656 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java @@ -9,6 +9,8 @@ import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; import java.util.function.Supplier; import it.niedermann.nextcloud.deck.DeckLog; +import it.niedermann.nextcloud.deck.exceptions.OfflineException; +import it.niedermann.nextcloud.deck.remote.helpers.util.ConnectivityUtil; import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; import okhttp3.Request; import okhttp3.ResponseBody; @@ -18,14 +20,32 @@ import retrofit2.Response; public class RequestHelper { - public static <T> void request(@NonNull final ApiProvider provider, - @NonNull final Supplier<Call<T>> callProvider, - @NonNull final ResponseCallback<T> callback) { - if (provider.getDeckAPI() == null) { - provider.initSsoApi(callback::onError); + @NonNull + private final ApiProvider apiProvider; + + @NonNull + private final ConnectivityUtil connectivityUtil; + + public RequestHelper( + @NonNull ApiProvider apiProvider, + @NonNull ConnectivityUtil connectivityUtil + ) { + this.apiProvider = apiProvider; + this.connectivityUtil = connectivityUtil; + } + + public <T> void request(@NonNull final Supplier<Call<T>> callProvider, + @NonNull final ResponseCallback<T> callback) { + + if (!connectivityUtil.hasInternetConnection()) { + throw new OfflineException(); + } + + if (this.apiProvider.getDeckAPI() == null) { + this.apiProvider.initSsoApi(callback::onError); } - final ResponseConsumer<T> cb = new ResponseConsumer<>(provider.getContext(), callback); + final var cb = new ResponseConsumer<>(this.apiProvider.getContext(), callback); ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit(() -> callProvider.get().enqueue(cb)); } @@ -59,7 +79,7 @@ public class RequestHelper { String responseBody = "<empty>"; try (ResponseBody body = response.errorBody()) { if (body != null) { - responseBody = response.errorBody().string(); + responseBody = body.string(); } } catch (Exception e) { responseBody = "<unable to build response body: " + e.getMessage() + ">"; |