From 72af0f3596e396293bad0095bcd76be09613cab3 Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:01:31 -0400 Subject: [PATCH] Fix wrong posts showing when swiping between posts. --- .../activities/ViewPostDetailActivity.java | 4 +++ .../fragments/ViewPostDetailFragmentNew.java | 4 ++- .../ViewPostDetailActivityViewModel.kt | 31 ++++++++++++++++++- .../ViewPostDetailFragmentViewModelNew.kt | 11 +++++++ 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java index 33ebe54d..a668fc30 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -602,6 +602,10 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele ); } + public void updatePostFromEvent(Post post, int postListPosition) { + + } + @Subscribe public void onAccountSwitchEvent(SwitchAccountEvent event) { if (!getClass().getName().equals(event.excludeActivityClassName)) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragmentNew.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragmentNew.java index 137b4188..7d4a5cd5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragmentNew.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragmentNew.java @@ -1381,7 +1381,9 @@ public class ViewPostDetailFragmentNew extends Fragment implements FragmentCommu @Subscribe public void onPostUpdateEvent(PostUpdateEventToPostList event) { - viewPostDetailFragmentViewModel.setPost(event.post); + if (viewPostDetailFragmentViewModel.updatePostFromEvent(event.post)) { + mActivity.updatePostFromEvent(event.post, postListPosition); + } } @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailActivityViewModel.kt b/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailActivityViewModel.kt index e493c9d4..580ffc7f 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailActivityViewModel.kt +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailActivityViewModel.kt @@ -18,7 +18,6 @@ import ml.docilealligator.infinityforreddit.post.ParsePost import ml.docilealligator.infinityforreddit.post.Post import ml.docilealligator.infinityforreddit.post.PostType import ml.docilealligator.infinityforreddit.postfilter.PostFilter -import ml.docilealligator.infinityforreddit.readpost.NullReadPostsList import ml.docilealligator.infinityforreddit.readpost.ReadPost import ml.docilealligator.infinityforreddit.readpost.ReadPostType import ml.docilealligator.infinityforreddit.readpost.ReadPostsListInterface @@ -55,6 +54,36 @@ class ViewPostDetailActivityViewModel( return posts?.getOrNull(index) } + fun updatePostFromEvent(post: Post, postListPosition: Int) { + posts?.let { + if (postListPosition in it.indices && it[postListPosition].id == post.id) { + post.title = post.title + post.selfText = post.selfText + post.selfTextPlain = post.selfTextPlain + post.selfTextPlainTrimmed = post.selfTextPlainTrimmed + post.mediaMetadataMap = post.mediaMetadataMap + post.voteType = post.voteType + post.score = post.score + post.nComments = post.nComments + post.isNSFW = post.isNSFW + post.isHidden = post.isHidden + post.isSpoiler = post.isSpoiler + post.flair = post.flair + post.isSaved = post.isSaved + post.setIsStickied(post.isStickied) + post.isApproved = post.isApproved + post.approvedAtUTC = post.approvedAtUTC + post.approvedBy = post.approvedBy + post.setRemoved(post.isRemoved, post.isSpam) + post.setIsLocked(post.isLocked) + post.setIsModerator(post.isModerator) + if (post.isRead) { + post.markAsRead() + } + } + } + } + fun loadAuthorImages(comments: MutableList, loadIconListener: UserProfileImagesBatchLoader.LoadIconListener) { loader.loadAuthorImagesInComments(accessToken, comments, loadIconListener) } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailFragmentViewModelNew.kt b/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailFragmentViewModelNew.kt index 690bbffb..85ea3e3d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailFragmentViewModelNew.kt +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/viewmodels/ViewPostDetailFragmentViewModelNew.kt @@ -144,6 +144,17 @@ class ViewPostDetailFragmentViewModelNew( ) } + fun updatePostFromEvent(post: Post): Boolean { + if (_dataState.value.post?.id == post.id) { + _dataState.value = _dataState.value.copy( + post = post + ) + return true + } + + return false + } + fun getPost(): Post? { return _dataState.value.post }