|
|
|
@ -2,20 +2,6 @@ import { defineStore } from "pinia";
|
|
|
|
|
import request from "@/utils/request";
|
|
|
|
|
import { ElMessage } from "element-plus";
|
|
|
|
|
|
|
|
|
|
// 递归删除子评论的工具函数
|
|
|
|
|
function removeReply(list, commentId) {
|
|
|
|
|
for (let i = 0; i < list.length; i++) {
|
|
|
|
|
if (list[i].id === commentId) {
|
|
|
|
|
list.splice(i, 1);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (list[i].replies && list[i].replies.length > 0) {
|
|
|
|
|
if (removeReply(list[i].replies, commentId)) return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const usePostDetailStore = defineStore("postDetail", {
|
|
|
|
|
state: () => ({
|
|
|
|
|
post: null, // 帖子主要信息
|
|
|
|
@ -244,16 +230,34 @@ export const usePostDetailStore = defineStore("postDetail", {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 删除评论或回复
|
|
|
|
|
async deleteComment(commentId, parentCommentId = null) {
|
|
|
|
|
async deleteComment(commentObj) {
|
|
|
|
|
try {
|
|
|
|
|
const commentId = commentObj.id;
|
|
|
|
|
const topId = commentObj.topId;
|
|
|
|
|
const res = await request.delete('/comment', { params: { id: commentId} });
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
// 一级评论
|
|
|
|
|
if (!parentCommentId) {
|
|
|
|
|
this.comments = this.comments.filter(c => c.id !== commentId);
|
|
|
|
|
if (commentObj.id === commentObj.topId) {
|
|
|
|
|
// 删除一级评论及其所有回复
|
|
|
|
|
const idx = this.comments.findIndex(c => c.id === commentId);
|
|
|
|
|
if (idx !== -1) {
|
|
|
|
|
const comment = this.comments[idx];
|
|
|
|
|
// 总评论数 -= replyCount
|
|
|
|
|
if (this.post && this.post.commentCount > 0) {
|
|
|
|
|
this.post.commentCount -= (comment.replyCount || 0);
|
|
|
|
|
if (this.post.commentCount < 0) this.post.commentCount = 0;
|
|
|
|
|
}
|
|
|
|
|
this.comments.splice(idx, 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 回复评论,递归删除
|
|
|
|
|
removeReply(this.comments,commentId);
|
|
|
|
|
const topComment = this.comments.find(c => c.id === topId);
|
|
|
|
|
if (topComment) {
|
|
|
|
|
const replyIdx = topComment.replies.findIndex(r => r.id === commentId);
|
|
|
|
|
if (replyIdx !== -1) {
|
|
|
|
|
topComment.replies.splice(replyIdx, 1);
|
|
|
|
|
if (topComment.replyCount > 0) topComment.replyCount--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 更新评论数
|
|
|
|
|
if (this.post && this.post.commentCount > 0) {
|
|
|
|
|