refactor: 抽离出广播方法
This commit is contained in:
@@ -34,4 +34,15 @@ export default abstract class BaseApi {
|
|||||||
emitToClient(client: SocketIo.Socket, name: ClientEvent, args: { [key: string]: unknown }) {
|
emitToClient(client: SocketIo.Socket, name: ClientEvent, args: { [key: string]: unknown }) {
|
||||||
client.emit("The_White_Silk", name, args)
|
client.emit("The_White_Silk", name, args)
|
||||||
}
|
}
|
||||||
|
boardcastToUsers(users: string[], name: ClientEvent, args: { [key: string]: unknown }) {
|
||||||
|
for (const user of users) {
|
||||||
|
if (ApiManager.checkUserIsOnline(user)) {
|
||||||
|
const sockets = ApiManager.getUserClientSockets(user)
|
||||||
|
for (const socket of Object.keys(sockets))
|
||||||
|
this.emitToClient(sockets[socket], name, args)
|
||||||
|
} else {
|
||||||
|
// TODO: EventStore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,23 +58,17 @@ export default class ChatApi extends BaseApi {
|
|||||||
const id = MessagesManager.getInstanceForChat(chat).addMessage(msg)
|
const id = MessagesManager.getInstanceForChat(chat).addMessage(msg)
|
||||||
|
|
||||||
const users: string[] = UserChatLinker.getChatMembers(chat.bean.id)
|
const users: string[] = UserChatLinker.getChatMembers(chat.bean.id)
|
||||||
for (const user of users) {
|
users.forEach((id) => {
|
||||||
if (ApiManager.checkUserIsOnline(user)) {
|
const userInst = User.findById(id)
|
||||||
const userInst = User.findById(user)
|
userInst?.updateRecentChat(chat.bean.id, args.text as string)
|
||||||
userInst?.updateRecentChat(chat.bean.id, args.text as string)
|
})
|
||||||
const sockets = ApiManager.getUserClientSockets(user)
|
this.boardcastToUsers(users, 'Client.onMessage', {
|
||||||
for (const socket of Object.keys(sockets))
|
chat: chat.bean.id,
|
||||||
this.emitToClient(sockets[socket], 'Client.onMessage', {
|
msg: {
|
||||||
chat: chat.bean.id,
|
...msg,
|
||||||
msg: {
|
id
|
||||||
...msg,
|
|
||||||
id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
// TODO: EventStore
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
code: 200,
|
code: 200,
|
||||||
@@ -241,10 +235,19 @@ export default class ChatApi extends BaseApi {
|
|||||||
])
|
])
|
||||||
} else {
|
} else {
|
||||||
if (action == 'accept') {
|
if (action == 'accept') {
|
||||||
|
const msg = `${user.getNickName()} 经 ${admin?.getNickName()} 批准加入了对话`
|
||||||
|
MessagesManager.getInstanceForChat(chat).addSystemMessage(msg)
|
||||||
|
const users: string[] = UserChatLinker.getChatMembers(chat.bean.id)
|
||||||
|
this.boardcastToUsers(users, 'Client.onMessage', {
|
||||||
|
chat: chat.bean.id,
|
||||||
|
msg: {
|
||||||
|
text: msg,
|
||||||
|
time: Date.now(),
|
||||||
|
},
|
||||||
|
})
|
||||||
chat.addMembers([
|
chat.addMembers([
|
||||||
args.user_id as string,
|
args.user_id as string,
|
||||||
])
|
])
|
||||||
MessagesManager.getInstanceForChat(chat).addSystemMessage(`${user.getNickName()} 经 ${admin?.getNickName()} 批准加入了对话`)
|
|
||||||
}
|
}
|
||||||
if (action == 'accept' || action == 'remove')
|
if (action == 'accept' || action == 'remove')
|
||||||
chat.removeJoinRequests([
|
chat.removeJoinRequests([
|
||||||
|
|||||||
Reference in New Issue
Block a user