diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 91c6390eb..044cb0657 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -182,7 +182,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct private boolean redraft; private Status toot; private TagTimeline tagTimeline; - + public static boolean fetch_all_more = false; public StatusListAdapter(Context context, RetrieveFeedsAsyncTask.Type type, String targetedId, boolean isOnWifi, List statuses){ super(); this.context = context; @@ -220,6 +220,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct redraft = false; } + public void updateMuted(List timedMute){ this.timedMute = timedMute; } @@ -1340,6 +1341,31 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } } }); + holder.fetch_more.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + status.setFetchMore(false); + holder.fetch_more.setEnabled(false); + holder.fetch_more.setVisibility(View.GONE); + if( context instanceof BaseMainActivity) { + SQLiteDatabase db = Sqlite.getInstance(context, DB_NAME, null, Sqlite.DB_VERSION).open(); + List timelines = new TimelinesDAO(context, db).getDisplayedTimelines(); + for(ManageTimelines tl: timelines) { + if( tl.getType() == ManageTimelines.Type.HOME) { + DisplayStatusFragment homeFragment = (DisplayStatusFragment) mPageReferenceMap.get(tl.getPosition()); + if (homeFragment != null) { + fetch_all_more = true; + homeFragment.fetchMore(status.getId()); + } + break; + } + } + }else{ + Toasty.error(context, context.getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + } + return false; + } + }); } else { holder.fetch_more.setVisibility(View.GONE); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java index 81327af0a..f6f70b448 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java @@ -975,9 +975,16 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn //Display the fetch more toot button if( tmpStatuses.size() >= tootPerPage) { if (initialBookMarkDate != null && !fetchMoreButtonDisplayed && tmpStatuses.size() > 0 && tmpStatuses.get(tmpStatuses.size() - 1).getCreated_at().after(initialBookMarkDate)) { - tmpStatuses.get(tmpStatuses.size() - 1).setFetchMore(true); - fetchMoreButtonDisplayed = true; + if( StatusListAdapter.fetch_all_more && statuses.size() > 0){ + fetchMore(tmpStatuses.get(tmpStatuses.size() - 1).getId()); + }else{ + fetchMoreButtonDisplayed = true; + tmpStatuses.get(tmpStatuses.size() - 1).setFetchMore(true); + StatusListAdapter.fetch_all_more = false; + } } + }else{ + StatusListAdapter.fetch_all_more = false; } this.statuses.addAll(position, tmpStatuses); boolean display_content_after_fetch_more = sharedpreferences.getBoolean(Helper.SET_DISPLAY_CONTENT_AFTER_FM, true);