{/*Reverted: Edit button always visible now*/}
}
aria={Locale.Chat.Actions.Edit}
onClick={async () => {
const newTextContent = await showPrompt(
Locale.Chat.Actions.Edit,
getMessageTextContent(message),
10,
);
chatStore.updateTargetSession(
session,
(session) => {
const m = session.mask.context
.concat(session.messages)
.find(
(m) => m.id === message.id,
);
if (m) {
if (typeof m.content === "string") {
m.content = newTextContent;
} else if (
Array.isArray(m.content)
) {
const textItem = m.content.find(
(item) => item.type === "text",
);
if (textItem) {
textItem.text = newTextContent;
} else {
// if no text item, add one
m.content.unshift({
type: "text",
text: newTextContent,
});
}
}
}
},
);
}}
>
)}
{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),
)
}
/>
)}
>
)}