summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-05-29 07:06:05 +0800
committerGitHub <noreply@github.com>2024-05-29 07:06:05 +0800
commit4fa92b020aaf0f473a4953b21e14818d6e779208 (patch)
tree033ae5daabaa61fdc53f12291dadc1c0923092ba
parent569317728cf39f26d4ca3d58eae6cdc72754354e (diff)
downloadaichat-4fa92b020aaf0f473a4953b21e14818d6e779208.tar.gz
refactor: `temp` session ignore `save_session` (#547)
-rw-r--r--src/config/mod.rs4
-rw-r--r--src/config/session.rs15
2 files changed, 16 insertions, 3 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index d59a81e..6df1cf3 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -679,7 +679,7 @@ impl Config {
self.last_message = None;
let save_session = session.save_session();
if session.dirty && save_session != Some(false) {
- if save_session.is_none() || session.is_temp() {
+ if save_session.is_none() {
if self.working_mode != WorkingMode::Repl {
return Ok(());
}
@@ -687,7 +687,7 @@ impl Config {
if !ans {
return Ok(());
}
- while session.is_temp() || session.name().is_empty() {
+ while session.is_temp() {
session.name = Text::new("Session name:").prompt()?;
}
}
diff --git a/src/config/session.rs b/src/config/session.rs
index 8f2ac7e..8ac5ad9 100644
--- a/src/config/session.rs
+++ b/src/config/session.rs
@@ -46,12 +46,22 @@ pub struct Session {
impl Session {
pub fn new(config: &Config, name: &str) -> Self {
+ let name = if name.is_empty() {
+ TEMP_SESSION_NAME
+ } else {
+ name
+ };
+ let save_session = if name == TEMP_SESSION_NAME {
+ None
+ } else {
+ config.save_session
+ };
let mut session = Self {
model_id: config.model.id(),
temperature: config.temperature,
top_p: config.top_p,
function_matcher: None,
- save_session: config.save_session,
+ save_session,
messages: Default::default(),
compressed_messages: Default::default(),
compress_threshold: None,
@@ -258,6 +268,9 @@ impl Session {
}
pub fn set_save_session(&mut self, value: Option<bool>) {
+ if self.name == TEMP_SESSION_NAME {
+ return;
+ }
if self.save_session != value {
self.save_session = value;
self.dirty = true;