diff --git a/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerFragment.kt b/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerFragment.kt index ac21c3f..27166dd 100644 --- a/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerFragment.kt +++ b/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerFragment.kt @@ -306,6 +306,10 @@ open class ArkFilePickerFragment : FilePickerSideEffect.CannotPinFile -> { activity?.toast(R.string.ark_file_picker_pin_folder_only) } + + FilePickerSideEffect.NestedRootProhibited -> { + activity?.toast(R.string.ark_file_nested_root_inside) + } } diff --git a/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerViewModel.kt b/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerViewModel.kt index 19d4b1b..cd01b1a 100644 --- a/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerViewModel.kt +++ b/filepicker/src/main/java/dev/arkbuilders/components/filepicker/ArkFilePickerViewModel.kt @@ -44,6 +44,7 @@ internal sealed class FilePickerSideEffect { data object AlreadyFavorite : FilePickerSideEffect() data object PinAsFirstRoot : FilePickerSideEffect() data object CannotPinFile : FilePickerSideEffect() + data object NestedRootProhibited : FilePickerSideEffect() } @@ -190,6 +191,17 @@ internal class ArkFilePickerViewModel( val roots = rootsWithFavorites.keys val root = roots.find { root -> file.startsWith(root) } val favorites = rootsWithFavorites[root]?.flatten() + + val hasNestedRoot = roots.contains(file) + || (roots.indexOfFirst { path -> + val index = path.toString().indexOf(file.toString()) + (index >= 0) && (path.toString()[index] == '/') } >= 0) + + if (hasNestedRoot) { + postSideEffect(FilePickerSideEffect.NestedRootProhibited) + return@intent + } + val haveRoot = haveRoot() root?.let { diff --git a/filepicker/src/main/res/values/strings.xml b/filepicker/src/main/res/values/strings.xml index e7f016e..20116db 100644 --- a/filepicker/src/main/res/values/strings.xml +++ b/filepicker/src/main/res/values/strings.xml @@ -16,6 +16,7 @@ Already be a Favorite folder! Already be a Root folder! Only folder can be pinned. + There\'s already nested root(s) inside. Pin %d item