2025-06-30 09:38:03 +08:00

113 lines
2.4 KiB
JavaScript

import {
defineStore
} from 'pinia';
import store from '../index'
export const useChatStore = defineStore({
id: ' chat',
state: () => ({
socket: null,
badgeNum: 0,
msgInfo: {},
formUserId: ''
}),
getters: {
getSocket() {
return this.socket
},
getBadgeNum() {
return this.badgeNum
},
getMsgInfo() {
return this.msgInfo
}
},
actions: {
setSocket(socket) {
this.socket = socket
},
setBadgeNum(badgeNum) {
this.badgeNum = badgeNum
},
addBadgeNum(num) {
this.badgeNum += num
},
reduceBadgeNum(num) {
let badgeNum = this.badgeNum - num
if (badgeNum < 0) badgeNum = 0
this.badgeNum = badgeNum
},
setMsgInfo(msgInfo) {
this.msgInfo = msgInfo
},
setMsgInfoNum(num) {
if (num || num === 0) {
this.msgInfo.messageCount = num
this.msgInfo.count = num
this.badgeNum = num
return
}
this.msgInfo.messageCount -= 1
this.msgInfo.count = this.msgInfo.messageCount
let badgeNum = this.badgeNum - 1
if (badgeNum < 0) badgeNum = 0
this.badgeNum = badgeNum
},
setFormUserId(formUserId) {
this.formUserId = formUserId
},
sendMessage(data) {
const item = {
account: data.toAccount,
headIcon: data.toHeadIcon,
id: data.toUserId,
latestDate: data.latestDate,
latestMessage: data.toMessage,
messageType: data.messageType,
realName: data.toRealName,
unreadMessage: 0
}
const addItem = {
sendUserId: data.UserId,
contentType: data.messageType,
content: data.toMessage,
sendTime: data.dateTime,
method: data.method
}
uni.$emit('addMsg', addItem)
uni.$emit('updateList', item)
},
receiveMessage(data) {
if (this.formUserId === data.formUserId) {
data.unreadMessage = 0
const item = {
sendUserId: data.formUserId,
contentType: data.messageType,
content: data.formMessage,
sendTime: data.dateTime,
method: data.method
}
uni.$emit('addMsg', item)
} else {
data.unreadMessage = 1
this.addBadgeNum(1)
}
data.id = data.formUserId
data.latestMessage = data.formMessage
uni.$emit('updateList', data)
},
getMessageList(data) {
uni.$emit('getMessageList', data)
},
messagePush(data) {
this.msgInfo.messageText = data.title;
this.msgInfo.messageCount += data.unreadNoticeCount;
this.msgInfo.messageDate = data.messageDefaultTime
this.addBadgeNum(data.unreadNoticeCount || 1)
}
},
});
export function useChatStoreWithOut() {
return useChatStore(store);
}