diff options
| author | sigoden <sigoden@gmail.com> | 2024-06-12 09:41:05 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-12 09:41:05 +0800 |
| commit | fe3a22255d897899d457dbfc4329a8de55fb3ee3 (patch) | |
| tree | 9d5e9a10f0c2d9a306797f4ffa3c60ef8528b72c /src | |
| parent | b24cb6630992631a77414f757bbd72dddf62d2dd (diff) | |
| download | aichat-fe3a22255d897899d457dbfc4329a8de55fb3ee3.tar.gz | |
refactor: 'temp' can not be used as name of saved session (#591)
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/mod.rs | 2 | ||||
| -rw-r--r-- | src/config/session.rs | 12 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 714719a..7e5d6cf 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -686,7 +686,7 @@ impl Config { } let mut session; match session_name { - None => { + None | Some(TEMP_SESSION_NAME) => { let session_file = self.session_file(TEMP_SESSION_NAME)?; if session_file.exists() { remove_file(session_file).with_context(|| { diff --git a/src/config/session.rs b/src/config/session.rs index ce9dc7b..2aff467 100644 --- a/src/config/session.rs +++ b/src/config/session.rs @@ -5,7 +5,7 @@ use crate::client::{Message, MessageContent, MessageRole}; use crate::render::MarkdownRender; use anyhow::{bail, Context, Result}; -use inquire::{required, Confirm, Text}; +use inquire::{validator::Validation, Confirm, Text}; use serde::{Deserialize, Serialize}; use serde_json::json; use std::collections::HashMap; @@ -306,7 +306,15 @@ impl Session { } if self.is_temp() { self.name = Text::new("Session name:") - .with_validator(required!("This field is required")) + .with_validator(|input: &str| { + if input == TEMP_SESSION_NAME { + Ok(Validation::Invalid(format!("'{TEMP_SESSION_NAME}' is a reserved word and cannot be used as a session name").into())) + } else if input.trim().is_empty() { + Ok(Validation::Invalid("This field is required".into())) + } else { + Ok(Validation::Valid) + } + }) .prompt()?; } } |
