}
aria={Locale.Chat.Actions.Edit}
onClick={async () => {
const newMessage = await showPrompt(
Locale.Chat.Actions.Edit,
getMessageTextContent(message),
10,
);
let newContent:
| string
| MultimodalContent[] = newMessage;
const images = getMessageImages(message);
if (images.length > 0) {
newContent = [
{ type: "text", text: newMessage },
];
for (let i = 0; i < images.length; i++) {
newContent.push({
type: "image_url",
image_url: {
url: images[i],
},
});
}
}
chatStore.updateTargetSession(
session,
(session) => {
const m = session.mask.context
.concat(session.messages)
.find((m) => m.id === message.id);
if (m) {
m.content = newContent;
}
},
);
}}
>
{isUser ? (
) : (
<>
{["system"].includes(message.role) ? (
) : (
)}
>
)}
)}
{showActions && (
{message.streaming ? (
}
onClick={() =>
onUserStop(message.id ?? i)
}
/>
) : (
<>
}
onClick={() => onResend(message)}
/>
}
onClick={() =>
onDelete(message.id ?? i)
}
/>
}
onClick={() => onPinMessage(message)}
/>
}
onClick={() =>
copyToClipboard(
getMessageTextContent(message),
)
}
/>
{config.ttsConfig.enable && (
) : (
)
}
onClick={() =>
openaiSpeech(
getMessageTextContent(message),
)
}
/>
)}
>
)}