diff options
| author | sigoden <sigoden@gmail.com> | 2024-03-09 22:28:36 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-09 22:28:36 +0800 |
| commit | 8f144989695e089fe3b3e7f4e97ac2b862574bd3 (patch) | |
| tree | 790ebe5b2be8db2ccbd7b0e67976d4c02a08e7f9 /src/repl/mod.rs | |
| parent | c3677e33801cbbf35d6e87601b65c0f8c1680018 (diff) | |
| download | aichat-8f144989695e089fe3b3e7f4e97ac2b862574bd3.tar.gz | |
fix: erratic behaviour when using temp role in a session (#347)
Diffstat (limited to 'src/repl/mod.rs')
| -rw-r--r-- | src/repl/mod.rs | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/repl/mod.rs b/src/repl/mod.rs index 4c5540c..51a88bb 100644 --- a/src/repl/mod.rs +++ b/src/repl/mod.rs @@ -174,15 +174,20 @@ impl Repl { ".role" => match args { Some(args) => match args.split_once(|c| c == '\n' || c == ' ') { Some((name, text)) => { - let name = name.trim(); - let text = text.trim(); - let old_role = - self.config.read().role.as_ref().map(|v| v.name.to_string()); - self.config.write().set_role(name)?; - self.ask(text, vec![])?; - match old_role { - Some(old_role) => self.config.write().set_role(&old_role)?, - None => self.config.write().clear_role()?, + if self.config.read().has_session() { + bail!(r#"Cannot perform this action in a session"#); + } else { + let name = name.trim(); + let text = text.trim(); + let old_role = + self.config.read().role.as_ref().map(|v| v.name.to_string()); + self.config.write().set_role(name)?; + let ask_ret = self.ask(text, vec![]); + match old_role { + Some(old_role) => self.config.write().set_role(&old_role)?, + None => self.config.write().clear_role()?, + } + ask_ret?; } } None => { |
