MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / handle_undo

Method handle_undo

crates/opencode-tui/src/app/app.rs:1987–2022  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

1985 }
1986
1987 fn handle_undo(&mut self) {
1988 let Some(session_id) = self.current_session_id() else {
1989 self.alert_dialog.set_message("No active session for undo.");
1990 self.alert_dialog.open();
1991 return;
1992 };
1993 let session_ctx = self.context.session.read();
1994 let messages = session_ctx.messages.get(&session_id);
1995 let last_user_msg = messages
1996 .and_then(|msgs| msgs.iter().rev().find(|m| m.role == MessageRole::User))
1997 .map(|m| (m.id.clone(), m.content.clone()));
1998 drop(session_ctx);
1999
2000 let Some((msg_id, msg_content)) = last_user_msg else {
2001 self.alert_dialog.set_message("No user message to revert.");
2002 self.alert_dialog.open();
2003 return;
2004 };
2005 let Some(client) = self.context.get_api_client() else {
2006 return;
2007 };
2008 match client.revert_session(&session_id, &msg_id) {
2009 Ok(_) => {
2010 self.prompt.set_input(msg_content);
2011 let _ = self.sync_session_from_server(&session_id);
2012 self.alert_dialog
2013 .set_message("Message reverted. Prompt restored.");
2014 self.alert_dialog.open();
2015 }
2016 Err(err) => {
2017 self.alert_dialog
2018 .set_message(&format!("Failed to revert message:\n{}", err));
2019 self.alert_dialog.open();
2020 }
2021 }
2022 }
2023
2024 fn handle_redo(&mut self) {
2025 let Some(_session_id) = self.current_session_id() else {

Callers 1

Calls 11

current_session_idMethod · 0.80
set_messageMethod · 0.80
readMethod · 0.80
findMethod · 0.80
get_api_clientMethod · 0.80
revert_sessionMethod · 0.80
set_inputMethod · 0.80
openMethod · 0.45
getMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected