Skip to content

Commit 08c940e

Browse files
committed
feat: add back gesture to go up a folder instead of closing app
1 parent 5e9c4ee commit 08c940e

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

‎owncloudApp/src/main/java/com/owncloud/android/presentation/files/filelist/MainFileListFragment.kt‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import android.widget.ImageView
4444
import android.widget.LinearLayout
4545
import android.widget.TextView
4646
import androidx.appcompat.app.AlertDialog
47+
import androidx.activity.OnBackPressedCallback
4748
import androidx.appcompat.app.AppCompatActivity
4849
import androidx.appcompat.view.ActionMode
4950
import androidx.appcompat.widget.SearchView
@@ -73,6 +74,7 @@ import com.owncloud.android.domain.exceptions.TooEarlyException
7374
import com.owncloud.android.domain.files.model.FileListOption
7475
import com.owncloud.android.domain.files.model.FileMenuOption
7576
import com.owncloud.android.domain.files.model.OCFile
77+
import com.owncloud.android.domain.files.model.OCFile.Companion.ROOT_PARENT_ID
7678
import com.owncloud.android.domain.files.model.OCFile.Companion.ROOT_PATH
7779
import com.owncloud.android.domain.files.model.OCFileSyncInfo
7880
import 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

Comments
 (0)