mirror of
https://github.com/openai/codex.git
synced 2026-10-30 19:18:49 +00:00
tui: preserve pending steer metadata on commit
This commit is contained in:
@@ -4660,18 +4660,29 @@ impl ChatWidget {
|
||||
};
|
||||
let rendered = Self::rendered_user_message_event_from_event(&event);
|
||||
let compare_key = Self::pending_steer_compare_key_from_item(item);
|
||||
let should_render = if self
|
||||
if self
|
||||
.pending_steers
|
||||
.front()
|
||||
.is_some_and(|pending| pending.compare_key == compare_key)
|
||||
{
|
||||
self.pending_steers.pop_front();
|
||||
let pending = self
|
||||
.pending_steers
|
||||
.pop_front()
|
||||
.expect("checked front pending steer");
|
||||
self.refresh_pending_input_preview();
|
||||
true
|
||||
} else {
|
||||
self.last_rendered_user_message_event.as_ref() != Some(&rendered)
|
||||
};
|
||||
if should_render {
|
||||
let pending_event = UserMessageEvent {
|
||||
message: pending.user_message.text,
|
||||
images: Some(pending.user_message.remote_image_urls),
|
||||
local_images: pending
|
||||
.user_message
|
||||
.local_images
|
||||
.into_iter()
|
||||
.map(|image| image.path)
|
||||
.collect(),
|
||||
text_elements: pending.user_message.text_elements,
|
||||
};
|
||||
self.on_user_message_event(pending_event);
|
||||
} else if self.last_rendered_user_message_event.as_ref() != Some(&rendered) {
|
||||
self.on_user_message_event(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3927,9 +3927,32 @@ async fn item_completed_pops_pending_steer_with_local_image_and_text_elements()
|
||||
);
|
||||
|
||||
assert!(chat.pending_steers.is_empty());
|
||||
let inserted = drain_insert_history(&mut rx);
|
||||
assert_eq!(inserted.len(), 1);
|
||||
assert!(lines_to_single_string(&inserted[0]).contains("note"));
|
||||
|
||||
let mut user_cell = None;
|
||||
while let Ok(ev) = rx.try_recv() {
|
||||
if let AppEvent::InsertHistoryCell(cell) = ev
|
||||
&& let Some(cell) = cell.as_any().downcast_ref::<UserHistoryCell>()
|
||||
{
|
||||
user_cell = Some((
|
||||
cell.message.clone(),
|
||||
cell.text_elements.clone(),
|
||||
cell.local_image_paths.clone(),
|
||||
cell.remote_image_urls.clone(),
|
||||
));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let (stored_message, stored_elements, stored_images, stored_remote_image_urls) =
|
||||
user_cell.expect("expected pending steer user history cell");
|
||||
assert_eq!(stored_message, "note");
|
||||
assert_eq!(
|
||||
stored_elements,
|
||||
vec![TextElement::new((0..4).into(), Some("note".to_string()))]
|
||||
);
|
||||
assert_eq!(stored_images.len(), 1);
|
||||
assert!(stored_images[0].ends_with("pending-steer.png"));
|
||||
assert!(stored_remote_image_urls.is_empty());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
Reference in New Issue
Block a user