Compare commits

..

7 Commits

Author SHA1 Message Date
Rafi
ce0b1004f3 Remove the parent_message_id constraint 2023-03-22 16:17:46 +08:00
Rafi
1ff1c46e37 Fix the bug of being unable to delete messages. 2023-03-22 15:55:06 +08:00
Rafi
afa3e499dc add DEBUT_PWA env variable 2023-03-22 14:12:49 +08:00
Rafi
70ce5746bc Merge remote-tracking branch 'origin/main' into main
# Conflicts:
#	nuxt.config.ts
#	yarn.lock
2023-03-22 13:50:53 +08:00
Rafi
8bbc44e7bf update nuxt.config.ts 2023-03-21 18:48:35 +08:00
Rafi
3dcb4be6e4 add robots.txt 2023-03-21 18:06:44 +08:00
Rafi
83f8072625 mv @vite-pwa/nuxt to devDependencies 2023-03-21 13:46:02 +08:00
7 changed files with 2017 additions and 49 deletions

View File

@@ -41,7 +41,7 @@ const deleteMessage = async () => {
method: 'DELETE' method: 'DELETE'
}) })
if (!error.value) { if (!error.value) {
this.$emit('deleteMessage', props.messageIndex) props.deleteMessage(props.messageIndex)
showSnackbar('Deleted!') showSnackbar('Deleted!')
} }
showSnackbar('Delete failed') showSnackbar('Delete failed')

View File

@@ -12,14 +12,19 @@ const md = new MarkdownIt({
}, },
}) })
const props = defineProps(['content']) const props = defineProps({
message: {
type: Object,
required: true
}
})
const contentHtml = ref('') const contentHtml = ref('')
const contentElm = ref(null) const contentElm = ref(null)
watchEffect(() => { watchEffect(() => {
contentHtml.value = props.content ? md.render(props.content) : '' contentHtml.value = props.message.message ? md.render(props.message.message) : ''
}) })
const bindCopyCodeToButtons = () => { const bindCopyCodeToButtons = () => {
@@ -54,11 +59,19 @@ onUpdated(() => {
</script> </script>
<template> <template>
<div <v-card
ref="contentElm" :color="message.is_bot ? '' : 'primary'"
v-html="contentHtml" rounded="lg"
class="chat-msg-content" elevation="2"
></div> >
<v-card-text>
<div
ref="contentElm"
v-html="contentHtml"
class="chat-msg-content"
></div>
</v-card-text>
</v-card>
</template> </template>
<style> <style>

View File

@@ -36,7 +36,7 @@ export default defineNuxtConfig({
description: 'A ChatGPT web Client' description: 'A ChatGPT web Client'
}, },
workbox: { workbox: {
enabled: true enabled: process.env.DEBUT_PWA === 'true',
} }
}, },
i18n: { i18n: {

View File

@@ -11,6 +11,7 @@
"@kevinmarrec/nuxt-pwa": "^0.17.0", "@kevinmarrec/nuxt-pwa": "^0.17.0",
"@nuxtjs/color-mode": "^3.2.0", "@nuxtjs/color-mode": "^3.2.0",
"@nuxtjs/i18n": "^8.0.0-beta.9", "@nuxtjs/i18n": "^8.0.0-beta.9",
"@vite-pwa/nuxt": "^0.0.7",
"material-design-icons-iconfont": "^6.7.0", "material-design-icons-iconfont": "^6.7.0",
"nuxt": "^3.2.0" "nuxt": "^3.2.0"
}, },

View File

@@ -50,13 +50,12 @@ const abortFetch = () => {
} }
fetchingResponse.value = false fetchingResponse.value = false
} }
const fetchReply = async (message, parentMessageId) => { const fetchReply = async (message) => {
ctrl = new AbortController() ctrl = new AbortController()
const data = Object.assign({}, currentModel.value, { const data = Object.assign({}, currentModel.value, {
openaiApiKey: openaiApiKey.value, openaiApiKey: openaiApiKey.value,
message: message, message: message,
parentMessageId: parentMessageId,
conversationId: currentConversation.value.id conversationId: currentConversation.value.id
}) })
@@ -93,6 +92,11 @@ const fetchReply = async (message, parentMessageId) => {
throw new Error(data.error); throw new Error(data.error);
} }
if (event === 'userMessageId') {
currentConversation.value.messages[currentConversation.value.messages.length - 1].id = data.userMessageId
return;
}
if (event === 'done') { if (event === 'done') {
if (currentConversation.value.id === null) { if (currentConversation.value.id === null) {
currentConversation.value.id = data.conversationId currentConversation.value.id = data.conversationId
@@ -129,15 +133,8 @@ const scrollChatWindow = () => {
const send = (message) => { const send = (message) => {
fetchingResponse.value = true fetchingResponse.value = true
let parentMessageId = null currentConversation.value.messages.push({message: message})
if (currentConversation.value.messages.length > 0) { fetchReply(message)
const lastMessage = currentConversation.value.messages[currentConversation.value.messages.length - 1]
if (lastMessage.is_bot && lastMessage.id !== null) {
parentMessageId = lastMessage.id
}
}
currentConversation.value.messages.push({parentMessageId: parentMessageId, message: message})
fetchReply(message, parentMessageId)
scrollChatWindow() scrollChatWindow()
} }
const stop = () => { const stop = () => {
@@ -184,15 +181,7 @@ const deleteMessage = (index) => {
:use-prompt="usePrompt" :use-prompt="usePrompt"
:delete-message="deleteMessage" :delete-message="deleteMessage"
/> />
<v-card <MsgContent :message="message" />
:color="message.is_bot ? '' : 'primary'"
rounded="lg"
elevation="2"
>
<v-card-text>
<MsgContent :content="message.message" />
</v-card-text>
</v-card>
<MessageActions <MessageActions
v-if="message.is_bot" v-if="message.is_bot"
:message="message" :message="message"

2
public/robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-agent: *
Allow: /

2003
yarn.lock

File diff suppressed because it is too large Load Diff