From 57e4ba69d93c9fc0c37c7714fe1a7a9c4bb70fbd Mon Sep 17 00:00:00 2001
From: Phoenix <64720302+Concur-max@users.noreply.github.com>
Date: Wed, 11 Jun 2025 11:39:11 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E9=94=99?=
=?UTF-8?q?=E8=AF=AF=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E5=B9=B6=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E7=BC=96=E8=BE=91=E5=99=A8=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将错误消息处理移至请求拦截器统一处理
- 优化编辑器提及功能,过滤当前用户
- 清理编辑器相关冗余代码和注释
- 改进空消息检测逻辑
---
src/components/editor/CustomEditor.vue | 27 +++++++++-----------------
src/store/modules/dialogue.js | 2 --
src/utils/request.js | 7 ++++++-
3 files changed, 15 insertions(+), 21 deletions(-)
diff --git a/src/components/editor/CustomEditor.vue b/src/components/editor/CustomEditor.vue
index 7711510..5cf1d0f 100644
--- a/src/components/editor/CustomEditor.vue
+++ b/src/components/editor/CustomEditor.vue
@@ -10,7 +10,7 @@ import { bus } from '@/utils/event-bus'
import { EditorConst } from '@/constant/event-bus'
import { emitCall } from '@/utils/common'
import { deltaToMessage, deltaToString, isEmptyDelta } from './util'
-import { useDialogueStore, useEditorDraftStore } from '@/store'
+import { useDialogueStore, useEditorDraftStore ,useUserStore} from '@/store'
import { uploadImg } from '@/api/upload'
import { defAvatar } from '@/constant/default'
import { getImageInfo } from '@/utils/functions'
@@ -32,7 +32,7 @@ const props = defineProps({
})
const emit = defineEmits(['editor-event'])
-
+const userStore = useUserStore()
const editorRef = ref(null)
const content = ref('')
const isFocused = ref(false)
@@ -174,8 +174,9 @@ const checkMention = (target) => {
const showMentionList = () => {
const query = currentMentionQuery.value.toLowerCase()
mentionList.value = props.members.filter(member => {
- return member.value.toLowerCase().startsWith(query)
+ return member.value.toLowerCase().startsWith(query)&& member.id !== userStore.uid
})
+ console.log('userStore',userStore.uid)
if(dialogueStore.groupInfo.is_manager){
mentionList.value.unshift({ id: 0, nickname: '全体成员', avatar: defAvatar, value: '全体成员' })
}
@@ -347,20 +348,15 @@ const handlePaste = (event) => {
}
}
}
-
-
-// Helper function to insert line break
const insertLineBreak = (range) => {
const editor = editorRef.value;
if (!editor) return;
const br = document.createElement('br');
- range.deleteContents(); // Clear selected content or collapsed cursor position
+ range.deleteContents();
range.insertNode(br);
- // Create a zero-width space or a text node to ensure the cursor can be placed after the
- // and that the
is not immediately removed by cleanup logic if it's the only content.
- const nbsp = document.createTextNode('\u200B'); // Zero-width space
+ const nbsp = document.createTextNode('\u200B');
range.setStartAfter(br);
range.insertNode(nbsp);
range.setStartAfter(nbsp);
@@ -372,7 +368,6 @@ const insertLineBreak = (range) => {
selection.addRange(range);
}
- // Ensure editor focus and trigger input handling
editor.focus();
nextTick(() => {
handleInput({ target: editor });
@@ -606,15 +601,11 @@ const handleKeydown = (event) => {
!messageData.items[0].content.trimEnd());
if (isEmptyMessage) {
- // If the message is considered empty, prevent sending.
- // Ensure editor is truly empty if it wasn't already.
if (editor.innerHTML !== '') {
clearEditor();
}
return;
}
-
- // If message is not empty, proceed to send.
const quoteElement = editor.querySelector('.editor-quote');
if (!quoteElement && quoteData.value) {
quoteData.value = null;
@@ -643,15 +634,15 @@ const sendMessage = () => {
}
messageData.items.forEach(item => {
- if (item.type === 1 && cleanInvisibleChars(item.content).trimEnd()) { // Apply trimEnd after cleaning
+ if (item.type === 1 && cleanInvisibleChars(item.content).trimEnd()) {
const finalContent = cleanInvisibleChars(item.content).replace(/
/gi, '\n').trimEnd();
if (!finalContent && !messageData.mentionUids.length && !messageData.quoteId) {
- // If after processing, the content is empty and no mentions/quote, skip
+
return;
}
const data = {
items: [{
- content: finalContent, // Use the processed content
+ content: finalContent,
type: 1
}],
mentionUids: messageData.mentionUids,
diff --git a/src/store/modules/dialogue.js b/src/store/modules/dialogue.js
index b235bc2..0e2b16d 100644
--- a/src/store/modules/dialogue.js
+++ b/src/store/modules/dialogue.js
@@ -245,8 +245,6 @@ export const useDialogueStore = defineStore('dialogue', {
}).then((res) => {
if (res.code == 200) {
this.batchDelDialogueRecord(msgIds)
- } else {
- window['$message'].warning(res.message)
}
})
},
diff --git a/src/utils/request.js b/src/utils/request.js
index 626977d..9377a73 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -53,7 +53,12 @@ request.interceptors.request.use((config) => {
}, errorHandler)
// 响应拦截器
-request.interceptors.response.use((response) => response.data, errorHandler)
+request.interceptors.response.use((response) => {
+ if(response.data.code !==200){
+ window['$message'].warning(response.data.msg)
+ }
+ return response.data
+}, errorHandler)
/**
* GET 请求