diff --git a/CHANGELOG.md b/CHANGELOG.md index 949f016a..3af47ee7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/app/src/main/kotlin/org/fossify/filemanager/activities/MimeTypesActivity.kt b/app/src/main/kotlin/org/fossify/filemanager/activities/MimeTypesActivity.kt index 24a41f2f..9febd299 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/activities/MimeTypesActivity.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/activities/MimeTypesActivity.kt @@ -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("/") diff --git a/app/src/main/kotlin/org/fossify/filemanager/extensions/String.kt b/app/src/main/kotlin/org/fossify/filemanager/extensions/String.kt index ef1eea11..9b688810 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/extensions/String.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/extensions/String.kt @@ -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 +} diff --git a/app/src/main/kotlin/org/fossify/filemanager/fragments/RecentsFragment.kt b/app/src/main/kotlin/org/fossify/filemanager/fragments/RecentsFragment.kt index af0da889..910877a9 100644 --- a/app/src/main/kotlin/org/fossify/filemanager/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/org/fossify/filemanager/fragments/RecentsFragment.kt @@ -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() {