fix: filter out files from hidden folders in storage (#283)

Refs: https://github.com/FossifyOrg/File-Manager/issues/217, https://github.com/FossifyOrg/File-Manager/issues/33
This commit is contained in:
Naveen Singh
2025-10-02 12:10:47 +05:30
committed by GitHub
parent f71a4b7f55
commit ab31c828a1
4 changed files with 21 additions and 15 deletions

View File

@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Fixed
- Fixed files from hidden folders showing up in storage tab browser ([#217])
## [1.3.0] - 2025-09-30
### Added

View File

@@ -25,6 +25,7 @@ import org.fossify.filemanager.databinding.ActivityMimetypesBinding
import org.fossify.filemanager.dialogs.ChangeSortingDialog
import org.fossify.filemanager.dialogs.ChangeViewTypeDialog
import org.fossify.filemanager.extensions.config
import org.fossify.filemanager.extensions.isPathInHiddenFolder
import org.fossify.filemanager.extensions.tryOpenPathIntent
import org.fossify.filemanager.helpers.*
import org.fossify.filemanager.interfaces.ItemOperationsListener
@@ -288,7 +289,10 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
try {
val fullMimetype = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) ?: return@queryCursor
val name = cursor.getStringValue(MediaStore.Files.FileColumns.DISPLAY_NAME)
if (!showHidden && name.startsWith(".")) {
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
val isHiddenFile = name.startsWith(".")
if (!showHidden && (isHiddenFile || path.isPathInHiddenFolder())) {
return@queryCursor
}
@@ -297,7 +301,6 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
return@queryCursor
}
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
val lastModified = cursor.getLongValue(MediaStore.Files.FileColumns.DATE_MODIFIED) * 1000
val mimetype = fullMimetype.substringBefore("/")

View File

@@ -1,3 +1,15 @@
package org.fossify.filemanager.extensions
fun String.isZipFile() = endsWith(".zip", true)
fun String.isPathInHiddenFolder(): Boolean {
val parts = split("/")
for (i in 1 until parts.size - 1) {
val part = parts[i]
val isHidden = part.startsWith(".") && part != "." && part != ".." && part.isNotEmpty()
if (isHidden) {
return true
}
}
return false
}

View File

@@ -25,6 +25,7 @@ import org.fossify.filemanager.activities.SimpleActivity
import org.fossify.filemanager.adapters.ItemsAdapter
import org.fossify.filemanager.databinding.RecentsFragmentBinding
import org.fossify.filemanager.extensions.config
import org.fossify.filemanager.extensions.isPathInHiddenFolder
import org.fossify.filemanager.helpers.MAX_COLUMN_COUNT
import org.fossify.filemanager.interfaces.ItemOperationsListener
import org.fossify.filemanager.models.ListItem
@@ -180,7 +181,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
val size = cursor.getLongValue(FileColumns.SIZE)
val modified = cursor.getLongValue(FileColumns.DATE_MODIFIED) * 1000
val isHiddenFile = name.startsWith(".")
val shouldShow = showHidden || (!isHiddenFile && !isPathInHiddenFolder(path))
val shouldShow = showHidden || (!isHiddenFile && !path.isPathInHiddenFolder())
if (shouldShow && activity?.getDoesFilePathExist(path) == true) {
if (wantedMimeTypes.any { isProperMimeType(it, path, false) }) {
val fileDirItem = ListItem(path, name, false, 0, size, modified, false, false)
@@ -199,18 +200,6 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
}
}
private fun isPathInHiddenFolder(path: String): Boolean {
val parts = path.split("/")
for (i in 1 until parts.size - 1) {
val part = parts[i]
val isHidden = part.startsWith(".") && part != "." && part != ".." && part.isNotEmpty()
if (isHidden) {
return true
}
}
return false
}
private fun getRecyclerAdapter() = binding.recentsList.adapter as? ItemsAdapter
override fun toggleFilenameVisibility() {