mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 21:03:54 +01:00
Fix location permission prompt in Uploaded via Mobile screen (#5549)
This commit is contained in:
parent
eb617ae8ca
commit
09975aa8c3
2 changed files with 42 additions and 29 deletions
|
|
@ -27,6 +27,9 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
public class ExploreFragment extends CommonsDaggerSupportFragment {
|
public class ExploreFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
|
|
@ -41,6 +44,7 @@ public class ExploreFragment extends CommonsDaggerSupportFragment {
|
||||||
private ExploreListRootFragment featuredRootFragment;
|
private ExploreListRootFragment featuredRootFragment;
|
||||||
private ExploreListRootFragment mobileRootFragment;
|
private ExploreListRootFragment mobileRootFragment;
|
||||||
private ExploreMapRootFragment mapRootFragment;
|
private ExploreMapRootFragment mapRootFragment;
|
||||||
|
private MenuItem othersMenuItem;
|
||||||
@Inject
|
@Inject
|
||||||
@Named("default_preferences")
|
@Named("default_preferences")
|
||||||
public JsonKvStore applicationKvStore;
|
public JsonKvStore applicationKvStore;
|
||||||
|
|
@ -84,18 +88,31 @@ public class ExploreFragment extends CommonsDaggerSupportFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
if (position == 2) {
|
// Control scrolling behavior
|
||||||
binding.viewPager.setCanScroll(false);
|
if (position == 2) {
|
||||||
} else {
|
binding.viewPager.setCanScroll(false);
|
||||||
binding.viewPager.setCanScroll(true);
|
// Request location permission only for the Map tab
|
||||||
|
if (mapRootFragment != null) {
|
||||||
|
mapRootFragment.requestLocationPermission();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
binding.viewPager.setCanScroll(true);
|
||||||
}
|
}
|
||||||
|
// Update menu item visibility
|
||||||
|
if (othersMenuItem != null) {
|
||||||
|
othersMenuItem.setVisible(position == 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrollStateChanged(int state) {
|
public void onPageScrollStateChanged(int state) {
|
||||||
|
if (state == SCROLL_STATE_IDLE && binding.viewPager.getCurrentItem() == 2) {
|
||||||
|
if (othersMenuItem != null) {
|
||||||
|
othersMenuItem.setVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
setTabs();
|
setTabs();
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
|
|
@ -199,35 +216,18 @@ public class ExploreFragment extends CommonsDaggerSupportFragment {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
// if logged in 'Show in Nearby' menu item is visible
|
// If logged in, 'Show in Nearby' menu item is visible
|
||||||
if (applicationKvStore.getBoolean("login_skipped") == false) {
|
if (applicationKvStore.getBoolean("login_skipped") == false) {
|
||||||
inflater.inflate(R.menu.explore_fragment_menu, menu);
|
inflater.inflate(R.menu.explore_fragment_menu, menu);
|
||||||
|
|
||||||
MenuItem others = menu.findItem(R.id.list_item_show_in_nearby);
|
othersMenuItem = menu.findItem(R.id.list_item_show_in_nearby);
|
||||||
|
|
||||||
|
// Set initial visibility based on the current tab
|
||||||
if (binding.viewPager.getCurrentItem() == 2) {
|
if (binding.viewPager.getCurrentItem() == 2) {
|
||||||
others.setVisible(true);
|
othersMenuItem.setVisible(true);
|
||||||
|
} else {
|
||||||
|
othersMenuItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if on Map tab, show all menu options, else only show search
|
|
||||||
binding.viewPager.addOnPageChangeListener(new OnPageChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void onPageScrolled(int position, float positionOffset,
|
|
||||||
int positionOffsetPixels) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPageSelected(int position) {
|
|
||||||
others.setVisible((position == 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPageScrollStateChanged(int state) {
|
|
||||||
if (state == SCROLL_STATE_IDLE && binding.viewPager.getCurrentItem() == 2) {
|
|
||||||
onPageSelected(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
inflater.inflate(R.menu.menu_search, menu);
|
inflater.inflate(R.menu.menu_search, menu);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,9 @@ import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
||||||
import fr.free.nrw.commons.explore.map.ExploreMapFragment;
|
import fr.free.nrw.commons.explore.map.ExploreMapFragment;
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
|
||||||
import fr.free.nrw.commons.navtab.NavTab;
|
import fr.free.nrw.commons.navtab.NavTab;
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
public class ExploreMapRootFragment extends CommonsDaggerSupportFragment implements
|
public class ExploreMapRootFragment extends CommonsDaggerSupportFragment implements
|
||||||
MediaDetailPagerFragment.MediaDetailProvider, CategoryImagesCallback {
|
MediaDetailPagerFragment.MediaDetailProvider, CategoryImagesCallback {
|
||||||
|
|
@ -49,6 +52,9 @@ public class ExploreMapRootFragment extends CommonsDaggerSupportFragment impleme
|
||||||
Bundle featuredArguments = new Bundle();
|
Bundle featuredArguments = new Bundle();
|
||||||
featuredArguments.putString("categoryName", title);
|
featuredArguments.putString("categoryName", title);
|
||||||
|
|
||||||
|
// a flag to prevent automatic permission requests during initialization
|
||||||
|
featuredArguments.putBoolean("request_permission_on_start", false);
|
||||||
|
|
||||||
// if we came from 'Show in Explore' in Nearby, pass on zoom and center
|
// if we came from 'Show in Explore' in Nearby, pass on zoom and center
|
||||||
if (zoom != 0.0 || latitude != 0.0 || longitude != 0.0) {
|
if (zoom != 0.0 || latitude != 0.0 || longitude != 0.0) {
|
||||||
featuredArguments.putDouble("prev_zoom", zoom);
|
featuredArguments.putDouble("prev_zoom", zoom);
|
||||||
|
|
@ -230,6 +236,13 @@ public class ExploreMapRootFragment extends CommonsDaggerSupportFragment impleme
|
||||||
mapFragment.loadNearbyMapFromExplore();
|
mapFragment.loadNearbyMapFromExplore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void requestLocationPermission() {
|
||||||
|
if (mapFragment != null) {
|
||||||
|
// Delegate the permission request to ExploreMapFragment
|
||||||
|
mapFragment.requestLocationPermission();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue