diff --git a/app/build.gradle b/app/build.gradle index 6d8991e..2980604 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.folderredirect.app" minSdk 26 targetSdk 34 - versionCode 2 - versionName "1.1.0" + versionCode 3 + versionName "1.1.1" } buildTypes { diff --git a/app/src/main/java/com/folderredirect/app/FileMoveWorker.kt b/app/src/main/java/com/folderredirect/app/FileMoveWorker.kt index e598af9..a355136 100644 --- a/app/src/main/java/com/folderredirect/app/FileMoveWorker.kt +++ b/app/src/main/java/com/folderredirect/app/FileMoveWorker.kt @@ -119,6 +119,7 @@ class FileMoveWorker(appContext: Context, params: WorkerParameters) : CoroutineW val totalFiles = filesToProcess.size if (totalFiles == 0) { + deleteEmptyFoldersRecursively(sourceDir) rulesManager.updateImmichRuleProgress(rule.id, 100) sendProgressUpdate() return@withContext 0 @@ -175,6 +176,8 @@ class FileMoveWorker(appContext: Context, params: WorkerParameters) : CoroutineW sendProgressUpdate() } + deleteEmptyFoldersRecursively(sourceDir) + return@withContext count } catch (e: Exception) { Log.e(TAG, "Error procesando regla Immich: ${e.message}") @@ -186,6 +189,9 @@ class FileMoveWorker(appContext: Context, params: WorkerParameters) : CoroutineW private fun deleteEmptyParentFoldersImmich(folder: File?, baseFolder: File) = FileUtils.deleteEmptyParentFolders(folder, baseFolder) + private fun deleteEmptyFoldersRecursively(baseFolder: File) = + FileUtils.deleteEmptyFoldersRecursively(baseFolder) + private fun getAllFilesRecursively(dir: File): List = FileUtils.getAllFilesRecursively(dir) diff --git a/app/src/main/java/com/folderredirect/app/FileUtils.kt b/app/src/main/java/com/folderredirect/app/FileUtils.kt index 5ee3505..fa3a9ca 100644 --- a/app/src/main/java/com/folderredirect/app/FileUtils.kt +++ b/app/src/main/java/com/folderredirect/app/FileUtils.kt @@ -47,6 +47,20 @@ object FileUtils { } } + fun deleteEmptyFoldersRecursively(baseFolder: File) { + if (!baseFolder.exists() || !baseFolder.isDirectory) return + val children = baseFolder.listFiles() ?: return + for (child in children) { + if (child.isDirectory) { + deleteEmptyFoldersRecursively(child) + if (child.exists() && child.listFiles()?.isEmpty() == true) { + child.delete() + Log.d(TAG, "Carpeta vacĂ­a eliminada: ${child.absolutePath}") + } + } + } + } + fun getAllFilesRecursively(dir: File): List { val files = mutableListOf() dir.listFiles()?.forEach { file ->