11import React , { useMemo , useState } from "react" ;
22import { Box , Text , useInput , useWindowSize } from "ink" ;
3- import type { UndoTarget , QueuedMessage } from "@vegamo/deepcode-core" ;
3+ import type { UndoTarget , QueuedMessage , SessionMessage } from "@vegamo/deepcode-core" ;
4+ import { extractImageUrlsFromContentParams } from "../utils" ;
45
56export type UndoRestoreMode = "code-and-conversation" | "conversation" | "remove" | "edit" ;
67export type QueueUndoTarget = UndoTarget & { queued ?: QueuedMessage } ;
@@ -145,7 +146,7 @@ export function UndoSelector({ targets, busy = false, onSelect, onCancel }: Prop
145146 < Text color = { disabled ? "gray" : "#229ac3" } > { isActive ? "> " : " " } </ Text >
146147 < Box flexDirection = "column" flexGrow = { 1 } >
147148 < Text color = { isActive && ! disabled ? "#229ac3" : undefined } bold = { isActive } dimColor = { disabled } >
148- { formatUndoMessage ( target . message . content ) }
149+ { formatUndoMessage ( target . message ) }
149150 </ Text >
150151 < Text dimColor >
151152 { formatTimestamp ( target . message . createTime ) }
@@ -170,7 +171,7 @@ export function UndoSelector({ targets, busy = false, onSelect, onCancel }: Prop
170171 overflow = "hidden"
171172 >
172173 < Text dimColor > Selected message:</ Text >
173- < Text > { formatUndoMessage ( selectedTarget ?. message . content ?? "" ) } </ Text >
174+ < Text > { formatUndoMessage ( selectedTarget ?. message ) } </ Text >
174175 { ! selectedTarget ? (
175176 < Text > This message is no longer available.</ Text >
176177 ) : selectionDisabled ? (
@@ -208,7 +209,7 @@ export function UndoSelector({ targets, busy = false, onSelect, onCancel }: Prop
208209 < Box >
209210 < Text dimColor >
210211 { selectionDisabled
211- ? "Unavailable while running "
212+ ? "↑/↓ navigate · Esc cancel "
212213 : phase === "message"
213214 ? "↑/↓ navigate · Enter choose · Esc cancel"
214215 : "↑/↓ choose · Enter confirm · Esc back" }
@@ -219,9 +220,13 @@ export function UndoSelector({ targets, busy = false, onSelect, onCancel }: Prop
219220 ) ;
220221}
221222
222- function formatUndoMessage ( content : unknown ) : string {
223+ function formatUndoMessage ( message ?: SessionMessage ) : string {
224+ const content = message ?. content ;
225+ const imageCount =
226+ message ?. meta ?. userPrompt ?. imageUrls ?. length ?? extractImageUrlsFromContentParams ( message ?. contentParams ) . length ;
223227 const text = typeof content === "string" && content . trim ( ) ? content . trim ( ) : "(empty message)" ;
224- const singleLine = text . replace ( / \r ? \n / g, " " ) . replace ( / \s + / g, " " ) ;
228+ const prefix = imageCount > 0 ? `(📎 ${ imageCount } images) ` : "" ;
229+ const singleLine = prefix + text . replace ( / \r ? \n / g, " " ) . replace ( / \s + / g, " " ) ;
225230 return singleLine . length > 90 ? `${ singleLine . slice ( 0 , 89 ) } …` : singleLine ;
226231}
227232
0 commit comments