Skip to content

Commit 7d8ea51

Browse files
authored
Added bookmark section in not-logged-in version (commons-app#4256)
* added bookmark in not-logged-in version * javadoc * javadoc update * spacing * added unit test
1 parent 4f130e4 commit 7d8ea51

File tree

7 files changed

+119
-12
lines changed

7 files changed

+119
-12
lines changed

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414

1515
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
1616
import fr.free.nrw.commons.explore.ParentViewPager;
17+
import fr.free.nrw.commons.kvstore.JsonKvStore;
1718
import fr.free.nrw.commons.theme.BaseActivity;
1819
import javax.inject.Inject;
1920

2021
import butterknife.BindView;
2122
import butterknife.ButterKnife;
2223
import fr.free.nrw.commons.R;
2324
import fr.free.nrw.commons.contributions.ContributionController;
25+
import javax.inject.Named;
2426

2527
public class BookmarkFragment extends CommonsDaggerSupportFragment {
2628

@@ -35,6 +37,13 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment {
3537

3638
@Inject
3739
ContributionController controller;
40+
/**
41+
* To check if the user is loggedIn or not.
42+
*/
43+
@Inject
44+
@Named("default_preferences")
45+
public
46+
JsonKvStore applicationKvStore;
3847

3948
@NonNull
4049
public static BookmarkFragment newInstance() {
@@ -65,12 +74,26 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
6574
// reference to the Fragment from FragmentManager, using findFragmentById()
6675
supportFragmentManager = getChildFragmentManager();
6776

68-
adapter = new BookmarksPagerAdapter(supportFragmentManager, getContext());
77+
adapter = new BookmarksPagerAdapter(supportFragmentManager, getContext(),
78+
applicationKvStore.getBoolean("login_skipped"));
6979
viewPager.setAdapter(adapter);
7080
tabLayout.setupWithViewPager(viewPager);
81+
setupTabLayout();
7182
return view;
7283
}
7384

85+
/**
86+
* This method sets up the tab layout.
87+
* If the adapter has only one element it sets the visibility of tabLayout to gone.
88+
*/
89+
public void setupTabLayout(){
90+
tabLayout.setVisibility(View.VISIBLE);
91+
if (adapter.getCount() == 1) {
92+
tabLayout.setVisibility(View.GONE);
93+
}
94+
}
95+
96+
7497
public void onBackPressed() {
7598
((BookmarkListRootFragment) (adapter.getItem(tabLayout.getSelectedTabPosition())))
7699
.backPressed();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public void backPressed() {
185185
if(mediaDetails!=null) {
186186
if (mediaDetails.isVisible()) {
187187
// todo add get list fragment
188-
((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.VISIBLE);
188+
((BookmarkFragment) getParentFragment()).setupTabLayout();
189189
ArrayList<Integer> removed=mediaDetails.getRemovedItems();
190190
removeFragment(mediaDetails);
191191
((BookmarkFragment) getParentFragment()).setScroll(true);

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

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ public class BookmarksPagerAdapter extends FragmentPagerAdapter {
1919

2020
private ArrayList<BookmarkPages> pages;
2121

22-
BookmarksPagerAdapter(FragmentManager fm, Context context) {
22+
/**
23+
* Default Constructor
24+
* @param fm
25+
* @param context
26+
* @param onlyPictures is true if the fragment requires only BookmarkPictureFragment
27+
* (i.e. when no user is logged in).
28+
*/
29+
BookmarksPagerAdapter(FragmentManager fm, Context context,boolean onlyPictures) {
2330
super(fm);
2431
pages = new ArrayList<>();
2532
Bundle picturesBundle = new Bundle();
@@ -28,13 +35,16 @@ public class BookmarksPagerAdapter extends FragmentPagerAdapter {
2835
pages.add(new BookmarkPages(
2936
new BookmarkListRootFragment(picturesBundle, this),
3037
context.getString(R.string.title_page_bookmarks_pictures)));
31-
32-
Bundle locationBundle = new Bundle();
33-
locationBundle.putString("categoryName", context.getString(R.string.title_page_bookmarks_locations));
34-
locationBundle.putInt("order", 1);
35-
pages.add(new BookmarkPages(
36-
new BookmarkListRootFragment(locationBundle, this),
37-
context.getString(R.string.title_page_bookmarks_locations)));
38+
if (!onlyPictures) {
39+
// if onlyPictures is false we also add the location fragment.
40+
Bundle locationBundle = new Bundle();
41+
locationBundle.putString("categoryName",
42+
context.getString(R.string.title_page_bookmarks_locations));
43+
locationBundle.putInt("order", 1);
44+
pages.add(new BookmarkPages(
45+
new BookmarkListRootFragment(locationBundle, this),
46+
context.getString(R.string.title_page_bookmarks_locations)));
47+
}
3848
notifyDataSetChanged();
3949
}
4050

app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public void onCreate(Bundle savedInstanceState) {
113113
onSupportNavigateUp();
114114
});
115115
if (applicationKvStore.getBoolean("login_skipped") == true) {
116-
setTitle(getString(R.string.explore_tab_title_mobile));
116+
setTitle(getString(R.string.navigation_item_explore));
117117
setUpLoggedOutPager();
118118
} else {
119119
if(savedInstanceState == null){

app/src/main/java/fr/free/nrw/commons/navtab/NavTabLoggedOut.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import androidx.annotation.StringRes;
66
import androidx.fragment.app.Fragment;
77
import fr.free.nrw.commons.R;
8+
import fr.free.nrw.commons.bookmarks.BookmarkFragment;
89
import fr.free.nrw.commons.explore.ExploreFragment;
910
import org.wikipedia.model.EnumCode;
1011
import org.wikipedia.model.EnumCodeMap;
@@ -19,6 +20,13 @@ public Fragment newInstance() {
1920
return ExploreFragment.newInstance();
2021
}
2122
},
23+
FAVORITES(R.string.favorites, R.drawable.ic_round_star_border_24px) {
24+
@NonNull
25+
@Override
26+
public Fragment newInstance() {
27+
return BookmarkFragment.newInstance();
28+
}
29+
},
2230
MORE(R.string.more, R.drawable.ic_menu_black_24dp) {
2331
@NonNull
2432
@Override

app/src/test/kotlin/fr/free/nrw/commons/bookmarks/BookmarksPagerAdapterTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class BookmarksPagerAdapterTests {
2121
@Before
2222
fun setUp() {
2323
MockitoAnnotations.initMocks(this)
24-
bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context)
24+
bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, false)
2525
}
2626

2727
@Test
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package fr.free.nrw.commons.bookmarks
2+
3+
import android.content.Context
4+
import androidx.fragment.app.FragmentManager
5+
import org.junit.Assert
6+
import org.junit.Before
7+
import org.junit.Test
8+
import org.mockito.Mock
9+
import org.mockito.MockitoAnnotations
10+
11+
/**
12+
* BookmarksPagerAdapter when user is not loggedIn.
13+
*/
14+
class LoggedOutBookmarksPagerAdapterTests {
15+
@Mock
16+
private lateinit var bookmarksPagerAdapter: BookmarksPagerAdapter
17+
18+
@Mock
19+
private lateinit var fragmentManager: FragmentManager
20+
21+
@Mock
22+
private lateinit var context: Context
23+
24+
/**
25+
* Setup the adapter
26+
*/
27+
@Before
28+
fun setUp() {
29+
MockitoAnnotations.initMocks(this)
30+
bookmarksPagerAdapter = BookmarksPagerAdapter(fragmentManager, context, true)
31+
}
32+
33+
/**
34+
* checkNotNull
35+
*/
36+
@Test
37+
fun checkNotNull() {
38+
Assert.assertNotNull(bookmarksPagerAdapter)
39+
}
40+
41+
/**
42+
* getItems
43+
* Logged out bookmark adapter has just one item.
44+
*/
45+
@Test
46+
fun testGetItem() {
47+
bookmarksPagerAdapter.getItem(0)
48+
}
49+
50+
/**
51+
* itemCount
52+
* Logged out bookmark adapter has just one item.
53+
*/
54+
@Test
55+
fun testGetCount() {
56+
Assert.assertEquals(bookmarksPagerAdapter.count, 1)
57+
}
58+
59+
/**
60+
* getTitle.
61+
*/
62+
@Test
63+
fun testGetPageTitle() {
64+
bookmarksPagerAdapter.getPageTitle(0)
65+
}
66+
}

0 commit comments

Comments
 (0)