Skip to content

Commit b58d135

Browse files
authored
Fixes commons-app#4178 Bookmarks not Updated in Picture section after remove
1 parent edef23f commit b58d135

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919
import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsFragment;
2020
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment;
2121
import fr.free.nrw.commons.category.CategoryImagesCallback;
22+
import fr.free.nrw.commons.category.GridViewAdapter;
2223
import fr.free.nrw.commons.contributions.MainActivity;
2324
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
2425
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
2526
import fr.free.nrw.commons.navtab.NavTab;
27+
import java.util.ArrayList;
28+
import java.util.Iterator;
2629

2730
public class BookmarkListRootFragment extends CommonsDaggerSupportFragment implements
2831
FragmentManager.OnBackStackChangedListener,
@@ -183,9 +186,19 @@ public void backPressed() {
183186
if (mediaDetails.isVisible()) {
184187
// todo add get list fragment
185188
((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.VISIBLE);
189+
ArrayList<Integer> removed=mediaDetails.getRemovedItems();
186190
removeFragment(mediaDetails);
187191
setFragment(listFragment, mediaDetails);
188192
((MainActivity) getActivity()).showTabs();
193+
if(listFragment instanceof BookmarkPicturesFragment){
194+
GridViewAdapter adapter=((GridViewAdapter)((BookmarkPicturesFragment)listFragment).getAdapter());
195+
Iterator i = removed.iterator();
196+
while (i.hasNext()) {
197+
adapter.remove(adapter.getItem((int)i.next()));
198+
}
199+
mediaDetails.clearRemoved();
200+
201+
}
189202
} else {
190203
moveToContributionsFragment();
191204
}

app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import fr.free.nrw.commons.utils.NetworkUtils;
3737
import fr.free.nrw.commons.utils.ViewUtil;
3838
import io.reactivex.disposables.CompositeDisposable;
39+
import java.util.ArrayList;
3940
import java.util.Objects;
4041
import javax.inject.Inject;
4142
import timber.log.Timber;
@@ -62,6 +63,15 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
6263
private boolean isFromFeaturedRootFragment;
6364
private int position;
6465

66+
private ArrayList<Integer> removedItems=new ArrayList<Integer>();
67+
68+
public void clearRemoved(){
69+
removedItems.clear();
70+
}
71+
public ArrayList<Integer> getRemovedItems() {
72+
return removedItems;
73+
}
74+
6575
public MediaDetailPagerFragment() {
6676
this(false, false);
6777
}
@@ -298,6 +308,16 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
298308

299309
private void updateBookmarkState(MenuItem item) {
300310
boolean isBookmarked = bookmarkDao.findBookmark(bookmark);
311+
if(isBookmarked) {
312+
if(removedItems.contains(pager.getCurrentItem())) {
313+
removedItems.remove(new Integer(pager.getCurrentItem()));
314+
}
315+
}
316+
else {
317+
if(!removedItems.contains(pager.getCurrentItem())) {
318+
removedItems.add(pager.getCurrentItem());
319+
}
320+
}
301321
int icon = isBookmarked ? R.drawable.menu_ic_round_star_filled_24px : R.drawable.menu_ic_round_star_border_24px;
302322
item.setIcon(icon);
303323
}

0 commit comments

Comments
 (0)