use std::path::PathBuf;
use iced::Task;
use crate::message::Message;
pub fn stash_save(path: PathBuf, stash_message: Option<String>) -> Task<Message> {
git_task!(
Message::StashUpdated,
(|| {
let mut repo = open_repo!(&path);
let msg_ref = stash_message.as_deref();
gitkraft_core::features::stash::stash_save(&mut repo, msg_ref)
.map_err(|e| e.to_string())?;
refresh_stash_list(&path)
})()
)
}
pub fn stash_pop(path: PathBuf, index: usize) -> Task<Message> {
git_task!(
Message::StashUpdated,
(|| {
let mut repo = open_repo!(&path);
gitkraft_core::features::stash::stash_pop(&mut repo, index)
.map_err(|e| e.to_string())?;
refresh_stash_list(&path)
})()
)
}
pub fn stash_drop(path: PathBuf, index: usize) -> Task<Message> {
git_task!(
Message::StashUpdated,
(|| {
let mut repo = open_repo!(&path);
gitkraft_core::features::stash::stash_drop(&mut repo, index)
.map_err(|e| e.to_string())?;
refresh_stash_list(&path)
})()
)
}
fn refresh_stash_list(path: &std::path::Path) -> Result<Vec<gitkraft_core::StashEntry>, String> {
let mut repo = open_repo!(path);
gitkraft_core::features::stash::list_stashes(&mut repo).map_err(|e| e.to_string())
}