转给他人逻辑处理,包括关闭和删除联系人、联系会话

This commit is contained in:
超级老白兔
2025-10-27 15:38:01 +08:00
parent c65001399f
commit ae4b592bb6
2 changed files with 55 additions and 17 deletions

View File

@@ -7,9 +7,11 @@ import {
WechatFriendRebackAllot,
} from "@/pages/pc/ckbox/weChat/api";
import { useCurrentContact } from "@/store/module/weChat/weChat";
import { useCkChatStore } from "@/store/module/ckchat/ckchat";
import { ContactManager } from "@/utils/dbAction";
import { ContactManager } from "@/utils/dbAction/contact";
import { MessageManager } from "@/utils/dbAction/message";
import { triggerRefresh } from "@/store/module/weChat/message";
import { useUserStore } from "@/store/module/user";
import { useWeChatStore } from "@/store/module/weChat/weChat";
const { TextArea } = Input;
const { Option } = Select;
@@ -33,6 +35,9 @@ const ToContract: React.FC<ToContractProps> = ({
disabled = false,
}) => {
const currentContact = useCurrentContact();
const clearCurrentContact = useWeChatStore(
state => state.clearCurrentContact,
);
const [visible, setVisible] = useState(false);
const [selectedTarget, setSelectedTarget] = useState<number | null>(null);
const [comment, setComment] = useState<string>("");
@@ -40,7 +45,6 @@ const ToContract: React.FC<ToContractProps> = ({
const [customerServiceList, setCustomerServiceList] = useState<DepartItem[]>(
[],
);
const deleteChatSession = useCkChatStore(state => state.deleteChatSession);
// 打开弹窗
const openModal = () => {
setVisible(true);
@@ -67,8 +71,6 @@ const ToContract: React.FC<ToContractProps> = ({
try {
setLoading(true);
console.log(currentContact);
// 调用转接接口
if (currentContact) {
if ("chatroomId" in currentContact && currentContact.chatroomId) {
@@ -88,18 +90,37 @@ const ToContract: React.FC<ToContractProps> = ({
}
}
message.success("转接成功");
// 先关闭弹窗
closeModal();
// 删除本地数据库记录并关闭聊天窗口
try {
// 删除聊天会话
deleteChatSession(currentContact.id);
// 删除本地数据库记录
const currentUserId = useUserStore.getState().user?.id || 0;
const contactType = "chatroomId" in currentContact ? "group" : "friend";
// 1. 从会话列表数据库删除
await MessageManager.deleteSession(
currentUserId,
currentContact.id,
contactType,
);
console.log("✅ 已从会话列表删除");
// 2. 从联系人数据库删除
await ContactManager.deleteContact(currentContact.id);
console.log("✅ 已从联系人数据库删除");
// 3. 触发会话列表刷新
triggerRefresh();
// 4. 清空当前选中的联系人(关闭聊天窗口)
clearCurrentContact();
message.success("转接成功,已清理本地数据");
} catch (deleteError) {
console.error("删除本地数据失败:", deleteError);
message.error("删除本地数据失败");
}
closeModal();
} catch (error) {
console.error("转接失败:", error);
message.error("转接失败,请重试");
@@ -126,18 +147,37 @@ const ToContract: React.FC<ToContractProps> = ({
}
}
message.success("转回成功");
// 先关闭弹窗
closeModal();
// 删除本地数据库记录并关闭聊天窗口
try {
// 删除聊天会话
deleteChatSession(currentContact.id);
// 删除本地数据库记录
const currentUserId = useUserStore.getState().user?.id || 0;
const contactType = "chatroomId" in currentContact ? "group" : "friend";
// 1. 从会话列表数据库删除
await MessageManager.deleteSession(
currentUserId,
currentContact.id,
contactType,
);
console.log("✅ 已从会话列表删除");
// 2. 从联系人数据库删除
await ContactManager.deleteContact(currentContact.id);
console.log("✅ 已从联系人数据库删除");
// 3. 触发会话列表刷新
triggerRefresh();
// 4. 清空当前选中的联系人(关闭聊天窗口)
clearCurrentContact();
message.success("转回成功,已清理本地数据");
} catch (deleteError) {
console.error("删除本地数据失败:", deleteError);
message.error("删除本地数据失败");
}
closeModal();
} catch (error) {
console.error("转回失败:", error);
message.error("转回失败,请重试");

View File

@@ -49,8 +49,6 @@ const MessageEnter: React.FC<MessageEnterProps> = ({ contract }) => {
const isLoadingAiChat = useWeChatStore(state => state.isLoadingAiChat);
useEffect(() => {
if (quoteMessageContent) {
console.log("quoteMessageContent", quoteMessageContent);
setInputValue(quoteMessageContent);
}
}, [quoteMessageContent]);