#4730 - Nothing happens on clicking media in the Contribution tab of User's Profile (#4736)

* enable clicking on contributions in user's profile

* Added null condition

* Added Comments

Co-authored-by: Pratham2305 <Pratham2305@users.noreply.github.com>
This commit is contained in:
Pratham Pahariya 2022-04-18 18:47:40 +05:30 committed by GitHub
parent 7579c1aa16
commit d7ad3b934d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 76 additions and 19 deletions

View file

@ -3,6 +3,7 @@ package fr.free.nrw.commons.contributions;
import static fr.free.nrw.commons.contributions.Contribution.STATE_FAILED;
import static fr.free.nrw.commons.contributions.Contribution.STATE_PAUSED;
import static fr.free.nrw.commons.nearby.fragments.NearbyParentFragment.WLM_URL;
import static fr.free.nrw.commons.profile.ProfileActivity.KEY_USERNAME;
import static fr.free.nrw.commons.utils.LengthUtils.formatDistanceBetween;
import android.Manifest;
@ -30,6 +31,7 @@ import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.notification.Notification;
import fr.free.nrw.commons.notification.NotificationController;
import fr.free.nrw.commons.profile.ProfileActivity;
import fr.free.nrw.commons.theme.BaseActivity;
import java.text.ParseException;
import java.util.Date;
@ -113,6 +115,9 @@ public class ContributionsFragment
private Campaign wlmCampaign;
String userName;
private boolean isUserProfile;
@NonNull
public static ContributionsFragment newInstance() {
ContributionsFragment fragment = new ContributionsFragment();
@ -125,6 +130,10 @@ public class ContributionsFragment
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null && getArguments().getString(KEY_USERNAME) != null) {
userName = getArguments().getString(KEY_USERNAME);
isUserProfile = true;
}
}
@Nullable
@ -154,7 +163,11 @@ public class ContributionsFragment
}
initFragments();
upDateUploadCount();
if(isUserProfile) {
limitedConnectionEnabledLayout.setVisibility(View.GONE);
}else {
upDateUploadCount();
}
if(shouldShowMediaDetailsFragment){
showMediaDetailPagerFragment();
}else{
@ -165,7 +178,7 @@ public class ContributionsFragment
}
if (!ConfigUtils.isBetaFlavour() && sessionManager.isUserLoggedIn()
&& sessionManager.getCurrentAccount() != null) {
&& sessionManager.getCurrentAccount() != null && !isUserProfile) {
setUploadCount();
}
limitedConnectionEnabledLayout.setOnClickListener(toggleDescriptionListener);
@ -269,7 +282,7 @@ public class ContributionsFragment
*/
private void showContributionsListFragment() {
// show nearby card view on contributions list is visible
if (nearbyNotificationCardView != null) {
if (nearbyNotificationCardView != null && !isUserProfile) {
if (store.getBoolean("displayNearbyCardView", true)) {
if (nearbyNotificationCardView.cardViewVisibilityState
== NearbyNotificationCardView.CardViewVisibilityState.READY) {
@ -301,6 +314,9 @@ public class ContributionsFragment
private void initFragments() {
if (null == contributionsListFragment) {
contributionsListFragment = new ContributionsListFragment();
Bundle contributionsListBundle = new Bundle();
contributionsListBundle.putString(KEY_USERNAME, userName);
contributionsListFragment.setArguments(contributionsListBundle);
}
if (shouldShowMediaDetailsFragment) {
@ -398,7 +414,7 @@ public class ContributionsFragment
});
// Notification cards should only be seen on contributions list, not in media details
if (mediaDetailPagerFragment == null) {
if (mediaDetailPagerFragment == null && !isUserProfile) {
if (store.getBoolean("displayNearbyCardView", true)) {
checkPermissionsAndShowNearbyCardView();
if (nearbyNotificationCardView.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) {
@ -410,8 +426,11 @@ public class ContributionsFragment
nearbyNotificationCardView.setVisibility(View.GONE);
}
setNotificationCount();
fetchCampaigns();
// Notification Count and Campaigns should not be set, if it is used in User Profile
if(!isUserProfile) {
setNotificationCount();
fetchCampaigns();
}
}
}
@ -549,7 +568,7 @@ public class ContributionsFragment
}
@Override public void showCampaigns(Campaign campaign) {
if (campaign != null) {
if (campaign != null && !isUserProfile) {
campaignView.setCampaign(campaign);
}
}
@ -619,6 +638,9 @@ public class ContributionsFragment
public void showDetail(int position, boolean isWikipediaButtonDisplayed) {
if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) {
mediaDetailPagerFragment = new MediaDetailPagerFragment();
if(isUserProfile) {
((ProfileActivity)getActivity()).setScroll(false);
}
showMediaDetailPagerFragment();
}
mediaDetailPagerFragment.showImage(position, isWikipediaButtonDisplayed);
@ -641,7 +663,7 @@ public class ContributionsFragment
public boolean backButtonClicked() {
if (null != mediaDetailPagerFragment && mediaDetailPagerFragment.isVisible()) {
if (store.getBoolean("displayNearbyCardView", true)) {
if (store.getBoolean("displayNearbyCardView", true) && !isUserProfile) {
if (nearbyNotificationCardView.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) {
nearbyNotificationCardView.setVisibility(View.VISIBLE);
}
@ -650,9 +672,17 @@ public class ContributionsFragment
}
removeFragment(mediaDetailPagerFragment);
showFragment(contributionsListFragment, CONTRIBUTION_LIST_FRAGMENT_TAG, mediaDetailPagerFragment);
((BaseActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false);
((MainActivity)getActivity()).showTabs();
fetchCampaigns();
if(isUserProfile) {
// Fragment is associated with ProfileActivity
// Enable ParentViewPager Scroll
((ProfileActivity)getActivity()).setScroll(true);
}else {
fetchCampaigns();
}
if(getActivity() instanceof MainActivity) {
// Fragment is associated with MainActivity
((MainActivity)getActivity()).showTabs();
}
return true;
}
return false;

View file

@ -201,6 +201,10 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
contributionsSize = adapter.getItemCount();
if (callback != null) {
callback.notifyDataSetChanged();
}
if (itemCount > 0 && positionStart == 0) {
if (adapter.getContributionForPosition(positionStart) != null) {
rvContributionsList

View file

@ -103,7 +103,6 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
pager.addOnPageChangeListener(this);
adapter = new MediaDetailAdapter(getChildFragmentManager());
((BaseActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (getActivity() != null) {
final ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
@ -112,6 +111,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
}
}
// If fragment is associated with ProfileActivity, then hide the tabLayout
if (getActivity() instanceof ProfileActivity) {
((ProfileActivity)getActivity()).tabLayout.setVisibility(View.GONE);
}
pager.setAdapter(adapter);
if (savedInstanceState != null) {

View file

@ -73,7 +73,7 @@ public class NearbyNotificationCardView extends SwipableCardView {
protected void onAttachedToWindow() {
super.onAttachedToWindow();
// If you don't setVisibility after getting layout params, then you will se an empty space in place of nearby NotificationCardView
if (((MainActivity)getContext()).defaultKvStore.getBoolean("displayNearbyCardView", true) && this.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) {
if (getContext() instanceof MainActivity && ((MainActivity)getContext()).defaultKvStore.getBoolean("displayNearbyCardView", true) && this.cardViewVisibilityState == NearbyNotificationCardView.CardViewVisibilityState.READY) {
setVisibility(VISIBLE);
} else {
setVisibility(GONE);

View file

@ -26,7 +26,9 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.ViewPagerAdapter;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.contributions.ContributionsFragment;
import fr.free.nrw.commons.contributions.ContributionsListFragment;
import fr.free.nrw.commons.explore.ParentViewPager;
import fr.free.nrw.commons.profile.achievements.AchievementsFragment;
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment;
import fr.free.nrw.commons.theme.BaseActivity;
@ -46,10 +48,10 @@ public class ProfileActivity extends BaseActivity {
private FragmentManager supportFragmentManager;
@BindView(R.id.viewPager)
ViewPager viewPager;
ParentViewPager viewPager;
@BindView(R.id.tab_layout)
TabLayout tabLayout;
public TabLayout tabLayout;
@Inject
SessionManager sessionManager;
@ -64,6 +66,11 @@ public class ProfileActivity extends BaseActivity {
String userName;
private boolean shouldShowContributions;
ContributionsFragment contributionsFragment;
public void setScroll(boolean canScroll){
viewPager.setCanScroll(canScroll);
}
@Override
protected void onRestoreInstanceState(final Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
@ -137,11 +144,11 @@ public class ProfileActivity extends BaseActivity {
titleList.add(getResources().getString(R.string.leaderboard_tab_title).toUpperCase());
if (shouldShowContributions) {
ContributionsListFragment contributionsListFragment = new ContributionsListFragment();
contributionsFragment = new ContributionsFragment();
Bundle contributionsListBundle = new Bundle();
contributionsListBundle.putString(KEY_USERNAME, userName);
contributionsListFragment.setArguments(contributionsListBundle);
fragmentList.add(contributionsListFragment);
contributionsFragment.setArguments(contributionsListBundle);
fragmentList.add(contributionsFragment);
titleList.add(getString(R.string.contributions_fragment).toUpperCase());
}
viewPagerAdapter.setTabData(fragmentList, titleList);
@ -232,6 +239,18 @@ public class ProfileActivity extends BaseActivity {
@Override
protected void onSaveInstanceState(@NonNull final Bundle outState) {
outState.putString(KEY_USERNAME, userName);
outState.putBoolean(KEY_SHOULD_SHOW_CONTRIBUTIONS, shouldShowContributions);
super.onSaveInstanceState(outState);
}
@Override
public void onBackPressed() {
// Checking if MediaDetailPagerFragment is visible, If visible then show ContributionListFragment else close the ProfileActivity
if(contributionsFragment != null && contributionsFragment.getMediaDetailPagerFragment() != null && contributionsFragment.getMediaDetailPagerFragment().isVisible()) {
contributionsFragment.backButtonClicked();
tabLayout.setVisibility(View.VISIBLE);
}else {
super.onBackPressed();
}
}
}

View file

@ -27,7 +27,7 @@
app:tabTextColor="?attr/tabTextColor" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
<fr.free.nrw.commons.explore.ParentViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"