Update the corresponding fields after moderating a post.

This commit is contained in:
Docile-Alligator
2025-07-29 17:52:03 -04:00
parent a9c49560c1
commit 43b4816378
5 changed files with 31 additions and 0 deletions

View File

@ -59,6 +59,7 @@ import ml.docilealligator.infinityforreddit.events.ChangeDefaultPostLayoutEvent;
import ml.docilealligator.infinityforreddit.events.ChangeNetworkStatusEvent;
import ml.docilealligator.infinityforreddit.events.ChangeSavePostFeedScrolledPositionEvent;
import ml.docilealligator.infinityforreddit.events.NeedForPostListFromPostFragmentEvent;
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostDetailFragment;
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostList;
import ml.docilealligator.infinityforreddit.events.ProvidePostListToViewPostDetailActivityEvent;
import ml.docilealligator.infinityforreddit.post.Post;
@ -882,6 +883,7 @@ public class PostFragment extends PostFragmentBase implements FragmentCommunicat
mPostViewModel.moderationEventLiveData.observe(getViewLifecycleOwner(), moderationEvent -> {
EventBus.getDefault().post(new PostUpdateEventToPostList(moderationEvent.getPost(), moderationEvent.getPosition()));
EventBus.getDefault().post(new PostUpdateEventToPostDetailFragment(moderationEvent.getPost()));
Toast.makeText(activity, moderationEvent.getToastMessageResId(), Toast.LENGTH_SHORT).show();
});

View File

@ -623,6 +623,10 @@ public abstract class PostFragmentBase extends Fragment {
post.setFlair(event.post.getFlair());
post.setSaved(event.post.isSaved());
post.setIsStickied(event.post.isStickied());
post.setApproved(event.post.isApproved());
post.setApprovedAtUTC(event.post.getApprovedAtUTC());
post.setApprovedBy(event.post.getApprovedBy());
post.setRemoved(event.post.isRemoved(), event.post.isSpam());
post.setIsLocked(event.post.isLocked());
post.setIsModerator(event.post.isModerator());
if (event.post.isRead()) {

View File

@ -1944,6 +1944,15 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
if (mPost.getId().equals(event.post.getId())) {
mPost.setVoteType(event.post.getVoteType());
mPost.setSaved(event.post.isSaved());
mPost.setNSFW(event.post.isNSFW());
mPost.setSpoiler(event.post.isSpoiler());
mPost.setIsStickied(event.post.isStickied());
mPost.setApproved(event.post.isApproved());
mPost.setApprovedAtUTC(event.post.getApprovedAtUTC());
mPost.setApprovedBy(event.post.getApprovedBy());
mPost.setRemoved(event.post.isRemoved(), event.post.isSpam());
mPost.setIsLocked(event.post.isLocked());
mPost.setIsModerator(event.post.isModerator());
if (mMenu != null) {
if (event.post.isSaved()) {
mMenu.findItem(R.id.action_save_view_post_detail_fragment).setIcon(mSavedIcon);

View File

@ -501,6 +501,10 @@ public class PostViewModel extends ViewModel {
@Override
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
if (response.isSuccessful()) {
post.setApproved(true);
post.setApprovedBy(accountName);
post.setApprovedAtUTC(System.currentTimeMillis());
post.setRemoved(false, false);
moderationEventLiveData.postValue(new PostModerationEvent.Approved(post, position));
} else {
moderationEventLiveData.postValue(new PostModerationEvent.ApproveFailed(post, position));
@ -522,6 +526,10 @@ public class PostViewModel extends ViewModel {
@Override
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
if (response.isSuccessful()) {
post.setApproved(false);
post.setApprovedBy(null);
post.setApprovedAtUTC(0);
post.setRemoved(true, isSpam);
moderationEventLiveData.postValue(isSpam ? new PostModerationEvent.MarkedAsSpam(post, position): new PostModerationEvent.Removed(post, position));
} else {
moderationEventLiveData.postValue(isSpam ? new PostModerationEvent.MarkAsSpamFailed(post, position) : new PostModerationEvent.RemoveFailed(post, position));

View File

@ -58,6 +58,10 @@ class ViewPostDetailFragmentViewModel(
.enqueue(object : Callback<String?> {
override fun onResponse(call: Call<String?>, response: Response<String?>) {
if (response.isSuccessful) {
post.isApproved = true
post.approvedBy = accountName
post.approvedAtUTC = System.currentTimeMillis()
post.setRemoved(false, false)
postModerationEventLiveData.postValue(Approved(post, position))
} else {
postModerationEventLiveData.postValue(ApproveFailed(post, position))
@ -79,6 +83,10 @@ class ViewPostDetailFragmentViewModel(
.enqueue(object : Callback<String?> {
override fun onResponse(call: Call<String?>, response: Response<String?>) {
if (response.isSuccessful) {
post.isApproved = false
post.approvedBy = null
post.approvedAtUTC = 0
post.setRemoved(true, isSpam)
postModerationEventLiveData.postValue(
if (isSpam) MarkedAsSpam(
post,