Fixes #4178 Bookmarks not Updated in Picture section after remove

This commit is contained in:
Aditya-Srivastav 2021-01-20 23:05:33 +05:30 committed by GitHub
parent edef23f03d
commit b58d135b4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View file

@ -19,10 +19,13 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsFragment;
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment;
import fr.free.nrw.commons.category.CategoryImagesCallback;
import fr.free.nrw.commons.category.GridViewAdapter;
import fr.free.nrw.commons.contributions.MainActivity;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
import fr.free.nrw.commons.navtab.NavTab;
import java.util.ArrayList;
import java.util.Iterator;
public class BookmarkListRootFragment extends CommonsDaggerSupportFragment implements
FragmentManager.OnBackStackChangedListener,
@ -183,9 +186,19 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple
if (mediaDetails.isVisible()) {
// todo add get list fragment
((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.VISIBLE);
ArrayList<Integer> removed=mediaDetails.getRemovedItems();
removeFragment(mediaDetails);
setFragment(listFragment, mediaDetails);
((MainActivity) getActivity()).showTabs();
if(listFragment instanceof BookmarkPicturesFragment){
GridViewAdapter adapter=((GridViewAdapter)((BookmarkPicturesFragment)listFragment).getAdapter());
Iterator i = removed.iterator();
while (i.hasNext()) {
adapter.remove(adapter.getItem((int)i.next()));
}
mediaDetails.clearRemoved();
}
} else {
moveToContributionsFragment();
}

View file

@ -36,6 +36,7 @@ import fr.free.nrw.commons.utils.ImageUtils;
import fr.free.nrw.commons.utils.NetworkUtils;
import fr.free.nrw.commons.utils.ViewUtil;
import io.reactivex.disposables.CompositeDisposable;
import java.util.ArrayList;
import java.util.Objects;
import javax.inject.Inject;
import timber.log.Timber;
@ -62,6 +63,15 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
private boolean isFromFeaturedRootFragment;
private int position;
private ArrayList<Integer> removedItems=new ArrayList<Integer>();
public void clearRemoved(){
removedItems.clear();
}
public ArrayList<Integer> getRemovedItems() {
return removedItems;
}
public MediaDetailPagerFragment() {
this(false, false);
}
@ -298,6 +308,16 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
private void updateBookmarkState(MenuItem item) {
boolean isBookmarked = bookmarkDao.findBookmark(bookmark);
if(isBookmarked) {
if(removedItems.contains(pager.getCurrentItem())) {
removedItems.remove(new Integer(pager.getCurrentItem()));
}
}
else {
if(!removedItems.contains(pager.getCurrentItem())) {
removedItems.add(pager.getCurrentItem());
}
}
int icon = isBookmarked ? R.drawable.menu_ic_round_star_filled_24px : R.drawable.menu_ic_round_star_border_24px;
item.setIcon(icon);
}