admin-vue3/src/store/modules/chatStore.ts

47 lines
1.1 KiB
TypeScript

import { store } from '../index'
import { defineStore } from 'pinia'
export interface ImMessageWebSocket {
id: number // 编号
conversationType: number // 会话类型
senderId: number // 发送人编号
senderNickname: string // 发送人昵称
senderAvatar: string // 发送人头像
receiverId: number // 接收人编号
contentType: number // 内容类型
content: string // 内容
sendTime: string // 发送时间
sequence: number // 序号
}
export const chatStore = defineStore({
id: 'imMessage',
state: () => ({
messages: [] as ImMessageWebSocket[],
localMaxSeq: 0
}),
getters: {
getMessages(): ImMessageWebSocket[] {
return this.messages
},
getLocalMaxSeq(): number {
return this.localMaxSeq
}
},
actions: {
loadMessages(messages: ImMessageWebSocket[]) {
this.messages = messages
},
addMessage(message: ImMessageWebSocket) {
this.messages.push(message)
},
setLocalMaxSeq(seq: number) {
this.localMaxSeq = seq
}
}
})
export const useImMessageStore = () => {
return chatStore(store)
}