diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java index 33cd4c13..6ad3e23e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java @@ -118,6 +118,9 @@ import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; import ml.docilealligator.infinityforreddit.post.FetchStreamableVideo; import ml.docilealligator.infinityforreddit.post.Post; import ml.docilealligator.infinityforreddit.post.PostType; +import ml.docilealligator.infinityforreddit.readpost.ReadPostModification; +import ml.docilealligator.infinityforreddit.readpost.ReadPostType; +import ml.docilealligator.infinityforreddit.readpost.ReadPostsUtils; import ml.docilealligator.infinityforreddit.thing.SaveThing; import ml.docilealligator.infinityforreddit.thing.StreamableVideo; import ml.docilealligator.infinityforreddit.thing.VoteThing; @@ -154,6 +157,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter mStreamableApiProvider; private final RedditDataRoomDatabase mRedditDataRoomDatabase; private final SharedPreferences mCurrentAccountSharedPreferences; + private final SharedPreferences mPostHistorySharedPreferences; private final RequestManager mGlide; private final SaveMemoryCenterInisdeDownsampleStrategy mSaveMemoryCenterInsideDownsampleStrategy; private final EmoteCloseBracketInlineProcessor mEmoteCloseBracketInlineProcessor; @@ -242,6 +246,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter { - if (mAccountName.equals(Account.ANONYMOUS_ACCOUNT)) { - Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); - return; - } - if (mPost.isSaved()) { this.saveButton.setIconResource(R.drawable.ic_bookmark_border_grey_24dp); - SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(), - new SaveThing.SaveThingListener() { - @Override - public void success() { - mPost.setSaved(false); - PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_border_grey_24dp); - Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show(); - mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); - } + if (Account.ANONYMOUS_ACCOUNT.equals(mAccountName)) { + ReadPostModification.deleteReadPost(mRedditDataRoomDatabase, mExecutor, mActivity.accountName, + mPost.getId(), ReadPostType.ANONYMOUS_SAVED_POSTS); + mPost.setSaved(false); + Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } else { + SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(), + new SaveThing.SaveThingListener() { + @Override + public void success() { + mPost.setSaved(false); + PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_border_grey_24dp); + Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } - @Override - public void failed() { - mPost.setSaved(true); - PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_grey_24dp); - Toast.makeText(mActivity, R.string.post_unsaved_failed, Toast.LENGTH_SHORT).show(); - mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); - } - }); + @Override + public void failed() { + mPost.setSaved(true); + PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_grey_24dp); + Toast.makeText(mActivity, R.string.post_unsaved_failed, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } + }); + } } else { this.saveButton.setIconResource(R.drawable.ic_bookmark_grey_24dp); - SaveThing.saveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(), - new SaveThing.SaveThingListener() { - @Override - public void success() { - mPost.setSaved(true); - PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_grey_24dp); - Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show(); - mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); - } + if (Account.ANONYMOUS_ACCOUNT.equals(mAccountName)) { + ReadPostModification.insertReadPost(mRedditDataRoomDatabase, mExecutor, mActivity.accountName, + mPost.getId(), ReadPostType.ANONYMOUS_SAVED_POSTS, + ReadPostsUtils.GetReadPostsLimit(mActivity.accountName, mPostHistorySharedPreferences)); + mPost.setSaved(true); + Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } else { + SaveThing.saveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(), + new SaveThing.SaveThingListener() { + @Override + public void success() { + mPost.setSaved(true); + PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_grey_24dp); + Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } - @Override - public void failed() { - mPost.setSaved(false); - PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_border_grey_24dp); - Toast.makeText(mActivity, R.string.post_saved_failed, Toast.LENGTH_SHORT).show(); - mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); - } - }); + @Override + public void failed() { + mPost.setSaved(false); + PostDetailBaseViewHolder.this.saveButton.setIconResource(R.drawable.ic_bookmark_border_grey_24dp); + Toast.makeText(mActivity, R.string.post_saved_failed, Toast.LENGTH_SHORT).show(); + mPostDetailRecyclerViewAdapterCallback.updatePost(mPost); + } + }); + } } }); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java index 1ce21b68..d6f4fbfc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java @@ -612,9 +612,11 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic mPostAdapter = new PostDetailRecyclerViewAdapter(mActivity, this, mExecutor, mCustomThemeWrapper, mOauthRetrofit, mRetrofit, mRedgifsRetrofit, mStreamableApiProvider, mRedditDataRoomDatabase, mGlide, - mSeparatePostAndComments, mActivity.accessToken, mActivity.accountName, mPost, mLocale, - mSharedPreferences, mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences, mPostDetailsSharedPreferences, - mExoCreator, post -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition))); + mSeparatePostAndComments, mActivity.accessToken, mActivity.accountName, mPost, + mLocale, mSharedPreferences, mCurrentAccountSharedPreferences, + mNsfwAndSpoilerSharedPreferences, mPostDetailsSharedPreferences, + mPostHistorySharedPreferences, mExoCreator, + post -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition))); mCommentsAdapter = new CommentsRecyclerViewAdapter(mActivity, this, mCustomThemeWrapper, mExecutor, mRetrofit, mOauthRetrofit, mActivity.accessToken, mActivity.accountName, mPost, mLocale, mSingleCommentId, @@ -1359,7 +1361,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic mStreamableApiProvider, mRedditDataRoomDatabase, mGlide, mSeparatePostAndComments, mActivity.accessToken, mActivity.accountName, mPost, mLocale, mSharedPreferences, mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences, - mPostDetailsSharedPreferences, mExoCreator, + mPostDetailsSharedPreferences, mPostHistorySharedPreferences, mExoCreator, post1 -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition))); mCommentsAdapter = new CommentsRecyclerViewAdapter(mActivity,