fix(fileLifeCycle): add missing on_file_deleted with cascading del

on_file_deleted() was missing on folder deletion or on cascading deletion
This commit is contained in:
Edouard Vanbelle
2026-06-25 22:57:31 +02:00
parent 11e34762e3
commit fefba83cfc
6 changed files with 317 additions and 3 deletions
+21
View File
@@ -632,6 +632,21 @@ impl TrashUseCase for TrashService {
// Permanently delete the folder
let folder_id = item.original_id().to_string();
// Snapshot the cascade's file ids BEFORE the bulk
// DELETE so `on_file_deleted` fires per cascaded
// file (same shape as the bulk `clear_trash_in`
// path at line ~804). Skipped when no hook is
// registered — the enumeration is a SQL round-trip
// we don't want to pay for nothing.
let cascaded_file_ids: Vec<String> = if self.file_deleted_hook.is_some() {
self.folder_storage_port
.list_file_ids_in_subtree(&folder_id)
.await
.unwrap_or_default()
} else {
Vec::new()
};
info!("Permanently deleting folder: {}", folder_id);
match self
.folder_storage_port
@@ -666,6 +681,12 @@ impl TrashUseCase for TrashService {
}
}
}
if let Some(hook) = &self.file_deleted_hook {
for file_id in &cascaded_file_ids {
hook.on_file_deleted(file_id);
}
}
}
}