From bfcbee5ed19fc0d812fdb3e76481d27bc29957da Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 13:05:41 +0300 Subject: [PATCH 01/24] Cleanup: Remove unused transient level field from comment model This transient 'level' field doesn't seem to be used within FluxC or any client app that might be using the this 'CommentModel' model. FYI: There is another such definition of a transient 'level' field, which is actually still in use, but that is on the JP/WPAndroid level and via the 'ReaderComment' model. PS: Actually, JP/WPAndroid is the only client that is using this 'CommentModel' model, or 'CommentStore' for that matter. --- .../java/org/wordpress/android/fluxc/model/CommentModel.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java index e0993633f36b..12fee5bfd8a0 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java @@ -54,9 +54,6 @@ public void setId(int id) { mId = id; } - // not stored in db - denotes the hierarchical level of this comment - public transient int level = 0; - public long getRemoteCommentId() { return mRemoteCommentId; } From fa7fd2c66e1283adf7d812b3ae0e3829f7fef2b5 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 14:38:46 +0300 Subject: [PATCH 02/24] Analysis: Add missing n-a to comment model FYI: 'n-a' stands for 'nullability annotations'. PS: This 'NotNullFieldNotInitialized' warning got suppressed because a table related 'model' class can never have its fields initialized via a constructor initialization, or otherwise for that matter. --- .../android/fluxc/model/CommentModel.java | 49 ++++++++++++------- .../fluxc/model/comments/CommentsMapper.kt | 8 +-- .../fluxc/common/CommentsMapperTest.kt | 8 +-- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java index 12fee5bfd8a0..9d3eac7b1281 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/CommentModel.java @@ -1,5 +1,8 @@ package org.wordpress.android.fluxc.model; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.yarolegovich.wellsql.core.Identifiable; import com.yarolegovich.wellsql.core.annotation.Column; import com.yarolegovich.wellsql.core.annotation.PrimaryKey; @@ -11,6 +14,7 @@ import java.io.Serializable; @Table +@SuppressWarnings("NotNullFieldNotInitialized") public class CommentModel extends Payload implements Identifiable, Serializable { private static final long serialVersionUID = 3454722213760369852L; @@ -23,19 +27,19 @@ public class CommentModel extends Payload implements Identifia @Column private long mRemoteSiteId; // Comment author - @Column private String mAuthorUrl; - @Column private String mAuthorName; - @Column private String mAuthorEmail; + @Nullable @Column private String mAuthorUrl; + @Nullable @Column private String mAuthorName; + @Nullable @Column private String mAuthorEmail; @Column private long mAuthorId; - @Column private String mAuthorProfileImageUrl; + @Nullable @Column private String mAuthorProfileImageUrl; // Comment data - @Column private String mPostTitle; - @Column private String mStatus; - @Column private String mDatePublished; + @Nullable @Column private String mPostTitle; + @NonNull @Column private String mStatus; + @NonNull @Column private String mDatePublished; @Column private long mPublishedTimestamp; - @Column private String mContent; - @Column private String mUrl; + @NonNull @Column private String mContent; + @NonNull @Column private String mUrl; // Parent Comment Data @Column private boolean mHasParent; @@ -70,67 +74,75 @@ public void setRemotePostId(long remotePostId) { mRemotePostId = remotePostId; } + @Nullable public String getAuthorUrl() { return mAuthorUrl; } - public void setAuthorUrl(String authorUrl) { + public void setAuthorUrl(@Nullable String authorUrl) { this.mAuthorUrl = authorUrl; } + @Nullable public String getAuthorName() { return mAuthorName; } - public void setAuthorName(String authorName) { + public void setAuthorName(@Nullable String authorName) { this.mAuthorName = authorName; } + @Nullable public String getAuthorEmail() { return mAuthorEmail; } - public void setAuthorEmail(String authorEmail) { + public void setAuthorEmail(@Nullable String authorEmail) { this.mAuthorEmail = authorEmail; } + @Nullable public String getAuthorProfileImageUrl() { return mAuthorProfileImageUrl; } - public void setAuthorProfileImageUrl(String authorProfileImageUrl) { + public void setAuthorProfileImageUrl(@Nullable String authorProfileImageUrl) { this.mAuthorProfileImageUrl = authorProfileImageUrl; } + @Nullable public String getPostTitle() { return mPostTitle; } - public void setPostTitle(String postTitle) { + public void setPostTitle(@Nullable String postTitle) { this.mPostTitle = postTitle; } + @NonNull public String getStatus() { return mStatus; } - public void setStatus(String status) { + public void setStatus(@NonNull String status) { this.mStatus = status; } + @NonNull public String getDatePublished() { return mDatePublished; } - public void setDatePublished(String datePublished) { + public void setDatePublished(@NonNull String datePublished) { this.mDatePublished = datePublished; } + @NonNull public String getContent() { return mContent; } - public void setContent(String content) { + public void setContent(@NonNull String content) { this.mContent = content; } @@ -166,11 +178,12 @@ public void setILike(boolean iLike) { mILike = iLike; } + @NonNull public String getUrl() { return mUrl; } - public void setUrl(String url) { + public void setUrl(@NonNull String url) { mUrl = url; } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/comments/CommentsMapper.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/comments/CommentsMapper.kt index 1cf142805c44..1a1cd4b8b3f8 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/comments/CommentsMapper.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/model/comments/CommentsMapper.kt @@ -64,11 +64,11 @@ class CommentsMapper @Inject constructor( this.authorEmail = entity.authorEmail this.authorProfileImageUrl = entity.authorProfileImageUrl this.postTitle = entity.postTitle - this.status = entity.status - this.datePublished = entity.datePublished + this.status = entity.status ?: "" + this.datePublished = entity.datePublished ?: "" this.publishedTimestamp = entity.publishedTimestamp - this.content = entity.content - this.url = entity.url + this.content = entity.content ?: "" + this.url = entity.url ?: "" this.hasParent = entity.hasParent this.parentId = entity.parentId this.iLike = entity.iLike diff --git a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/common/CommentsMapperTest.kt b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/common/CommentsMapperTest.kt index 2ad7d10fecbf..af5da3ed9dfd 100644 --- a/libs/fluxc/src/test/java/org/wordpress/android/fluxc/common/CommentsMapperTest.kt +++ b/libs/fluxc/src/test/java/org/wordpress/android/fluxc/common/CommentsMapperTest.kt @@ -161,11 +161,11 @@ class CommentsMapperTest { authorEmail = entity.authorEmail authorProfileImageUrl = entity.authorProfileImageUrl postTitle = entity.postTitle - status = entity.status - datePublished = entity.datePublished + status = entity.status ?: "" + datePublished = entity.datePublished ?: "" publishedTimestamp = entity.publishedTimestamp - content = entity.content - url = entity.authorProfileImageUrl + content = entity.content ?: "" + url = entity.authorProfileImageUrl ?: "" hasParent = entity.hasParent parentId = entity.parentId iLike = entity.iLike From 56f1994e371820121b30dd8541c429d53c247c88 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:03:32 +0300 Subject: [PATCH 03/24] Analysis: Add missing n-a to comment error on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/store/CommentStore.java | 6 +++--- .../android/fluxc/utils/CommentErrorUtils.java | 16 +++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index 9db63123ff72..5c5fec82fbfa 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -192,9 +192,9 @@ public enum CommentErrorType { } public static class CommentError implements OnChangedError { - public CommentErrorType type; - public String message; - public CommentError(CommentErrorType type, @NonNull String message) { + @NonNull public CommentErrorType type; + @NonNull public String message; + public CommentError(@NonNull CommentErrorType type, @NonNull String message) { this.type = type; this.message = message; } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index 9191d3569af8..5fb03169535f 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -1,5 +1,6 @@ package org.wordpress.android.fluxc.utils; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.wordpress.android.fluxc.model.CommentModel; @@ -17,8 +18,10 @@ import java.util.ArrayList; public class CommentErrorUtils { - public static RemoteCommentResponsePayload commentErrorToFetchCommentPayload(BaseNetworkError error, - @Nullable CommentModel comment) { + @NonNull + public static RemoteCommentResponsePayload commentErrorToFetchCommentPayload( + @NonNull BaseNetworkError error, + @Nullable CommentModel comment) { RemoteCommentResponsePayload payload = new RemoteCommentResponsePayload(comment); payload.error = new CommentError(genericToCommentError(error), getErrorMessage(error)); return payload; @@ -58,11 +61,13 @@ public static RemoteCommentResponsePayload commentErrorToPushCommentPayload(Base return payload; } - public static CommentError networkToCommentError(BaseNetworkError error) { + @NonNull + public static CommentError networkToCommentError(@NonNull BaseNetworkError error) { return new CommentError(genericToCommentError(error), getErrorMessage(error)); } - private static CommentErrorType genericToCommentError(BaseNetworkError error) { + @NonNull + private static CommentErrorType genericToCommentError(@NonNull BaseNetworkError error) { CommentErrorType errorType = CommentErrorType.GENERIC_ERROR; if (error.isGeneric()) { switch (error.type) { @@ -101,7 +106,8 @@ private static CommentErrorType genericToCommentError(BaseNetworkError error) { return errorType; } - private static String getErrorMessage(BaseNetworkError error) { + @NonNull + private static String getErrorMessage(@NonNull BaseNetworkError error) { return error.message; } } From 5f45d152b703ca005cfadab6e64be37ecaebe2ac Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:06:25 +0300 Subject: [PATCH 04/24] Refactor: Create missing switch branch on comment error utils Warning: "'switch' statement on enum type 'org.wordpress.android.fluxc.network.BaseRequest.GenericErrorType' misses cases: 'TIMEOUT', 'NO_CONNECTION', 'NETWORK_ERROR', 'NOT_FOUND', 'CENSORED', 'SERVER_ERROR', 'INVALID_SSL_CERTIFICATE', 'HTTP_AUTH_ERROR', 'AUTHORIZATION_REQUIRED', 'NOT_AUTHENTICATED', 'PARSE_ERROR' and 'UNKNOWN'" --- .../android/fluxc/utils/CommentErrorUtils.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index 5fb03169535f..a364094b362a 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -74,6 +74,19 @@ private static CommentErrorType genericToCommentError(@NonNull BaseNetworkError case INVALID_RESPONSE: errorType = CommentErrorType.INVALID_RESPONSE; break; + case TIMEOUT: + case NO_CONNECTION: + case NETWORK_ERROR: + case NOT_FOUND: + case CENSORED: + case SERVER_ERROR: + case INVALID_SSL_CERTIFICATE: + case HTTP_AUTH_ERROR: + case AUTHORIZATION_REQUIRED: + case NOT_AUTHENTICATED: + case PARSE_ERROR: + case UNKNOWN: + break; } } if (error instanceof WPComGsonNetworkError) { From a2f8837c744a5a74d1e9273907b7e9ed6850e9d4 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:19:19 +0300 Subject: [PATCH 05/24] Analysis: Add missing n-a to on comment changed on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/store/CommentStore.java | 43 +++++++------------ .../android/fluxc/store/CommentsStore.kt | 6 +-- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index 5c5fec82fbfa..3a795573743c 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -205,11 +205,12 @@ public CommentError(@NonNull CommentErrorType type, @NonNull String message) { public static class OnCommentChanged extends OnChanged { public int rowsAffected; public int offset; - public CommentAction causeOfChange; + @NonNull public CommentAction causeOfChange; @Nullable public CommentStatus requestedStatus; - public List changedCommentsLocalIds = new ArrayList<>(); - public OnCommentChanged(int rowsAffected) { + @NonNull public List changedCommentsLocalIds = new ArrayList<>(); + public OnCommentChanged(int rowsAffected, @NonNull CommentAction causeOfChange) { this.rowsAffected = rowsAffected; + this.causeOfChange = causeOfChange; } } @@ -367,8 +368,7 @@ private void createNewComment(@NonNull RemoteCreateCommentPayload payload) { } private void handleCreatedNewComment(RemoteCommentResponsePayload payload) { - OnCommentChanged event = new OnCommentChanged(1); - event.causeOfChange = CommentAction.CREATE_NEW_COMMENT; + OnCommentChanged event = new OnCommentChanged(1, CommentAction.CREATE_NEW_COMMENT); // Update the comment from the DB if (!payload.isError()) { @@ -386,32 +386,28 @@ private void updateComment(CommentModel payload) { if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload); } - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.UPDATE_COMMENT); event.changedCommentsLocalIds.add(payload.getId()); - event.causeOfChange = CommentAction.UPDATE_COMMENT; emitChange(event); } private void removeComment(CommentModel payload) { int rowsAffected = CommentSqlUtils.removeComment(payload); - OnCommentChanged event = new OnCommentChanged(rowsAffected); - event.causeOfChange = CommentAction.REMOVE_COMMENT; + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.REMOVE_COMMENT); event.changedCommentsLocalIds.add(payload.getId()); emitChange(event); } private void removeComments(SiteModel payload) { int rowsAffected = CommentSqlUtils.removeComments(payload); - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.REMOVE_COMMENTS); // Doesn't make sense to update here event.changedCommentsLocalIds - event.causeOfChange = CommentAction.REMOVE_COMMENTS; emitChange(event); } private void removeAllComments() { int rowsAffected = CommentSqlUtils.deleteAllComments(); - OnCommentChanged event = new OnCommentChanged(rowsAffected); - event.causeOfChange = CommentAction.REMOVE_ALL_COMMENTS; + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.REMOVE_ALL_COMMENTS); emitChange(event); } @@ -430,11 +426,10 @@ private void deleteComment(@NonNull RemoteCommentPayload payload) { } private void handleDeletedCommentResponse(RemoteCommentResponsePayload payload) { - OnCommentChanged event = new OnCommentChanged(0); + OnCommentChanged event = new OnCommentChanged(0, CommentAction.DELETE_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); } - event.causeOfChange = CommentAction.DELETE_COMMENT; event.error = payload.error; if (!payload.isError()) { // Delete once means "send to trash", so we don't want to remove it from the DB, just update it's @@ -460,7 +455,7 @@ private void fetchComments(@NonNull FetchCommentsPayload payload) { private void handleFetchCommentsResponse(FetchCommentsResponsePayload payload) { int rowsAffected = 0; - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.FETCH_COMMENTS); if (!payload.isError()) { // Find comments that were deleted or moved to a different status on the server and remove them from // local DB. @@ -472,7 +467,6 @@ private void handleFetchCommentsResponse(FetchCommentsResponsePayload payload) { event.changedCommentsLocalIds.add(comment.getId()); } } - event.causeOfChange = CommentAction.FETCH_COMMENTS; event.error = payload.error; event.requestedStatus = payload.requestedStatus; event.offset = payload.offset; @@ -487,8 +481,7 @@ private void pushComment(@NonNull RemoteCommentPayload payload) { mCommentXMLRPCClient.pushComment(payload.site, payload.comment); } } else { - OnCommentChanged event = new OnCommentChanged(0); - event.causeOfChange = CommentAction.PUSH_COMMENT; + OnCommentChanged event = new OnCommentChanged(0, CommentAction.PUSH_COMMENT); event.error = new CommentError(CommentErrorType.INVALID_INPUT, "Comment can't be null"); emitChange(event); } @@ -499,11 +492,10 @@ private void handlePushCommentResponse(RemoteCommentResponsePayload payload) { if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); } - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.PUSH_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); } - event.causeOfChange = CommentAction.PUSH_COMMENT; event.error = payload.error; emitChange(event); } @@ -529,11 +521,10 @@ private void handleFetchCommentResponse(RemoteCommentResponsePayload payload) { if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); } - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.FETCH_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); } - event.causeOfChange = CommentAction.FETCH_COMMENT; event.error = payload.error; emitChange(event); } @@ -548,8 +539,7 @@ private void likeComment(@NonNull RemoteLikeCommentPayload payload) { if (payload.site.isUsingWpComRestApi()) { mCommentRestClient.likeComment(payload.site, getPrioritizedRemoteCommentId(payload), comment, payload.like); } else { - OnCommentChanged event = new OnCommentChanged(0); - event.causeOfChange = CommentAction.LIKE_COMMENT; + OnCommentChanged event = new OnCommentChanged(0, CommentAction.LIKE_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); } @@ -563,11 +553,10 @@ private void handleLikedCommentResponse(RemoteCommentResponsePayload payload) { if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); } - OnCommentChanged event = new OnCommentChanged(rowsAffected); + OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.LIKE_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); } - event.causeOfChange = CommentAction.LIKE_COMMENT; event.error = payload.error; emitChange(event); } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentsStore.kt b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentsStore.kt index a73f48ce6269..1da5a809a784 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentsStore.kt +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentsStore.kt @@ -654,8 +654,7 @@ class CommentsStore @Inject constructor( ) private suspend fun onPushComment(payload: RemoteCommentPayload): OnCommentChanged { if (payload.comment == null) { - return OnCommentChanged(0).apply { - this.causeOfChange = CommentAction.PUSH_COMMENT + return OnCommentChanged(0, CommentAction.PUSH_COMMENT).apply { this.error = CommentError(INVALID_INPUT, "Comment can't be null") } } @@ -715,9 +714,8 @@ class CommentsStore @Inject constructor( status: CommentStatus? = null, offset: Int? = null ): OnCommentChanged { - return OnCommentChanged(rowsAffected).apply { + return OnCommentChanged(rowsAffected, actionType).apply { this.changedCommentsLocalIds.addAll(commentLocalIds) - this.causeOfChange = actionType this.error = error status?.let { this.requestedStatus = it From 944c8eae5c3082893485d869d555caa6d19c8f07 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:40:27 +0300 Subject: [PATCH 06/24] Analysis: Add missing n-a to on comment likes changed on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/store/CommentStore.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index 3a795573743c..e7f0c815b965 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -215,16 +215,22 @@ public OnCommentChanged(int rowsAffected, @NonNull CommentAction causeOfChange) } public static class OnCommentLikesChanged extends OnChanged { - public CommentAction causeOfChange; + @NonNull public CommentAction causeOfChange; public final long siteId; public final long commentId; - public List commentLikes = new ArrayList<>(); + @NonNull public List commentLikes = new ArrayList<>(); public final boolean hasMore; - public OnCommentLikesChanged(long siteId, long commentId, boolean hasMore) { + public OnCommentLikesChanged( + long siteId, + long commentId, + boolean hasMore, + @NonNull CommentAction causeOfChange + ) { this.siteId = siteId; this.commentId = commentId; this.hasMore = hasMore; + this.causeOfChange = causeOfChange; } } @@ -570,11 +576,12 @@ private void fetchCommentLikes(@NonNull FetchCommentLikesPayload payload) { ); } - private void handleFetchedCommentLikes(FetchedCommentLikesResponsePayload payload) { + private void handleFetchedCommentLikes(@NonNull FetchedCommentLikesResponsePayload payload) { OnCommentLikesChanged event = new OnCommentLikesChanged( payload.siteId, payload.commentRemoteId, - payload.hasMore + payload.hasMore, + CommentAction.FETCHED_COMMENT_LIKES ); if (!payload.isError()) { if (!payload.isRequestNextPage) { @@ -596,7 +603,6 @@ private void handleFetchedCommentLikes(FetchedCommentLikesResponsePayload payloa event.commentLikes.addAll(cachedLikes); } - event.causeOfChange = CommentAction.FETCHED_COMMENT_LIKES; event.error = payload.error; emitChange(event); } From deb38a64c642e99a6c2319deadc744fa62d2b961 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:55:12 +0300 Subject: [PATCH 07/24] Analysis: Add missing n-a to get comments for site on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../fluxc/persistence/CommentSqlUtils.java | 42 ++++++++++--------- .../android/fluxc/store/CommentStore.java | 12 ++++-- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 9640759ec27c..64d8f27a85ae 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -177,16 +177,18 @@ public static CommentModel getCommentBySiteAndRemoteId(@NonNull SiteModel site, return results.get(0); } - private static SelectQuery getCommentsQueryForSite(SiteModel site, CommentStatus... statuses) { + @NonNull + private static SelectQuery getCommentsQueryForSite( + @NonNull SiteModel site, + @NonNull CommentStatus... statuses) { return getCommentsQueryForSite(site, 0, statuses); } - private static SelectQuery getCommentsQueryForSite(SiteModel site, int limit, - CommentStatus... statuses) { - if (site == null) { - return null; - } - + @NonNull + private static SelectQuery getCommentsQueryForSite( + @NonNull SiteModel site, + int limit, + @NonNull CommentStatus... statuses) { SelectQuery query = WellSql.select(CommentModel.class); if (limit > 0) { @@ -204,26 +206,28 @@ private static SelectQuery getCommentsQueryForSite(SiteModel site, return selectQueryBuilder.endGroup().endWhere(); } - public static List getCommentsForSite(SiteModel site, @Order int order, CommentStatus... statuses) { + @NonNull + public static List getCommentsForSite( + @NonNull SiteModel site, + @Order int order, + @NonNull CommentStatus... statuses) { return getCommentsForSite(site, order, 0, statuses); } - public static List getCommentsForSite(SiteModel site, @Order int order, int limit, - CommentStatus... statuses) { - if (site == null) { - return Collections.emptyList(); - } - + @NonNull + public static List getCommentsForSite( + @NonNull SiteModel site, + @Order int order, + int limit, + @NonNull CommentStatus... statuses) { return getCommentsQueryForSite(site, limit, statuses) .orderBy(CommentModelTable.DATE_PUBLISHED, order) .getAsModel(); } - public static int getCommentsCountForSite(SiteModel site, CommentStatus... statuses) { - if (site == null) { - return 0; - } - + public static int getCommentsCountForSite( + @NonNull SiteModel site, + @NonNull CommentStatus... statuses) { return (int) getCommentsQueryForSite(site, statuses).count(); } diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index e7f0c815b965..f57885065a98 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -254,14 +254,20 @@ public OnCommentLikesChanged( * @param statuses Array of status or CommentStatus.ALL to get all of them. * @param limit Maximum number of comments to return. 0 is unlimited. */ + @NonNull @SuppressLint("WrongConstant") - public List getCommentsForSite(SiteModel site, boolean orderByDateAscending, int limit, - CommentStatus... statuses) { + public List getCommentsForSite( + @NonNull SiteModel site, + boolean orderByDateAscending, + int limit, + @NonNull CommentStatus... statuses) { @Order int order = orderByDateAscending ? SelectQuery.ORDER_ASCENDING : SelectQuery.ORDER_DESCENDING; return CommentSqlUtils.getCommentsForSite(site, order, limit, statuses); } - public int getNumberOfCommentsForSite(SiteModel site, CommentStatus... statuses) { + public int getNumberOfCommentsForSite( + @NonNull SiteModel site, + @NonNull CommentStatus... statuses) { return CommentSqlUtils.getCommentsCountForSite(site, statuses); } From 7a4eba3dcddd53e01d3d616900dfc415bc7aa198 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 16:59:17 +0300 Subject: [PATCH 08/24] Analysis: Add missing n-a to get comment by local id on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../org/wordpress/android/fluxc/persistence/CommentSqlUtils.java | 1 + .../java/org/wordpress/android/fluxc/store/CommentStore.java | 1 + 2 files changed, 2 insertions(+) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 64d8f27a85ae..58f6faff09fd 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -155,6 +155,7 @@ public static int deleteAllComments() { return WellSql.delete(CommentModel.class).execute(); } + @Nullable public static CommentModel getCommentByLocalCommentId(int localId) { List results = WellSql.select(CommentModel.class) .where().equals(CommentModelTable.ID, localId).endWhere().getAsModel(); diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index f57885065a98..605bb3f7cddd 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -277,6 +277,7 @@ public CommentModel getCommentBySiteAndRemoteId(@NonNull SiteModel site, long re return CommentSqlUtils.getCommentBySiteAndRemoteId(site, remoteCommentId); } + @Nullable public CommentModel getCommentByLocalId(int localId) { return CommentSqlUtils.getCommentByLocalCommentId(localId); } From 1b30112722049431fe073b9196ae954017e5c810 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:02:44 +0300 Subject: [PATCH 09/24] Analysis: Add missing n-a to all payload methods on comment store FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/store/CommentStore.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java index 605bb3f7cddd..b09dfd04735f 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/store/CommentStore.java @@ -380,7 +380,7 @@ private void createNewComment(@NonNull RemoteCreateCommentPayload payload) { } } - private void handleCreatedNewComment(RemoteCommentResponsePayload payload) { + private void handleCreatedNewComment(@NonNull RemoteCommentResponsePayload payload) { OnCommentChanged event = new OnCommentChanged(1, CommentAction.CREATE_NEW_COMMENT); // Update the comment from the DB @@ -394,7 +394,7 @@ private void handleCreatedNewComment(RemoteCommentResponsePayload payload) { emitChange(event); } - private void updateComment(CommentModel payload) { + private void updateComment(@NonNull CommentModel payload) { int rowsAffected = 0; if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload); @@ -404,14 +404,14 @@ private void updateComment(CommentModel payload) { emitChange(event); } - private void removeComment(CommentModel payload) { + private void removeComment(@NonNull CommentModel payload) { int rowsAffected = CommentSqlUtils.removeComment(payload); OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.REMOVE_COMMENT); event.changedCommentsLocalIds.add(payload.getId()); emitChange(event); } - private void removeComments(SiteModel payload) { + private void removeComments(@NonNull SiteModel payload) { int rowsAffected = CommentSqlUtils.removeComments(payload); OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.REMOVE_COMMENTS); // Doesn't make sense to update here event.changedCommentsLocalIds @@ -438,7 +438,7 @@ private void deleteComment(@NonNull RemoteCommentPayload payload) { } } - private void handleDeletedCommentResponse(RemoteCommentResponsePayload payload) { + private void handleDeletedCommentResponse(@NonNull RemoteCommentResponsePayload payload) { OnCommentChanged event = new OnCommentChanged(0, CommentAction.DELETE_COMMENT); if (payload.comment != null) { event.changedCommentsLocalIds.add(payload.comment.getId()); @@ -466,7 +466,7 @@ private void fetchComments(@NonNull FetchCommentsPayload payload) { } } - private void handleFetchCommentsResponse(FetchCommentsResponsePayload payload) { + private void handleFetchCommentsResponse(@NonNull FetchCommentsResponsePayload payload) { int rowsAffected = 0; OnCommentChanged event = new OnCommentChanged(rowsAffected, CommentAction.FETCH_COMMENTS); if (!payload.isError()) { @@ -500,7 +500,7 @@ private void pushComment(@NonNull RemoteCommentPayload payload) { } } - private void handlePushCommentResponse(RemoteCommentResponsePayload payload) { + private void handlePushCommentResponse(@NonNull RemoteCommentResponsePayload payload) { int rowsAffected = 0; if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); @@ -529,7 +529,7 @@ private long getPrioritizedRemoteCommentId(@NonNull RemoteCommentPayload payload } } - private void handleFetchCommentResponse(RemoteCommentResponsePayload payload) { + private void handleFetchCommentResponse(@NonNull RemoteCommentResponsePayload payload) { int rowsAffected = 0; if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); @@ -561,7 +561,7 @@ private void likeComment(@NonNull RemoteLikeCommentPayload payload) { } } - private void handleLikedCommentResponse(RemoteCommentResponsePayload payload) { + private void handleLikedCommentResponse(@NonNull RemoteCommentResponsePayload payload) { int rowsAffected = 0; if (!payload.isError()) { rowsAffected = CommentSqlUtils.insertOrUpdateComment(payload.comment); From 8fbd3517b77dc11c192c231e5fb37fbeb302b370 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:04:03 +0300 Subject: [PATCH 10/24] Analysis: Add missing n-a to comment error to fetch comments payload FYI: 'n-a' stands for 'nullability annotations'. --- .../wordpress/android/fluxc/utils/CommentErrorUtils.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index a364094b362a..574c699bdaae 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -27,8 +27,10 @@ public static RemoteCommentResponsePayload commentErrorToFetchCommentPayload( return payload; } - public static FetchCommentsResponsePayload commentErrorToFetchCommentsPayload(BaseNetworkError error, - SiteModel site) { + @NonNull + public static FetchCommentsResponsePayload commentErrorToFetchCommentsPayload( + @NonNull BaseNetworkError error, + @NonNull SiteModel site) { FetchCommentsResponsePayload payload = new FetchCommentsResponsePayload( new ArrayList<>(), site, 0, 0, null ); From cb41a27abb02daf5d16d3b60f1ecf38a4cafcd56 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:04:45 +0300 Subject: [PATCH 11/24] Analysis: Add missing n-a to comment error to fetched cmt likes payload FYI: 'n-a' stands for 'nullability annotations'. --- .../org/wordpress/android/fluxc/utils/CommentErrorUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index 574c699bdaae..de64c735d792 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -38,8 +38,9 @@ public static FetchCommentsResponsePayload commentErrorToFetchCommentsPayload( return payload; } + @NonNull public static FetchedCommentLikesResponsePayload commentErrorToFetchedCommentLikesPayload( - BaseNetworkError error, + @NonNull BaseNetworkError error, long siteId, long commentId, boolean requestNextPage, From b2040a9a8cce5bd834c68c92ccc03590a335c2b5 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:05:31 +0300 Subject: [PATCH 12/24] Analysis: Add missing n-a to comment error to push comment payload FYI: 'n-a' stands for 'nullability annotations'. --- .../wordpress/android/fluxc/utils/CommentErrorUtils.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index de64c735d792..0952fd6e50f8 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -57,8 +57,10 @@ public static FetchedCommentLikesResponsePayload commentErrorToFetchedCommentLik return payload; } - public static RemoteCommentResponsePayload commentErrorToPushCommentPayload(BaseNetworkError error, - CommentModel comment) { + @NonNull + public static RemoteCommentResponsePayload commentErrorToPushCommentPayload( + @NonNull BaseNetworkError error, + @NonNull CommentModel comment) { RemoteCommentResponsePayload payload = new RemoteCommentResponsePayload(comment); payload.error = new CommentError(genericToCommentError(error), getErrorMessage(error)); return payload; From 49f3adc5aab44ca3bb923fc0ca75f8cc78cfc301 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:07:14 +0300 Subject: [PATCH 13/24] Analysis: Replace collections with cmt list sort on comments sql utils Warning: "Collections.sort could be replaced with List.sort" --- .../wordpress/android/fluxc/persistence/CommentSqlUtils.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 58f6faff09fd..bc2fd401b1fb 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -88,7 +87,7 @@ public static int removeCommentGaps(SiteModel site, List comments, return 0; } - Collections.sort(comments, new Comparator() { + comments.sort(new Comparator() { @Override public int compare(CommentModel o1, CommentModel o2) { long x = o2.getPublishedTimestamp(); From eb14ded34110b710435c9089e3ffb893e5805af3 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:08:08 +0300 Subject: [PATCH 14/24] Refactor: Replace anonymous classes with lambda on comment sql utils --- .../android/fluxc/persistence/CommentSqlUtils.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index bc2fd401b1fb..4d72386e47fb 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.Date; import java.util.List; @@ -87,13 +86,10 @@ public static int removeCommentGaps(SiteModel site, List comments, return 0; } - comments.sort(new Comparator() { - @Override - public int compare(CommentModel o1, CommentModel o2) { - long x = o2.getPublishedTimestamp(); - long y = o1.getPublishedTimestamp(); - return (x < y) ? -1 : ((x == y) ? 0 : 1); - } + comments.sort((o1, o2) -> { + long x = o2.getPublishedTimestamp(); + long y = o1.getPublishedTimestamp(); + return (x < y) ? -1 : ((x == y) ? 0 : 1); }); ArrayList remoteIds = new ArrayList<>(); From 11996a86f33f34f0133a7ba07790de6fd29666b4 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:09:52 +0300 Subject: [PATCH 15/24] Analysis: Replace comments published timestamp with long compare Warning: "Expression can be replaced with 'Long.compare'" --- .../wordpress/android/fluxc/persistence/CommentSqlUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 4d72386e47fb..6f3ee53e82ac 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -89,7 +89,7 @@ public static int removeCommentGaps(SiteModel site, List comments, comments.sort((o1, o2) -> { long x = o2.getPublishedTimestamp(); long y = o1.getPublishedTimestamp(); - return (x < y) ? -1 : ((x == y) ? 0 : 1); + return Long.compare(x, y); }); ArrayList remoteIds = new ArrayList<>(); From 0420b0bffd2216e6aeb1846b77e533d5a257bba8 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:12:35 +0300 Subject: [PATCH 16/24] Analysis: Suppress resource warning for well sql give me writable db Warning: "'SQLiteDatabase' used without 'try'-with-resources statement" --- .../org/wordpress/android/fluxc/persistence/CommentSqlUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 6f3ee53e82ac..381c045838c3 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -227,6 +227,7 @@ public static int getCommentsCountForSite( return (int) getCommentsQueryForSite(site, statuses).count(); } + @SuppressWarnings("resource") public static int deleteCommentLikesAndPurgeExpired(long siteId, long remoteCommentId) { int numDeleted = WellSql.delete(LikeModel.class) .where() From 24e82d3dfcfec9be1acecaa8aac681d837f43ed9 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:22:59 +0300 Subject: [PATCH 17/24] Analysis: Guard usages of statuses on comment sql utils --- .../android/fluxc/persistence/CommentSqlUtils.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 381c045838c3..222ce50b3894 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -100,12 +101,18 @@ public static int removeCommentGaps(SiteModel site, List comments, long startOfRange = comments.get(0).getPublishedTimestamp(); long endOfRange = comments.get(comments.size() - 1).getPublishedTimestamp(); + List sourceStatuses; + if (statuses != null) { + sourceStatuses = Arrays.asList(statuses); + } else { + sourceStatuses = Collections.emptyList(); + } ArrayList targetStatuses = new ArrayList<>(); - if (Arrays.asList(statuses).contains(CommentStatus.ALL)) { + if (sourceStatuses.contains(CommentStatus.ALL)) { targetStatuses.add(CommentStatus.APPROVED); targetStatuses.add(CommentStatus.UNAPPROVED); } else { - targetStatuses.addAll(Arrays.asList(statuses)); + targetStatuses.addAll(sourceStatuses); } int numOfDeletedComments = 0; From ecd4c82ab31cb056ed89d4185829ec1623b40271 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:25:42 +0300 Subject: [PATCH 18/24] Analysis: Add missing n-a to insert or update cmt on comment sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../wordpress/android/fluxc/persistence/CommentSqlUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 222ce50b3894..e51099bba76f 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -27,7 +27,7 @@ import static org.wordpress.android.fluxc.model.LikeModel.TIMESTAMP_THRESHOLD; public class CommentSqlUtils { - public static int insertOrUpdateComment(CommentModel comment) { + public static int insertOrUpdateComment(@Nullable CommentModel comment) { if (comment == null) { return 0; } From b842b280ca141d57918b6bd5194559e821b3246c Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:26:30 +0300 Subject: [PATCH 19/24] Analysis: Add missing n-a to remove comment on comment sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../wordpress/android/fluxc/persistence/CommentSqlUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index e51099bba76f..9dfd8a1012c1 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -61,7 +61,7 @@ public static int insertOrUpdateComment(@Nullable CommentModel comment) { } } - public static int removeComment(CommentModel comment) { + public static int removeComment(@Nullable CommentModel comment) { if (comment == null) { return 0; } From 4bc5ce5761b59e86ca63834860a33ec4b4274061 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:27:37 +0300 Subject: [PATCH 20/24] Analysis: Add missing n-a to remove comments on comment sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/persistence/CommentSqlUtils.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 9dfd8a1012c1..f2d1fd6ad1a3 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -71,11 +71,7 @@ public static int removeComment(@Nullable CommentModel comment) { .execute(); } - public static int removeComments(SiteModel site) { - if (site == null) { - return 0; - } - + public static int removeComments(@NonNull SiteModel site) { return WellSql.delete(CommentModel.class) .where().equals(CommentModelTable.LOCAL_SITE_ID, site.getId()).endWhere() .execute(); From bea943466f24251b6c684e46820c85a1482b5eb8 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:28:20 +0300 Subject: [PATCH 21/24] Analysis: Add missing n-a to remove comment gaps on comment sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/persistence/CommentSqlUtils.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index f2d1fd6ad1a3..87492a8eb3bc 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -77,9 +77,13 @@ public static int removeComments(@NonNull SiteModel site) { .execute(); } - public static int removeCommentGaps(SiteModel site, List comments, int maxEntriesInResponse, - int requestOffset, @Nullable CommentStatus... statuses) { - if (site == null || comments == null || comments.isEmpty()) { + public static int removeCommentGaps( + @NonNull SiteModel site, + @NonNull List comments, + int maxEntriesInResponse, + int requestOffset, + @Nullable CommentStatus... statuses) { + if (comments.isEmpty()) { return 0; } From ae96aa2a046e4f6da6a95dae3098f78fa5ee8704 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:30:12 +0300 Subject: [PATCH 22/24] Analysis: Add missing n-a to insert or update cmt likes on cmt sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../android/fluxc/persistence/CommentSqlUtils.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index 87492a8eb3bc..b792ddf1882a 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -280,11 +280,10 @@ public static int deleteCommentLikesAndPurgeExpired(long siteId, long remoteComm return numDeleted; } - public static int insertOrUpdateCommentLikes(long siteId, long remoteCommentId, LikeModel like) { - if (null == like) { - return 0; - } - + public static int insertOrUpdateCommentLikes( + long siteId, + long remoteCommentId, + @NonNull LikeModel like) { List likeResult; // If the like already exists and has an id, we want to update it. From 8f4a4d28b99ca7ec0e952929d8005692affe00d5 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Fri, 13 Oct 2023 17:31:30 +0300 Subject: [PATCH 23/24] Analysis: Add missing n-a to get cmt likes by cmt id on cmt sql utils FYI: 'n-a' stands for 'nullability annotations'. --- .../org/wordpress/android/fluxc/persistence/CommentSqlUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java index b792ddf1882a..5ce7f4aa085b 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/persistence/CommentSqlUtils.java @@ -307,6 +307,7 @@ public static int insertOrUpdateCommentLikes( } } + @NonNull public static List getCommentLikesByCommentId(long siteId, long remoteCommentId) { return WellSql.select(LikeModel.class) .where() From 531756732e38a2ffd6068fcfecfd57d9915289ed Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 19 Oct 2023 11:36:13 +0300 Subject: [PATCH 24/24] Refactor: Simplify if/switch with if statement on comment error utils Related PR Comment: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2870#discussion_r1363993819 --- .../fluxc/utils/CommentErrorUtils.java | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java index 0952fd6e50f8..14b15564c417 100644 --- a/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java +++ b/libs/fluxc/src/main/java/org/wordpress/android/fluxc/utils/CommentErrorUtils.java @@ -74,25 +74,8 @@ public static CommentError networkToCommentError(@NonNull BaseNetworkError error @NonNull private static CommentErrorType genericToCommentError(@NonNull BaseNetworkError error) { CommentErrorType errorType = CommentErrorType.GENERIC_ERROR; - if (error.isGeneric()) { - switch (error.type) { - case INVALID_RESPONSE: - errorType = CommentErrorType.INVALID_RESPONSE; - break; - case TIMEOUT: - case NO_CONNECTION: - case NETWORK_ERROR: - case NOT_FOUND: - case CENSORED: - case SERVER_ERROR: - case INVALID_SSL_CERTIFICATE: - case HTTP_AUTH_ERROR: - case AUTHORIZATION_REQUIRED: - case NOT_AUTHENTICATED: - case PARSE_ERROR: - case UNKNOWN: - break; - } + if (error.isGeneric() && error.type == GenericErrorType.INVALID_RESPONSE) { + errorType = CommentErrorType.INVALID_RESPONSE; } if (error instanceof WPComGsonNetworkError) { WPComGsonNetworkError wpComGsonNetworkError = (WPComGsonNetworkError) error;