Compare commits

..

4 Commits

Author SHA1 Message Date
Rafi
386659109c Added a new message action: delete 2023-03-19 13:49:12 +08:00
Rafi
bd9e8bf45e Optimize the editor and enhance the user experience. 2023-03-19 13:39:20 +08:00
Rafi
4e40530a8c Added a new message action: edit 2023-03-19 13:13:27 +08:00
Rafi
ea69a350f4 add environment variable NUXT_DEV_SERVER 2023-03-19 12:53:44 +08:00
6 changed files with 62 additions and 23 deletions

View File

@@ -9,6 +9,14 @@ const props = defineProps({
messageIndex: { messageIndex: {
type: Number, type: Number,
required: true required: true
},
usePrompt: {
type: Function,
required: true
},
deleteMessage: {
type: Function,
required: true
} }
}) })
@@ -24,6 +32,10 @@ const copyMessage = () => {
showSnackbar('Copied!') showSnackbar('Copied!')
} }
const editMessage = () => {
props.usePrompt(props.message.message)
}
const deleteMessage = async () => { const deleteMessage = async () => {
const { data, error } = await useAuthFetch(`/api/chat/messages/${props.message.id}/`, { const { data, error } = await useAuthFetch(`/api/chat/messages/${props.message.id}/`, {
method: 'DELETE' method: 'DELETE'
@@ -53,14 +65,22 @@ const deleteMessage = async () => {
<v-list> <v-list>
<v-list-item <v-list-item
@click="copyMessage()" @click="copyMessage()"
:title="$t('copy')"
prepend-icon="content_copy"
>
</v-list-item>
<v-list-item
@click="editMessage()"
:title="$t('edit')"
prepend-icon="edit"
>
</v-list-item>
<v-list-item
@click="deleteMessage()"
:title="$t('delete')"
prepend-icon="delete"
> >
<v-list-item-title>{{ $t('copy') }}</v-list-item-title>
</v-list-item> </v-list-item>
<!-- <v-list-item-->
<!-- @click="deleteMessage()"-->
<!-- >-->
<!-- <v-list-item-title>{{ $t('delete') }}</v-list-item-title>-->
<!-- </v-list-item>-->
</v-list> </v-list>
</v-menu> </v-menu>

View File

@@ -1,17 +1,29 @@
<template> <template>
<v-textarea <div
v-model="message" class="flex-grow-1 d-flex align-center justify-space-between"
:label="$t('writeAMessage')" >
:placeholder="hint" <v-textarea
rows="1" v-model="message"
:auto-grow="autoGrow" :label="$t('writeAMessage')"
:disabled="disabled" :placeholder="hint"
:loading="loading" :rows="rows"
:hide-details="true" max-rows="8"
append-inner-icon="send" :auto-grow="autoGrow"
@keyup.enter.exact="enterOnly" :disabled="disabled"
@click:appendInner="clickSendBtn" :loading="loading"
></v-textarea> :hide-details="true"
clearable
variant="outlined"
@keydown.enter.exact="enterOnly"
></v-textarea>
<v-btn
:disabled="loading"
icon="send"
title="Send"
class="ml-3"
@click="clickSendBtn"
></v-btn>
</div>
</template> </template>
<script> <script>
@@ -39,7 +51,7 @@ export default {
message(val) { message(val) {
const lines = val.split(/\r\n|\r|\n/).length; const lines = val.split(/\r\n|\r|\n/).length;
if (lines > 8) { if (lines > 8) {
this.rows = lines; this.rows = 8;
this.autoGrow = false; this.autoGrow = false;
} else { } else {
this.rows = 1; this.rows = 1;
@@ -65,7 +77,8 @@ export default {
clickSendBtn () { clickSendBtn () {
this.send() this.send()
}, },
enterOnly () { enterOnly (event) {
event.preventDefault();
if (!isMobile()) { if (!isMobile()) {
this.send() this.send()
} }

View File

@@ -29,6 +29,7 @@
"me": "Me", "me": "Me",
"ai": "AI" "ai": "AI"
}, },
"edit": "Edit",
"copy": "Copy", "copy": "Copy",
"copied": "Copied", "copied": "Copied",
"delete": "Delete", "delete": "Delete",

View File

@@ -29,6 +29,7 @@
"me": "我", "me": "我",
"ai": "AI" "ai": "AI"
}, },
"edit": "编辑",
"copy": "复制", "copy": "复制",
"copied": "已复制", "copied": "已复制",
"delete": "删除", "delete": "删除",

View File

@@ -53,7 +53,7 @@ export default defineNuxtConfig({
periodicSyncForUpdates: 20, periodicSyncForUpdates: 20,
}, },
devOptions: { devOptions: {
enabled: true, enabled: false,
type: 'module', type: 'module',
} }
}, },
@@ -83,7 +83,7 @@ export default defineNuxtConfig({
nitro: { nitro: {
devProxy: { devProxy: {
"/api": { "/api": {
target: "http://localhost:8000/api", target: process.env.NUXT_DEV_SERVER ?? 'http://localhost:8000/api',
prependPath: true, prependPath: true,
changeOrigin: true, changeOrigin: true,
} }

View File

@@ -181,6 +181,8 @@ const deleteMessage = (index) => {
v-if="!message.is_bot" v-if="!message.is_bot"
:message="message" :message="message"
:message-index="index" :message-index="index"
:use-prompt="usePrompt"
:delete-message="deleteMessage"
/> />
<v-card <v-card
:color="message.is_bot ? '' : 'primary'" :color="message.is_bot ? '' : 'primary'"
@@ -195,6 +197,8 @@ const deleteMessage = (index) => {
v-if="message.is_bot" v-if="message.is_bot"
:message="message" :message="message"
:message-index="index" :message-index="index"
:use-prompt="usePrompt"
:delete-message="deleteMessage"
/> />
</div> </div>
</v-col> </v-col>