Skip to content

Commit 0a16e1f

Browse files
committed
Added ability to delete previous messages in the chat history
1 parent 8b65e3d commit 0a16e1f

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

src/components/message-item.vue

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<script setup>
44
import hljs from 'highlight.js/lib/common';
55
import MarkdownIt from 'markdown-it';
6-
import { RefreshCcw } from 'lucide-vue-next';
6+
import { RefreshCcw, Trash } from 'lucide-vue-next';
77
import { defineEmits, ref } from 'vue';
88
import "/node_modules/highlight.js/scss/github-dark-dimmed.scss";
99
@@ -16,7 +16,7 @@ defineProps({
1616
modelDisplayName: String
1717
});
1818
19-
defineEmits(['regenerate-response']);
19+
defineEmits(['regenerate-response', 'delete-response']);
2020
2121
const loadingIcon = ref(-1);
2222
@@ -77,6 +77,9 @@ const startLoading = (index) => {
7777
<RefreshCcw v-if="message.role === 'user'" class="icon"
7878
:class="{ 'loading': isLoading && loadingIcon === index }"
7979
@click="$emit('regenerate-response', message.content), startLoading(index)" />
80+
<Trash v-if="message.role === 'user'" class="delete-icon"
81+
:class="{ 'loading': isLoading && loadingIcon === index }"
82+
@click="$emit('delete-response', message.content), startLoading(index)" />
8083
{{ message.role === 'user' ? 'User' : modelDisplayName }}
8184
</div>
8285
<span class="message-contents" v-html="formatMessage(message.content)"></span>
@@ -136,6 +139,21 @@ const startLoading = (index) => {
136139
}
137140
}
138141
142+
143+
.delete-icon {
144+
position: absolute;
145+
top: 3px;
146+
left: -65px;
147+
color: #9d81a0;
148+
transition: background-color 0.3s ease, transform 0.2s ease;
149+
background-color: transparent;
150+
151+
&:hover {
152+
transform: scale(1.15);
153+
}
154+
}
155+
156+
139157
@keyframes spin {
140158
0% {
141159
transform: rotate(0deg);

src/views/ChatLayout.vue

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,21 @@ async function regenerateMessageReponse(content) {
635635
isLoading.value = false;
636636
}
637637
638+
async function deleteMessageFromHistory(content) {
639+
const messageIndex = messages.value.findIndex(message => message.content === content && message.role === 'user');
640+
641+
if (messageIndex !== -1) {
642+
streamedMessageText.value = "";
643+
644+
const beforeMessages = messages.value.slice(0, messageIndex);
645+
const messagesAfter = messages.value.slice(messageIndex + 2); // This line remains the same
646+
647+
messages.value = [...beforeMessages, ...messagesAfter];
648+
649+
saveMessages();
650+
}
651+
}
652+
638653
async function sendImagePrompt(imagePrompt) {
639654
isGeneratingImage.value = true;
640655
streamedMessageText.value = "";
@@ -910,7 +925,8 @@ onMounted(() => {
910925
:isClaudeEnabled="isClaudeEnabled" :isUsingLocalModel="isUsingLocalModel"
911926
:isAnalyzingImage="isAnalyzingImage" :streamedMessageText="streamedMessageText"
912927
:isGeneratingImage="isGeneratingImage" :modelDisplayName="modelDisplayName"
913-
@regenerate-response="regenerateMessageReponse" />
928+
@regenerate-response="regenerateMessageReponse"
929+
@delete-response="deleteMessageFromHistory" />
914930
</div>
915931
<!-- Floating button to quick scroll to the bottom of the page -->
916932
<div class="floating-button scroll" id="scroll-button" @click="scrollToBottom"

0 commit comments

Comments
 (0)