Fixed: After canceling a sharing, application goes back to the search menu #2296 (#5156)

* fixed:After canceling a sharing, application goes back to the search menu #2296

* fixed:After canceling a sharing, application goes back to the search menu #2296

* fixed:After canceling a sharing, application goes back to the search menu #2296

* fixed SeachActivityUnityTest failure when calling testOnBackPressed and cleaned up unnecessary code
This commit is contained in:
Arman Navodia 2023-02-27 12:12:20 +05:30 committed by GitHub
parent 7d895c4379
commit 94d462cafb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 4 deletions

View file

@ -222,7 +222,6 @@ public class SearchActivity extends BaseActivity
if (mediaDetails == null || !mediaDetails.isVisible()) {
// set isFeaturedImage true for featured images, to include author field on media detail
mediaDetails = new MediaDetailPagerFragment(false, true);
FragmentManager supportFragmentManager = getSupportFragmentManager();
supportFragmentManager
.beginTransaction()
.hide(supportFragmentManager.getFragments().get(supportFragmentManager.getBackStackEntryCount()))
@ -258,13 +257,23 @@ public class SearchActivity extends BaseActivity
*/
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 1){
//Remove the backstack entry that gets added when share button is clicked
//fixing:https://github.com/commons-app/apps-android-commons/issues/2296
if (getSupportFragmentManager().getBackStackEntryCount() == 2) {
supportFragmentManager
.beginTransaction()
.remove(mediaDetails)
.commit();
supportFragmentManager.popBackStack();
supportFragmentManager.executePendingTransactions();
}
if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
// back to search so show search toolbar and hide navigation toolbar
searchView.setVisibility(View.VISIBLE);//set the searchview
tabLayout.setVisibility(View.VISIBLE);
viewPager.setVisibility(View.VISIBLE);
mediaContainer.setVisibility(View.GONE);
}else {
} else {
toolbar.setVisibility(View.GONE);
}
super.onBackPressed();

View file

@ -188,6 +188,18 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, m.getDisplayTitle() + " \n" + m.getPageTitle().getCanonicalUri());
startActivity(Intent.createChooser(shareIntent, "Share image via..."));
//Add media detail to backstack when the share button is clicked
//So that when the share is cancelled or completed the media detail page is on top
// of back stack fixing:https://github.com/commons-app/apps-android-commons/issues/2296
FragmentManager supportFragmentManager = getActivity().getSupportFragmentManager();
if (supportFragmentManager.getBackStackEntryCount() < 2) {
supportFragmentManager
.beginTransaction()
.addToBackStack(MediaDetailPagerFragment.class.getName())
.commit();
supportFragmentManager.executePendingTransactions();
}
return true;
case R.id.menu_browser_current_image:
// View in browser

View file

@ -26,6 +26,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.times
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.api.mockito.PowerMockito.mock
@ -124,7 +125,7 @@ class SearchActivityUnitTests {
`when`(mFragments.supportFragmentManager).thenReturn(supportFragmentManager)
`when`(supportFragmentManager.backStackEntryCount).thenReturn(0)
activity.onBackPressed()
verify(supportFragmentManager).backStackEntryCount
verify(supportFragmentManager, times(2)).backStackEntryCount
}
@Test