This commit is contained in:
sxyazi 2024-08-21 21:32:15 +08:00
parent de814bfc49
commit 219a17eb94
No known key found for this signature in database
4 changed files with 15 additions and 24 deletions

View file

@ -7,6 +7,7 @@
)] )]
pub mod completion; pub mod completion;
pub mod confirm;
pub mod help; pub mod help;
pub mod input; pub mod input;
pub mod manager; pub mod manager;

View file

@ -1,5 +1,5 @@
use yazi_config::popup::InputCfg; use yazi_config::popup::ConfirmCfg;
use yazi_proxy::{InputProxy, ManagerProxy}; use yazi_proxy::{ConfirmProxy, ManagerProxy};
use yazi_shared::{event::Cmd, fs::Url}; use yazi_shared::{event::Cmd, fs::Url};
use crate::{manager::Manager, tasks::Tasks}; use crate::{manager::Manager, tasks::Tasks};
@ -35,7 +35,7 @@ impl Manager {
opt.targets = if opt.hovered { opt.targets = if opt.hovered {
vec![hovered.clone()] vec![hovered.clone()]
} else { } else {
self.selected_or_hovered(false).cloned().collect() self.selected_or_hovered(true).cloned().collect()
}; };
if opt.force { if opt.force {
@ -43,17 +43,13 @@ impl Manager {
} }
tokio::spawn(async move { tokio::spawn(async move {
let mut result = InputProxy::show(if opt.permanently { let result = ConfirmProxy::show(if opt.permanently {
InputCfg::delete(opt.targets.len()) ConfirmCfg::delete(&opt.targets)
} else { } else {
InputCfg::trash(opt.targets.len()) ConfirmCfg::trash(&opt.targets)
}); });
if let Some(Ok(choice)) = result.recv().await { if result.await {
if choice != "y" && choice != "Y" {
return;
}
ManagerProxy::remove_do(opt.targets, opt.permanently); ManagerProxy::remove_do(opt.targets, opt.permanently);
} }
}); });

View file

@ -2,9 +2,9 @@ use std::collections::HashMap;
use anyhow::Result; use anyhow::Result;
use tokio::fs; use tokio::fs;
use yazi_config::popup::InputCfg; use yazi_config::popup::{ConfirmCfg, InputCfg};
use yazi_dds::Pubsub; use yazi_dds::Pubsub;
use yazi_proxy::{InputProxy, TabProxy, WATCHER}; use yazi_proxy::{ConfirmProxy, InputProxy, TabProxy, WATCHER};
use yazi_shared::{event::Cmd, fs::{maybe_exists, ok_or_not_found, paths_to_same_file, symlink_realpath, File, FilesOp, Url}}; use yazi_shared::{event::Cmd, fs::{maybe_exists, ok_or_not_found, paths_to_same_file, symlink_realpath, File, FilesOp, Url}};
use crate::manager::Manager; use crate::manager::Manager;
@ -64,18 +64,12 @@ impl Manager {
return; return;
} }
let new = hovered.parent().unwrap().join(name); let new = Url::from(hovered.parent().unwrap().join(name));
if opt.force || !maybe_exists(&new).await || paths_to_same_file(&hovered, &new).await { if opt.force || !maybe_exists(&new).await || paths_to_same_file(&hovered, &new).await {
Self::rename_do(tab, hovered, Url::from(new)).await.ok(); Self::rename_do(tab, hovered, new).await.ok();
return; } else if ConfirmProxy::show(ConfirmCfg::overwrite(&new)).await {
Self::rename_do(tab, hovered, new).await.ok();
} }
let mut result = InputProxy::show(InputCfg::overwrite());
if let Some(Ok(choice)) = result.recv().await {
if choice == "y" || choice == "Y" {
Self::rename_do(tab, hovered, Url::from(new)).await.ok();
}
};
}); });
} }

View file

@ -52,7 +52,7 @@ impl<'a> Widget for Confirm<'a> {
.position(confirm.offset); .position(confirm.offset);
Scrollbar::new(ScrollbarOrientation::VerticalRight).render( Scrollbar::new(ScrollbarOrientation::VerticalRight).render(
popup_layout[0].inner(&Margin { vertical: 1, horizontal: 0 }), popup_layout[0].inner(Margin { vertical: 1, horizontal: 0 }),
buf, buf,
&mut scrollbar_state, &mut scrollbar_state,
); );