aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-02-13 10:27:40 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-02-13 10:27:40 +0000
commitb2aff0c04738135a01838493655832578c5f24c4 (patch)
treec23cc4aaa489b34ccfed6f0c6bc8a360cc701d61 /app
parent288f1777d9b8ee1c4480a3184ebc0981f1e3494e (diff)
downloadinfinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar.gz
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar.bz2
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar.lz
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar.xz
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.tar.zst
infinity-for-reddit-b2aff0c04738135a01838493655832578c5f24c4.zip
Fix updating flair in ViewPostDetailFragment.
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FlairBottomSheetFragment.java12
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/events/FlairSelectedEvent.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java12
4 files changed, 37 insertions, 13 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 0b6fb97e..b4efef1f 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
@@ -44,14 +44,12 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
-import ml.docilealligator.infinityforreddit.Flair;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.SortType;
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccount;
-import ml.docilealligator.infinityforreddit.bottomsheetfragments.FlairBottomSheetFragment;
import ml.docilealligator.infinityforreddit.comment.Comment;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.events.NeedForPostListFromPostFragmentEvent;
@@ -62,8 +60,7 @@ import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
import ml.docilealligator.infinityforreddit.post.Post;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
-public class ViewPostDetailActivity extends BaseActivity implements FlairBottomSheetFragment.FlairSelectionCallback,
- SortTypeSelectionCallback, ActivityToolbarInterface {
+public class ViewPostDetailActivity extends BaseActivity implements SortTypeSelectionCallback, ActivityToolbarInterface {
public static final String EXTRA_POST_DATA = "EPD";
public static final String EXTRA_POST_ID = "EPI";
@@ -387,14 +384,6 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
}
@Override
- public void flairSelected(Flair flair) {
- ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment();
- if (fragment != null) {
- fragment.changeFlair(flair);
- }
- }
-
- @Override
public void sortTypeSelected(SortType sortType) {
ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment();
if (fragment != null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FlairBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FlairBottomSheetFragment.java
index b67a04c9..d8b39b7e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FlairBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FlairBottomSheetFragment.java
@@ -17,6 +17,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+import org.greenrobot.eventbus.EventBus;
+
import java.util.ArrayList;
import javax.inject.Inject;
@@ -30,6 +32,7 @@ import ml.docilealligator.infinityforreddit.FetchFlairs;
import ml.docilealligator.infinityforreddit.Flair;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.events.FlairSelectedEvent;
import retrofit2.Retrofit;
@@ -40,6 +43,7 @@ public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
public static final String EXTRA_ACCESS_TOKEN = "EAT";
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
+ public static final String EXTRA_VIEW_POST_DETAIL_FRAGMENT_ID = "EPFI";
@BindView(R.id.progress_bar_flair_bottom_sheet_fragment)
ProgressBar progressBar;
@BindView(R.id.error_text_view_flair_bottom_sheet_fragment)
@@ -72,8 +76,14 @@ public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
((Infinity) mActivity.getApplication()).getAppComponent().inject(this);
+ long viewPostFragmentId = getArguments().getLong(EXTRA_VIEW_POST_DETAIL_FRAGMENT_ID, -1);
mAdapter = new FlairBottomSheetRecyclerViewAdapter(mActivity, mCustomThemeWrapper, flair -> {
- ((FlairSelectionCallback) mActivity).flairSelected(flair);
+ if (viewPostFragmentId <= 0) {
+ //PostXXXActivity
+ ((FlairSelectionCallback) mActivity).flairSelected(flair);
+ } else {
+ EventBus.getDefault().post(new FlairSelectedEvent(viewPostFragmentId, flair));
+ }
dismiss();
});
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/events/FlairSelectedEvent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/events/FlairSelectedEvent.java
new file mode 100644
index 00000000..4ff85a89
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/events/FlairSelectedEvent.java
@@ -0,0 +1,13 @@
+package ml.docilealligator.infinityforreddit.events;
+
+import ml.docilealligator.infinityforreddit.Flair;
+
+public class FlairSelectedEvent {
+ public long viewPostDetailFragmentId;
+ public Flair flair;
+
+ public FlairSelectedEvent(long viewPostDetailFragmentId, Flair flair) {
+ this.viewPostDetailFragmentId = viewPostDetailFragmentId;
+ this.flair = flair;
+ }
+}
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 f4f6e49c..b41a7ec0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java
@@ -88,6 +88,7 @@ import ml.docilealligator.infinityforreddit.customviews.CustomToroContainer;
import ml.docilealligator.infinityforreddit.events.ChangeNSFWBlurEvent;
import ml.docilealligator.infinityforreddit.events.ChangeNetworkStatusEvent;
import ml.docilealligator.infinityforreddit.events.ChangeSpoilerBlurEvent;
+import ml.docilealligator.infinityforreddit.events.FlairSelectedEvent;
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToDetailActivity;
import ml.docilealligator.infinityforreddit.events.PostUpdateEventToPostList;
import ml.docilealligator.infinityforreddit.message.ReadMessage;
@@ -191,6 +192,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
String sortType;
@State
boolean mRespectSubredditRecommendedSortType;
+ @State
+ long viewPostDetailFragmentId;
private ViewPostDetailActivity activity;
private RequestManager mGlide;
private Locale mLocale;
@@ -262,6 +265,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
mExpandChildren = !mSharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_TOP_LEVEL_COMMENTS_FIRST, false);
if (savedInstanceState == null) {
mRespectSubredditRecommendedSortType = mSharedPreferences.getBoolean(SharedPreferencesUtils.RESPECT_SUBREDDIT_RECOMMENDED_COMMENT_SORT_TYPE, false);
+ viewPostDetailFragmentId = System.currentTimeMillis();
}
mGlide = Glide.with(this);
@@ -915,6 +919,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
Bundle bundle = new Bundle();
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, mPost.getSubredditName());
+ bundle.putLong(FlairBottomSheetFragment.EXTRA_VIEW_POST_DETAIL_FRAGMENT_ID, viewPostDetailFragmentId);
flairBottomSheetFragment.setArguments(bundle);
flairBottomSheetFragment.show(activity.getSupportFragmentManager(), flairBottomSheetFragment.getTag());
return true;
@@ -1724,6 +1729,13 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
}
}
+ @Subscribe
+ public void onFlairSelectedEvent(FlairSelectedEvent event) {
+ if (event.viewPostDetailFragmentId == viewPostDetailFragmentId) {
+ changeFlair(event.flair);
+ }
+ }
+
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);