feat: view folder's content in trash
- [x] I have disclosed use of any AI generated code in my commit messages. - If you are using an LLM, and do not fully understand the changes it is making to the code base, do not create a PR. - In our experience, AI generated code often results in overly complex code that lacks enough context for a proper fix or feature inclusion. This results in considerably longer code reviews. Due to this, AI authored or partially authored PRs may be closed without comment. - [x] I understand these changes in full and will be able to respond to review comments. - [x] My change is accurately described in the commit message. - [x] My contribution is tested and working as described. - [x] I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions.
This commit is contained in:
parent
50deb28a11
commit
49107187a4
6 changed files with 154 additions and 29 deletions
|
|
@ -1156,10 +1156,26 @@ impl Operation {
|
|||
|
||||
paths.push(item.original_path());
|
||||
|
||||
compio::runtime::spawn_blocking(|| trash::os_limited::restore_all([item]))
|
||||
.await
|
||||
.map_err(wrap_compio_spawn_error)?
|
||||
.map_err(|e| OperationError::from_err(e, &controller))?;
|
||||
// Items with .trashinfo id use standard restore; sub-items use manual move
|
||||
if item
|
||||
.id
|
||||
.to_str()
|
||||
.map_or(false, |s| s.ends_with(".trashinfo"))
|
||||
{
|
||||
compio::runtime::spawn_blocking(|| trash::os_limited::restore_all([item]))
|
||||
.await
|
||||
.map_err(wrap_compio_spawn_error)?
|
||||
.map_err(|e| OperationError::from_err(e, &controller))?;
|
||||
} else {
|
||||
let from = PathBuf::from(&item.id);
|
||||
let to = item.original_path();
|
||||
if let Some(parent) = to.parent() {
|
||||
std::fs::create_dir_all(parent)
|
||||
.map_err(|e| OperationError::from_err(e, &controller))?;
|
||||
}
|
||||
std::fs::rename(&from, &to)
|
||||
.map_err(|e| OperationError::from_err(e, &controller))?;
|
||||
}
|
||||
}
|
||||
Ok(OperationSelection {
|
||||
ignored: Vec::new(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue