refactor: Encapsulate message editing state and actions in ChatMessage.svelte
This commit is contained in:
parent
05566cc82e
commit
ed6ecf7747
|
|
@ -38,6 +38,45 @@
|
||||||
let shouldBranchAfterEdit = $state(false);
|
let shouldBranchAfterEdit = $state(false);
|
||||||
let textareaElement: HTMLTextAreaElement | undefined = $state();
|
let textareaElement: HTMLTextAreaElement | undefined = $state();
|
||||||
|
|
||||||
|
let showSaveOnlyOption = $derived(message.role === MessageRole.USER);
|
||||||
|
|
||||||
|
setMessageEditContext({
|
||||||
|
get isEditing() {
|
||||||
|
return isEditing;
|
||||||
|
},
|
||||||
|
get editedContent() {
|
||||||
|
return editedContent;
|
||||||
|
},
|
||||||
|
get editedExtras() {
|
||||||
|
return editedExtras;
|
||||||
|
},
|
||||||
|
get editedUploadedFiles() {
|
||||||
|
return editedUploadedFiles;
|
||||||
|
},
|
||||||
|
get originalContent() {
|
||||||
|
return message.content;
|
||||||
|
},
|
||||||
|
get originalExtras() {
|
||||||
|
return message.extra || [];
|
||||||
|
},
|
||||||
|
get showSaveOnlyOption() {
|
||||||
|
return showSaveOnlyOption;
|
||||||
|
},
|
||||||
|
setContent: (content: string) => {
|
||||||
|
editedContent = content;
|
||||||
|
},
|
||||||
|
setExtras: (extras: DatabaseMessageExtra[]) => {
|
||||||
|
editedExtras = extras;
|
||||||
|
},
|
||||||
|
setUploadedFiles: (files: ChatUploadedFile[]) => {
|
||||||
|
editedUploadedFiles = files;
|
||||||
|
},
|
||||||
|
save: handleSaveEdit,
|
||||||
|
saveOnly: handleSaveEditOnly,
|
||||||
|
cancel: handleCancelEdit,
|
||||||
|
startEdit: handleEdit
|
||||||
|
});
|
||||||
|
|
||||||
let mcpPromptExtra = $derived.by(() => {
|
let mcpPromptExtra = $derived.by(() => {
|
||||||
if (message.role !== MessageRole.USER) return null;
|
if (message.role !== MessageRole.USER) return null;
|
||||||
if (message.content.trim()) return null;
|
if (message.content.trim()) return null;
|
||||||
|
|
@ -166,7 +205,7 @@
|
||||||
if (message.role === MessageRole.USER) {
|
if (message.role === MessageRole.USER) {
|
||||||
// For user messages, trim to avoid accidental whitespace
|
// For user messages, trim to avoid accidental whitespace
|
||||||
const finalExtras = await getMergedExtras();
|
const finalExtras = await getMergedExtras();
|
||||||
onEditUserMessagePreserveResponses?.(message, editedContent.trim(), finalExtras);
|
chatActions.editUserMessagePreserveResponses(message, editedContent.trim(), finalExtras);
|
||||||
}
|
}
|
||||||
|
|
||||||
isEditing = false;
|
isEditing = false;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue