47 lines
1.1 KiB
TypeScript
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)
|
|
}
|