Files
LingChair/server/data/ChatPrivate.ts
2025-09-20 00:31:36 +08:00

39 lines
1.3 KiB
TypeScript

import chalk from "chalk"
import Chat from "./Chat.ts"
import User from "./User.ts"
export default class ChatPrivate extends Chat {
static fromChat(chat: Chat) {
return new ChatPrivate(chat.bean)
}
static getChatIdByUsersId(userIdA: string, userIdB: string) {
return [userIdA, userIdB].sort().join('-')
}
static createForPrivate(userA: User, userB: User) {
return this.create(this.getChatIdByUsersId(userA.bean.id, userB.bean.id), 'private')
}
static findForPrivate(userA: User, userB: User) {
return this.fromChat(this.findById(this.getChatIdByUsersId(userA.bean.id, userB.bean.id)) as Chat)
}
static findOrCreateForPrivate(userA: User, userB: User) {
let a = this.findForPrivate(userA, userB)
if (a == null) {
this.createForPrivate(userA, userB)
a = this.findForPrivate(userA, userB) as ChatPrivate
}
return a
}
getTitleForPrivate(user: User, targetUser: User) {
const chat = Chat.findById(ChatPrivate.getChatIdByUsersId(user.bean.id, targetUser.bean.id))
if (chat?.bean.user_a_id == user.bean.id)
return targetUser.getNickName()
if (chat?.bean.user_b_id == user.bean.id)
return user.getNickName()
return "未知對話"
}
}