@@ -44,6 +44,7 @@ import android.widget.ImageView
4444import android.widget.LinearLayout
4545import android.widget.TextView
4646import androidx.appcompat.app.AlertDialog
47+ import androidx.activity.OnBackPressedCallback
4748import androidx.appcompat.app.AppCompatActivity
4849import androidx.appcompat.view.ActionMode
4950import androidx.appcompat.widget.SearchView
@@ -73,6 +74,7 @@ import com.owncloud.android.domain.exceptions.TooEarlyException
7374import com.owncloud.android.domain.files.model.FileListOption
7475import com.owncloud.android.domain.files.model.FileMenuOption
7576import com.owncloud.android.domain.files.model.OCFile
77+ import com.owncloud.android.domain.files.model.OCFile.Companion.ROOT_PARENT_ID
7678import com.owncloud.android.domain.files.model.OCFile.Companion.ROOT_PATH
7779import com.owncloud.android.domain.files.model.OCFileSyncInfo
7880import com.owncloud.android.domain.files.model.OCFileWithSyncInfo
@@ -181,6 +183,17 @@ class MainFileListFragment : Fragment(),
181183
182184 private var isMultiPersonal = false
183185
186+ private val onBackPressedCallback = object : OnBackPressedCallback (false ) {
187+ override fun handleOnBackPressed () {
188+ if (isFabExpanded()) {
189+ collapseFab()
190+ setFabMainContentDescription()
191+ } else {
192+ onBrowseUp()
193+ }
194+ }
195+ }
196+
184197 private var menu: Menu ? = null
185198 private var checkedFiles: List <OCFile > = emptyList()
186199 private var filesToRemove: List <OCFile > = emptyList()
@@ -325,6 +338,7 @@ class MainFileListFragment : Fragment(),
325338 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
326339 super .onViewCreated(view, savedInstanceState)
327340 isMultiPersonal = capabilityViewModel.checkMultiPersonal()
341+ requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, onBackPressedCallback)
328342 initViews()
329343 subscribeToViewModels()
330344 }
@@ -518,6 +532,7 @@ class MainFileListFragment : Fragment(),
518532
519533 private fun observeCurrentFolderDisplayed () {
520534 collectLatestLifecycleFlow(mainFileListViewModel.currentFolderDisplayed) { currentFolderDisplayed: OCFile ->
535+ onBackPressedCallback.isEnabled = currentFolderDisplayed.parentId != ROOT_PARENT_ID
521536 fileActions?.onCurrentFolderUpdated(currentFolderDisplayed, mainFileListViewModel.getSpace())
522537 val fileListOption = mainFileListViewModel.fileListOption.value
523538 val refreshFolderNeeded = fileListOption.isAllFiles() ||
0 commit comments