diff --git a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java index 1f7c0ec4..7e8bfa6d 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java @@ -11,6 +11,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; +import androidx.activity.OnBackPressedCallback; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; @@ -121,6 +122,24 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter }); + requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) { + + @Override + public void handleOnBackPressed() { + if(path.size() == 0 || RepoDetailActivity.mViewPager.getCurrentItem() != 1) { + requireActivity().finish(); + return; + } + path.remove(path.size() - 1); + binding.breadcrumbsView.removeLastItem(); + if(path.size() == 0) { + fetchDataAsync(Authorization.get(getContext()), repoOwner, repoName, ref); + } else { + fetchDataAsyncSub(Authorization.get(getContext()), repoOwner, repoName, path.toString(), ref); + } + } + }); + ((RepoDetailActivity) requireActivity()).setFragmentRefreshListenerFiles(repoBranch -> { path.clear();