From d8d52b60d6dba47a0c318e68172e2d28e5351385 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 30 Aug 2024 20:00:07 +0800 Subject: feat: save temp session with `temp-` if `save_session: true` (#811) --- src/config/session.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/config/session.rs') diff --git a/src/config/session.rs b/src/config/session.rs index c36c9db..4051936 100644 --- a/src/config/session.rs +++ b/src/config/session.rs @@ -51,15 +51,10 @@ pub struct Session { impl Session { pub fn new(config: &Config, name: &str) -> Self { - let save_session = if name == TEMP_SESSION_NAME { - None - } else { - config.save_session - }; let role = config.extract_role(); let mut session = Self { name: name.to_string(), - save_session, + save_session: config.save_session, ..Default::default() }; session.set_role(role); @@ -188,8 +183,9 @@ impl Session { .map(|(name, value)| format!("{name:<20}{value}")) .collect(); + lines.push(String::new()); + if !self.is_empty() { - lines.push("".into()); let resolve_url_fn = |url: &str| resolve_data_url(&self.data_urls, url.to_string()); for message in &self.messages { @@ -313,6 +309,10 @@ impl Session { }) .prompt()?; } + } else if save_session == Some(true) && session_name == TEMP_SESSION_NAME { + let now = chrono::Local::now(); + let formatted_time = now.format("%Y%m%dT%H:%M:%S").to_string(); + session_name = format!("{TEMP_SESSION_NAME}-{formatted_time}"); } let session_path = session_dir.join(format!("{session_name}.yaml")); self.save(&session_name, &session_path, is_repl)?; -- cgit v1.2.3