From 8f144989695e089fe3b3e7f4e97ac2b862574bd3 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sat, 9 Mar 2024 22:28:36 +0800 Subject: fix: erratic behaviour when using temp role in a session (#347) --- src/repl/mod.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/repl') 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 => { -- cgit v1.2.3