Skip to content

Commit ab31c82

Browse files
authored
fix: filter out files from hidden folders in storage (#283)
Refs: #217, #33
1 parent f71a4b7 commit ab31c82

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Fixed
9+
- Fixed files from hidden folders showing up in storage tab browser ([#217])
810

911
## [1.3.0] - 2025-09-30
1012
### Added

app/src/main/kotlin/org/fossify/filemanager/activities/MimeTypesActivity.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import org.fossify.filemanager.databinding.ActivityMimetypesBinding
2525
import org.fossify.filemanager.dialogs.ChangeSortingDialog
2626
import org.fossify.filemanager.dialogs.ChangeViewTypeDialog
2727
import org.fossify.filemanager.extensions.config
28+
import org.fossify.filemanager.extensions.isPathInHiddenFolder
2829
import org.fossify.filemanager.extensions.tryOpenPathIntent
2930
import org.fossify.filemanager.helpers.*
3031
import org.fossify.filemanager.interfaces.ItemOperationsListener
@@ -288,7 +289,10 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
288289
try {
289290
val fullMimetype = cursor.getStringValue(MediaStore.Files.FileColumns.MIME_TYPE)?.lowercase(Locale.getDefault()) ?: return@queryCursor
290291
val name = cursor.getStringValue(MediaStore.Files.FileColumns.DISPLAY_NAME)
291-
if (!showHidden && name.startsWith(".")) {
292+
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
293+
294+
val isHiddenFile = name.startsWith(".")
295+
if (!showHidden && (isHiddenFile || path.isPathInHiddenFolder())) {
292296
return@queryCursor
293297
}
294298

@@ -297,7 +301,6 @@ class MimeTypesActivity : SimpleActivity(), ItemOperationsListener {
297301
return@queryCursor
298302
}
299303

300-
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA)
301304
val lastModified = cursor.getLongValue(MediaStore.Files.FileColumns.DATE_MODIFIED) * 1000
302305

303306
val mimetype = fullMimetype.substringBefore("/")
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
11
package org.fossify.filemanager.extensions
22

33
fun String.isZipFile() = endsWith(".zip", true)
4+
5+
fun String.isPathInHiddenFolder(): Boolean {
6+
val parts = split("/")
7+
for (i in 1 until parts.size - 1) {
8+
val part = parts[i]
9+
val isHidden = part.startsWith(".") && part != "." && part != ".." && part.isNotEmpty()
10+
if (isHidden) {
11+
return true
12+
}
13+
}
14+
return false
15+
}

app/src/main/kotlin/org/fossify/filemanager/fragments/RecentsFragment.kt

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import org.fossify.filemanager.activities.SimpleActivity
2525
import org.fossify.filemanager.adapters.ItemsAdapter
2626
import org.fossify.filemanager.databinding.RecentsFragmentBinding
2727
import org.fossify.filemanager.extensions.config
28+
import org.fossify.filemanager.extensions.isPathInHiddenFolder
2829
import org.fossify.filemanager.helpers.MAX_COLUMN_COUNT
2930
import org.fossify.filemanager.interfaces.ItemOperationsListener
3031
import org.fossify.filemanager.models.ListItem
@@ -180,7 +181,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
180181
val size = cursor.getLongValue(FileColumns.SIZE)
181182
val modified = cursor.getLongValue(FileColumns.DATE_MODIFIED) * 1000
182183
val isHiddenFile = name.startsWith(".")
183-
val shouldShow = showHidden || (!isHiddenFile && !isPathInHiddenFolder(path))
184+
val shouldShow = showHidden || (!isHiddenFile && !path.isPathInHiddenFolder())
184185
if (shouldShow && activity?.getDoesFilePathExist(path) == true) {
185186
if (wantedMimeTypes.any { isProperMimeType(it, path, false) }) {
186187
val fileDirItem = ListItem(path, name, false, 0, size, modified, false, false)
@@ -199,18 +200,6 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
199200
}
200201
}
201202

202-
private fun isPathInHiddenFolder(path: String): Boolean {
203-
val parts = path.split("/")
204-
for (i in 1 until parts.size - 1) {
205-
val part = parts[i]
206-
val isHidden = part.startsWith(".") && part != "." && part != ".." && part.isNotEmpty()
207-
if (isHidden) {
208-
return true
209-
}
210-
}
211-
return false
212-
}
213-
214203
private fun getRecyclerAdapter() = binding.recentsList.adapter as? ItemsAdapter
215204

216205
override fun toggleFilenameVisibility() {

0 commit comments

Comments
 (0)