diff --git a/src/main/kotlin/com/bolenpad/photophetch/ui/AppState.kt b/src/main/kotlin/com/bolenpad/photophetch/ui/AppState.kt index 52064b7..0bdec60 100644 --- a/src/main/kotlin/com/bolenpad/photophetch/ui/AppState.kt +++ b/src/main/kotlin/com/bolenpad/photophetch/ui/AppState.kt @@ -296,6 +296,7 @@ class AppState(private val configStore: ConfigStore) { val zoneId = java.time.ZoneId.systemDefault() return photos .groupBy { it.sourceFolder } + .filterKeys { !ExifFilter.isHiddenFolder(it) } // hide Live Photo MOV folder .map { (name, folderPhotos) -> val dates = folderPhotos.map { it.dateTaken.atZone(zoneId).toLocalDate() diff --git a/src/main/kotlin/com/bolenpad/photophetch/ui/BrowseScreen.kt b/src/main/kotlin/com/bolenpad/photophetch/ui/BrowseScreen.kt index abb91d8..9f49d87 100644 --- a/src/main/kotlin/com/bolenpad/photophetch/ui/BrowseScreen.kt +++ b/src/main/kotlin/com/bolenpad/photophetch/ui/BrowseScreen.kt @@ -134,7 +134,8 @@ fun BrowseScreen(state: AppState) { private fun buildFolderSections(pl: PhotoListState.Loaded): List { val zoneId = ZoneId.systemDefault() - return pl.folders.map { folder -> + return pl.folders // already filtered by buildFolderList (no hidden folders) + .map { folder -> val photos = pl.all .filter { it.sourceFolder == folder.name } .sortedByDescending { it.dateTaken } diff --git a/src/main/kotlin/com/bolenpad/photophetch/util/ExifFilter.kt b/src/main/kotlin/com/bolenpad/photophetch/util/ExifFilter.kt index 15e0863..431a2dd 100644 --- a/src/main/kotlin/com/bolenpad/photophetch/util/ExifFilter.kt +++ b/src/main/kotlin/com/bolenpad/photophetch/util/ExifFilter.kt @@ -114,6 +114,14 @@ object ExifFilter { screenshotFilePrefixes.none { lower.startsWith(it) } } + /** + * Folders that should be completely hidden from the UI (not even in Other). + * Live Photo companions are proven by the LIVE badge on the HEIC — showing + * the MOVs separately adds noise with unverifiable placeholder thumbnails. + */ + fun isHiddenFolder(folderName: String): Boolean = + folderName == "Live Photo" + /** * Returns photos that are HEIC files (and not Live Photo motion clips). * Used to determine whether to show the HEIC conversion warning.